Skip to main content

Development Builds

Frontend Only (Vite)

Run the frontend in development mode with hot-reload:
This starts:
  • Vite dev server on http://localhost:1420
  • Hot module replacement (HMR)
  • Fast refresh for React components
Use case: Frontend-only development when you don’t need backend functionality.

Full Tauri App

Run the complete app (frontend + backend) in development mode:
This starts:
  • Vite dev server on port 1420
  • Rust backend with debug logging
  • Native app window
  • Hot-reload for frontend changes
  • Auto-restart on Rust changes
Use case: Full-stack development with backend integration.

Production Builds

Frontend Build

Build the frontend for production:
This runs:
  1. TypeScript compiler (tsc)
  2. Vite production build
  3. Outputs to dist/
Output:
  • dist/index.html - Main window
  • dist/pill.html - Recording pill window
  • dist/toast.html - Toast notifications
  • dist/assets/ - Bundled JS/CSS

Full Native Build

Build the complete native application:
This process:
  1. Builds frontend (TypeScript + Vite)
  2. Compiles Rust backend
  3. Builds platform-specific sidecars
  4. Creates native bundle
  5. Signs and notarizes (macOS)
Output (macOS):
  • src-tauri/target/release/bundle/macos/VoiceTypr.app
  • src-tauri/target/release/bundle/dmg/VoiceTypr_*.dmg
Output (Windows):
  • src-tauri/target/release/bundle/msi/VoiceTypr_*.msi
  • src-tauri/target/release/VoiceTypr.exe

Platform-Specific Builds

macOS Builds

Notes:
  • Requires Xcode Command Line Tools
  • Swift sidecar auto-builds via build.rs
  • Code signing requires Apple Developer ID
  • Notarization requires app-specific password

Windows Builds

Notes:
  • x64 builds include Vulkan GPU acceleration
  • ARM64 builds use CPU-only Whisper
  • Code signing requires Windows certificate

Sidecar Builds

Parakeet Swift Sidecar (macOS)

The Parakeet sidecar builds automatically during tauri build, but you can build it manually:
Or directly:
Output:
  • sidecar/parakeet-swift/dist/parakeet-sidecar-aarch64-apple-darwin
Build process:
  1. build.rs triggers on cargo build
  2. Runs sidecar/parakeet-swift/build.sh
  3. Compiles Swift with swift build -c release --arch arm64
  4. Copies binary to dist/ with platform suffix
  5. Tauri bundles it into the app

FFmpeg Sidecar

Ensure FFmpeg binaries are available:
This downloads platform-specific FFmpeg/FFprobe binaries to sidecar/ffmpeg/dist/. Required for:
  • Audio format conversion
  • Cross-platform audio processing

Build Configurations

Development Config

src-tauri/tauri.dev.conf.json:

Production Config

src-tauri/tauri.conf.json:

CI/CD Builds

Automated build scripts for continuous integration:
CI scripts (scripts/):
  • ci-local-macos.sh - macOS quality checks + build
  • ci-local-windows.ps1 - Windows quality checks + build

Build Optimization

Release Optimizations

Rust release builds use aggressive optimizations:

Bundle Size

macOS app size: ~120MB
  • Rust binary: ~25MB
  • Frontend assets: ~5MB
  • Parakeet sidecar: ~1.2MB
  • FFmpeg sidecar: ~90MB
Windows installer size: ~100MB
  • Executable: ~30MB
  • Frontend assets: ~5MB
  • FFmpeg sidecar: ~65MB

Reducing Build Time

  1. Use cargo build cache:
  2. Frontend-only mode for UI work:
  3. Parallel builds with -j flag:

Troubleshooting

Build Fails with FFmpeg Error

Ensure FFmpeg sidecars exist:

Swift Sidecar Build Fails (macOS)

Verify Swift installation:
Install Visual Studio with C++ tools:
  • Visual Studio 2019 or later
  • “Desktop development with C++” workload

Tauri Build Hangs

Clear build cache:

Next Steps