SolidJS + Tauri Desktop Development
SolidJS is a truly reactive UI framework — no virtual DOM, no diffing. Tauri v2 wraps your web frontend in a Rust shell for native desktop packaging. Together they create fast, lightweight desktop apps.OnlyWrite
A local-first writing app built with SolidJS + Tauri 2 + TypeScript.
Why SolidJS + Tauri?
Project Structure
Tech Stack
SolidJS Reactivity Patterns
SolidJS uses signals and derived computations — no hooks, no re-renders:File-Based Workspace
For a local-first writing app, files live on disk, not in a database:Using Tauri’s
fs API gives direct file system access from JavaScript — no server needed. The Rust side handles permission gating through the capabilities/ config.Bilingual UI (i18n)
Simple signal-based i18n without heavy libraries:S3 Image Upload
Optional S3 integration for image uploads — configured via dialog, not hardcoded:Tauri Configuration
Capabilities (Permission Gating)
Tauri v2 uses a capability-based permission system. Each capability file explicitly lists which APIs the frontend can call. This prevents unauthorized file access or system calls.
Autosave Pattern
Combine SolidJS reactivity with debounced saves:Best Practices
- Signals over state — SolidJS signals are fine-grained; avoid “lifting” state like React
- Local-first — Read/write files directly via Tauri
fsAPI, no backend server needed - Capability gating — Restrict Tauri API access through
capabilities/config files - Simple i18n — Signal-based dictionary lookup is enough for bilingual apps
- Autosave with debounce — Write to disk after a short idle period, not on every keystroke
- DOMPurify for HTML — Always sanitize rendered markdown HTML
