Platform Support
Windows
Windows 10 and later (64-bit)
macOS
macOS 10.15 Catalina and later
Linux
AppImage, .deb, and AUR packages
Key Features
Offline-First
The desktop app is fully functional offline:- All workspaces stored locally in IndexedDB
- Automatic sync when connection restored
- No internet required for core features
- Local-first architecture with Y.js CRDT
Native Integration
The desktop app integrates deeply with your operating system:Windows Integration
Windows Integration
- System tray support
- Native notifications
- File associations for
.affinefiles - Protocol handler for
affine://links - Windows 11 snap layouts
macOS Integration
macOS Integration
- Menu bar integration
- Touch Bar support
- Native notifications
- Dock badge for unread items
- Spotlight integration
- Apple Silicon optimization
Linux Integration
Linux Integration
- System tray icon
- Desktop notifications
- XDG desktop entry
- Wayland and X11 support
- Protocol handler registration
Auto-Updates
The desktop app updates automatically in the background:- Updates downloaded silently
- Notifies when update ready
- Installs on next restart
- Can opt-out in settings
- Support for beta and canary channels
Installation
See our installation guide for detailed instructions for each platform.Architecture
The AFFiNE desktop app consists of:Main Process
The main process manages:- Window Management: Create, manage, and close windows (
src/main/windows-manager/) - Native Modules: Rust-based native bindings for performance (
packages/frontend/native/) - Protocol Handlers: Handle
affine://deep links - Auto-Updates: Check and apply updates via
electron-updater - IPC Bridge: Communication with renderer process
main/index.ts
Renderer Process
The renderer runs the AFFiNE web app with additional capabilities:- Electron API: Access to native features via preload script
- Local Storage: Enhanced storage with native filesystem access
- Performance: Native modules for Y.js encoding/decoding
Preload Scripts
Security bridge between main and renderer:preload/electron-api.ts
Native Modules
AFFiNE uses Rust-based native modules built with napi-rs for performance-critical operations:Y.js Encoding/Decoding
Fast binary encoding for CRDT updates:Workspace Scanning
Fast filesystem operations:Storage
Data Location
User data is stored in platform-specific locations:- Windows
- macOS
- Linux
Storage Structure
Configuration
App Settings
Settings are stored in:- Windows:
%APPDATA%\AFFiNE\config.json - macOS:
~/Library/Application Support/AFFiNE/config.json - Linux:
~/.config/AFFiNE/config.json
Command-Line Flags
Customize behavior with flags:Performance
Native Optimization
The desktop app includes several performance optimizations:- V8 Snapshot: Faster startup with precompiled code
- Lazy Loading: Load features on-demand
- Native Encoding: Rust-based Y.js operations
- IndexedDB: Fast local storage
- Web Workers: Offload heavy computation
Memory Management
Electron apps can be memory-intensive. AFFiNE implements:- Automatic garbage collection tuning
- Image lazy loading
- Virtual scrolling for large lists
- Workspace unloading for inactive tabs
Troubleshooting
App Won’t Start
Clear cache and restart
Clear cache and restart
Delete the app data directory and restart:
- Windows:
%APPDATA%\AFFiNE - macOS:
~/Library/Application Support/AFFiNE - Linux:
~/.config/AFFiNE
Check logs
Check logs
Logs are stored in:
- Windows:
%APPDATA%\AFFiNE\logs - macOS:
~/Library/Logs/AFFiNE - Linux:
~/.config/AFFiNE/logs
Sync Issues
If sync isn’t working:- Check internet connection
- Verify workspace is cloud-enabled
- Check sync status in settings
- Try manual sync (Cmd/Ctrl + Shift + S)