Tauri Plugin FS

Cross-platform file system access for Tauri apps through a typed JavaScript API backed by Rust.

Library
npm
v2.6.0
1,827 stars
MIT OR Apache-2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
92 /100 Excellent
Development Activity 100
Maintenance 100
Community 72
Maturity 56
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
87 /100 Excellent
Architecture 90
Code Quality 78
Innovation 90
Learning Curve 72

@tauri-apps/plugin-fs is the official Tauri plugin that gives your web-based frontend safe, cross-platform access to the native file system. It pairs a Rust core with typed JavaScript guest bindings so you can read, write, watch, and manage files and directories from your app’s UI code without shelling out or bundling a native module yourself.

Every operation runs through Tauri’s capability and scope system, so file access is explicitly permissioned rather than wide open. The same API works across Windows, macOS, Linux, Android, and iOS, giving you a single, familiar surface for file handling in desktop and mobile Tauri applications.

What You Get

  • A typed JavaScript/TypeScript API covering reads, writes, directory operations, metadata, and file watching
  • A Rust core (tauri-plugin-fs) that enforces Tauri’s capability and scope-based permission model on every operation
  • Cross-platform support spanning Windows, macOS, Linux, Android, and iOS from one API
  • A FileHandle abstraction plus helpers like readTextFileLines for streaming and line-by-line access
  • Base-directory resolution and URL/path handling so paths stay portable across platforms

Common Use Cases

  • Reading and writing user documents or app data from a Tauri desktop or mobile UI
  • Persisting configuration, cache, or export files to platform-appropriate directories
  • Watching files or folders and reacting to changes in real time within the app
  • Building file-manager-style features (copy, move, delete, list) on top of native storage

Under The Hood

Architecture The plugin is split across two layers: TypeScript guest bindings in guest-js/index.ts (~1,500 lines) that your frontend imports, and a Rust core in src/ whose commands.rs (~1,900 lines) implements the actual file operations. Frontend calls are marshalled over Tauri’s IPC bridge to the Rust side, where lib.rs registers commands and file_path.rs plus scope.rs resolve and validate paths against the app’s configured capabilities before any disk access occurs. Platform-specific code lives in android.rs, ios.rs, and desktop.rs, with an optional notify-based watcher (watcher.rs) for change events.

Tech Stack The Rust core depends on tauri, serde/serde_json/serde_repr for IPC serialization, thiserror and anyhow for errors, glob for pattern matching, and the notify plus notify-debouncer-full crates (behind a watch feature) for filesystem watching; iOS builds pull in objc2-foundation. The JavaScript package is authored in TypeScript, bundled with Rollup into ESM, CJS, and type-declaration outputs, and depends only on @tauri-apps/api at runtime.

Code Quality The code is cleanly separated by concern and fully typed on both the Rust and TypeScript sides, with an explicit permissions/ directory codifying the security scopes. Error handling is centralized in error.rs. Test coverage on the JavaScript binding layer is thin (no dedicated JS unit test suite ships in the package; the visible tests live under the Android source tree), so correctness leans on the maturity of the Rust core and Tauri’s overall test infrastructure.

API Design The public JavaScript surface deliberately mirrors Node’s fs module, exposing readFile, writeFile, readTextFile, writeTextFile, mkdir, readDir, stat, lstat, rename, copyFile, remove, truncate, exists, size, and a watch/watchImmediate pair, alongside an open()/create() FileHandle abstraction and a readTextFileLines streaming helper. The familiar naming, consistent async signatures, and clear README setup instructions keep the boilerplate minimal once the plugin is registered in the Rust builder and the relevant capabilities are granted.

Used by 416 apps in this directory

Python
72%
Apache 2.0

Unsloth

AI Assistants · AI Development

77,660

Run and fine-tune LLMs, diffusion, audio and embedding models on your own hardware, from a native desktop app, a browser UI, or a Python library.

View details
89
Repo Health
83
Technical
70
Dependency
Built with
Python 72%
TypeScript 22%
Updated today
Rust
50%
Apache 2.0

Vibe Kanban

AI Agents · AI Code Assistants · Project Management

28,312

A kanban board for planning work and dispatching Claude Code, Codex, Gemini CLI, and eight other coding agents into isolated git worktrees, then reviewing and merging their diffs from one UI.

View details
74
Repo Health
75
Technical
64
Dependency
Built with
Rust 50%
TypeScript 46%
Updated 3 weeks ago
Rust
50%
Apache 2.0

Vibe Kanban

AI Agents · AI Code Assistants · Project Management

28,312

A kanban board for planning work and dispatching Claude Code, Codex, Gemini CLI, and eight other coding agents into isolated git worktrees, then reviewing and merging their diffs from one UI.

View details
74
Repo Health
75
Technical
64
Dependency
Built with
Rust 50%
TypeScript 46%
Updated 3 weeks ago
Rust
50%
Apache 2.0

Vibe Kanban

AI Agents · AI Code Assistants · Project Management

28,312

A kanban board for planning work and dispatching Claude Code, Codex, Gemini CLI, and eight other coding agents into isolated git worktrees, then reviewing and merging their diffs from one UI.

View details
74
Repo Health
75
Technical
64
Dependency
Built with
Rust 50%
TypeScript 46%
Updated 3 weeks ago
Rust
50%
Apache 2.0

Vibe Kanban

AI Agents · AI Code Assistants · Project Management

28,312

A kanban board for planning work and dispatching Claude Code, Codex, Gemini CLI, and eight other coding agents into isolated git worktrees, then reviewing and merging their diffs from one UI.

View details
74
Repo Health
75
Technical
64
Dependency
Built with
Rust 50%
TypeScript 46%
Updated 3 weeks ago
Python
95%
AGPL 3.0

VideoHighlighter

Video Editors

165

Local AI desktop tool that scores, explains, and cuts the moments that matter in raw footage — scene, motion, audio, object, and action detection, fully offline via Ollama and Whisper.

View details
83
Repo Health
84
Technical
71
Dependency
Built with
Python 95%
Updated yesterday
Python
95%
AGPL 3.0

VideoHighlighter

Video Editors

165

Local AI desktop tool that scores, explains, and cuts the moments that matter in raw footage — scene, motion, audio, object, and action detection, fully offline via Ollama and Whisper.

View details
83
Repo Health
84
Technical
71
Dependency
Built with
Python 95%
Updated yesterday
Python
95%
AGPL 3.0

VideoHighlighter

Video Editors

165

Local AI desktop tool that scores, explains, and cuts the moments that matter in raw footage — scene, motion, audio, object, and action detection, fully offline via Ollama and Whisper.

View details
83
Repo Health
84
Technical
71
Dependency
Built with
Python 95%
Updated yesterday
Python
95%
AGPL 3.0

VideoHighlighter

Video Editors

165

Local AI desktop tool that scores, explains, and cuts the moments that matter in raw footage — scene, motion, audio, object, and action detection, fully offline via Ollama and Whisper.

View details
83
Repo Health
84
Technical
71
Dependency
Built with
Python 95%
Updated yesterday

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers