Building Gnomad Webcanvas for macOS, Linux, and Windows

Also available: Markdown · Plain text

Building Gnomad Webcanvas for macOS, Linux, and Windows

Prerequisites (all platforms)

cd 05_apps_and_extensions/gnomad-preview
npm install
npm run build

Tauri v2 prerequisites — install WebView2 (Windows), Xcode CLT (macOS), webkit2gtk (Linux).


Development

# Web only (browser at http://localhost:5173)
npm run dev

# Desktop (Vite + Tauri shell)
npm run tauri:dev

# Unit tests (Vitest — 19 tests)
npm run test
npm run test:watch   # watch mode

Production build

npm run tauri:build

Output under src-tauri/target/release/bundle/:

Platform Artifacts
macOS .app, .dmg
Windows .msi, .exe (NSIS)
Linux .deb, .rpm, AppImage

Build on the target OS for best results. CI (.github/workflows/release.yml) builds all three on tagged releases.


macOS

npm run tauri:build

Output: src-tauri/target/release/bundle/macos/Gnomad Webcanvas.app


Linux

Install dependencies first (Ubuntu/Debian):

sudo apt-get update
sudo apt-get install -y \
  libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf

Then:

npm run tauri:build

Output under src-tauri/target/release/bundle/:


Windows

Build on Windows with WebView2 runtime installed:

npm run tauri:build

Output: .msi and/or NSIS .exe under src-tauri/target/release/bundle/


CI release builds

Tagged pushes (v*) trigger .github/workflows/release.yml:

Runner Target
macos-latest aarch64-apple-darwin
ubuntu-latest x86_64-unknown-linux-gnu
windows-latest x86_64-pc-windows-msvc

Releases are created as drafts — publish manually after QA.

See RELEASE_RUNBOOK.md.


Verification after build

npm run lint
npm run test
npx tsc -b --noEmit
npm run build

Before tagging: walk QA_CHECKLIST.md on at least one platform.


Cross-platform parity

The same React bundle ships in web and desktop builds. Platform differences:

Feature Web Desktop
Open/Save file Native dialogs
Project persistence localStorage File + localStorage
Export ZIP
Share URL
Window title dirty state

Use CROSS_PLATFORM_CHECKLIST.md when adding OS-facing features.


Built with ❤️ by Gnomad Studio 🦙