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)
Performance Issues
Development
To build the desktop app locally:Related Resources
Installation
Download and install the desktop app
Mobile Apps
Learn about iOS and Android apps
Contributing
Build and contribute to the desktop app
Electron Documentation
Learn more about Electron