tauri-apps / tauri-apps/plugins-workspace
fs watch() and watchImmediate() in iOS so slow
- Dominant language
- Rust
- Stars
- 1.8k
- Forks
- 602
- Avg merge
- 4d 14h
- Merged PRs (30d)
- 9
Description
it take 21s after create a file in appdata dir
## Result

## Code
```tsx
import { createSignal, onCleanup, onMount } from "solid-js";
import "./App.css";
import { BaseDirectory, exists, create, readTextFile, watch, UnwatchFn, readDir, remove, watchImmediate } from "@tauri-apps/plugin-fs";
function App() {
const [name, setName] = createSignal("");
const [debug, setDebug] = createSignal("[debug]");
const [log, setLog] = createSignal("[log]");
const [error, setError] = createSignal("[error]");
let startTime: number;
let unwatch: Promise;
onMount(async () => {
try {
unwatch = watch(
"./",
(event) => {
const elapsedTime = performance.now() - startTime;
setLog(`Elapsed time: ${elapsedTime.toFixed(2)} ms\n` + JSON.stringify(event));
},
{
baseDir: BaseDirectory.AppData,
delayMs: 500,
recursive: true,
}
);
} catch (error) {
setError(JSON.stringify(error));
}
});
onCleanup(async () => {
(await unwatch)();
});
return (
{error()}
{debug()}
{log()}
setName(e.currentTarget.value)} placeholder="Enter a file name..." />
{
startTime = performance.now();
const file = await create(name(), { baseDir: BaseDirectory.AppData });
await file.write(new TextEncoder().encode("Hello world" + new Date().toISOString()));
await file.close();
}}
>
Create
{
await remove(name(), { baseDir: BaseDirectory.AppData });
}}
>
Remove
{
setDebug(JSON.stringify(await exists(name(), { baseDir: BaseDirectory.AppData })));
}}
>
Exist
{
setDebug(await readTextFile(name(), { baseDir: BaseDirectory.AppData }));
}}
>
Read
{
const list = await readDir("", { baseDir: BaseDirectory.AppData });
setDebug(JSON.stringify(list));
}}
>
List
);
}
export default App;
```
Contributor guide
Assessment
This issue has not been assessed yet.