macOS
Build native macOS desktop applications with Bini.js.
macOS Overview
Bini.js allows you to build native macOS desktop applications using Tauri. Your React app is wrapped in a WKWebView binary, providing a native experience with full system access.
Native Binary
macOS app bundle (.app) with Developer ID signing
Code Signing
Developer ID and notarization support
Native APIs
Full access to macOS APIs via Tauri
Requirements
Before building macOS apps, make sure you have the following installed:
- Node.js 20.19.0 or higher
- Xcode Command Line Tools —
xcode-select --install - Full Xcode (for building and notarization) — Download
Native macOS
Build natively on macOS using the CLI. The development and build commands run directly on your Mac.
The build output is a native macOS application bundle (.app) ready for distribution.
Tip: Use --sign during scaffold to set up Developer ID signing.
Windows
Build macOS apps from Windows using GitHub Actions. This is the recommended approach for cross-platform builds.
Why GitHub Actions? Tauri recommends GitHub Actions for cross-platform builds because:
- No local toolchain setup required
- Consistent build environment
- Automatic artifact generation
- Works from any operating system
Linux
Build macOS apps from Linux using GitHub Actions. This is the recommended approach and is used by Tauri for cross-platform builds.
Why GitHub Actions? Tauri recommends GitHub Actions for cross-platform builds because:
- No local toolchain setup required
- Consistent build environment
- Automatic artifact generation
- Works from any operating system
macos-latest runners is the official Tauri-recommended approach for building macOS apps from Linux.Creating a macOS App
Create a new Bini.js project targeting macOS:
Or use the interactive prompt and select macos:
Prompt: Which platform would you like to target?
web / windows / macos / linux / android / ios
Select macos and press Enter
Development
Run your macOS app in development mode:
This launches your app in a native macOS window with:
- Hot reload for frontend changes
- Native window with menu bar integration
- Access to macOS APIs
- Devtools for debugging
Building
Build a distributable macOS application:
This creates a signed macOS app bundle in the src-tauri/target/release/bundle/macos/ directory.
Output Files
my-app.app— The main app bundlemy-app.dmg— Disk image for distributionmy-app.pkg— Installer package (if configured)
Code Signing
Bini.js supports Developer ID signing and notarization for macOS binaries. Configure signing in src-tauri/tauri.conf.json:
For GitHub Actions, you can use secrets for secure credential storage: