Overview
Polaris IDE supports Electron for native desktop experiences on Windows, macOS, and Linux.The Electron app bundles a local Next.js server for offline-capable editing with cloud sync.
Architecture
The Electron app consists of:Main Process
Node.js backend handling:
- Window management
- File system operations
- IPC communication
- Auto-updates
Renderer Process
Chromium frontend running:
- Next.js application
- React components
- CodeMirror editor
Development Setup
Prerequisites
Complete web setup
Follow the Setup Guide first - the Electron app requires a working Next.js application.
Running in Development
- Starts Next.js dev server on port 3000
- Compiles TypeScript in
electron/directory - Launches Electron pointing to localhost:3000
Project Structure
Building for Production
Build Configuration
The build process is configured inelectron-builder.yml:
electron-builder.yml
Build Commands
- All Platforms
- Windows Only
- macOS Only
- Linux Only
- Windows (NSIS installer)
- macOS (DMG)
- Linux (AppImage, deb, rpm)
Build Process Details
Build Next.js for standalone
.next/standalone/- Minimal Node.js server.next/static/- Static assets
Platform-Specific Configuration
Windows
electron-builder.yml
Code Signing
Code Signing
For production releases, sign your Windows executable:
- Obtain a code signing certificate
- Set environment variables:
- Build with signing:
Installer Options
Installer Options
Customize NSIS installer:
macOS
electron-builder.yml
Code Signing & Notarization
Code Signing & Notarization
Required for distribution outside App Store:
- Join Apple Developer Program ($99/year)
- Create certificates in Xcode
- Set environment variables:
- Build with signing:
Entitlements
Entitlements
Create
electron/resources/entitlements.mac.plist:Linux
electron-builder.yml
AppImage
AppImage
Universal Linux binary:
- No installation required
- Runs on most distributions
- Includes all dependencies
Debian Package
Debian Package
For Debian/Ubuntu:
RPM Package
RPM Package
For Fedora/RHEL/CentOS:
Auto-Updates
Configure Update Server
electron-builder.yml
Implement Update Logic
electron/main/auto-updater.ts
Handle Updates in Frontend
src/app/layout.tsx
Distribution
GitHub Releases
Other Distribution Channels
Microsoft Store
Submit to Windows Store for wider reach
Mac App Store
Distribute via Apple’s App Store
Snap Store
Linux distribution via Snapcraft
Homebrew
macOS package manager for developers
Offline Support
The Electron app can work offline:Local Storage
Offline Detection
Troubleshooting
Build fails on Windows
Build fails on Windows
Issue: electron-builder failsSolutions:
- Install Windows Build Tools:
- Use Node.js 20.x (LTS)
- Run as Administrator if permission errors
macOS code signing errors
macOS code signing errors
Issue: Notarization failsSolutions:
- Ensure valid Apple Developer account
- Check certificate validity in Keychain
- Verify app-specific password is correct
- Check entitlements file exists
Linux AppImage won't run
Linux AppImage won't run
Issue: Permission deniedSolution:
Auto-update not working
Auto-update not working
Issue: Updates not detectedSolutions:
- Check
latest.ymlexists in release - Verify GitHub repository settings in
electron-builder.yml - Ensure app is signed (required for auto-update)
- Check console for update errors
Next Steps
Web Deployment
Deploy web version to Vercel
Architecture
Understand the system design
Contributing
Contribute to Polaris
Error Tracking
Monitor desktop app errors