Building Zed for macOS
July 30, 2026 ยท View on GitHub
Repository
Clone the Zed repository.
Dependencies
-
Install rustup
-
Install Xcode from the macOS App Store or from the Apple Developer website. The Apple Developer download requires a developer account.
Launch Xcode after installation and install the macOS components (the default option).
-
Install Xcode command line tools
xcode-select --install -
Ensure that the Xcode command line tools are using your newly installed copy of Xcode:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer sudo xcodebuild -license accept -
Install
cmake(required by a dependency)brew install cmake
Building Zed from Source
Once you have the dependencies installed, you can build Zed using Cargo.
For a debug build:
cargo run
For a release build:
cargo run --release
And to run the tests:
cargo test --workspace
Visual Regression Tests
Zed includes visual regression tests that render real GPUI windows through Metal and compare their textures with baseline images. Direct texture capture does not require Screen Recording permission, does not capture system window chrome, and does not send input to the foreground application.
Prerequisites
Install the Xcode and Metal components described above. Visual comparisons depend on the GPU, font rasterizer, loaded fonts, scale, and theme. Generate authoritative Omega baselines on the project's pinned Apple Silicon Metal environment.
Running Visual Tests
Run Omega's registered workbench scenes with:
script/omega-workbench-proof
Run one scene without capturing a PNG:
script/omega-workbench-proof \
--scene omega_front_door_no_project \
--semantic-only
See Deterministic Omega workbench proofs for scene registration, seeds, receipts, artifacts, sharding, and cold-restart behavior.
The lower-level runner remains available while developing visual tests:
cargo run -p zed --bin zed_visual_test_runner --features visual-tests
Baseline Images
Omega's authoritative baseline images are committed in
crates/omega/test_fixtures/visual_tests/. Not every inherited visual-runner
scene has a committed baseline, so running the lower-level runner without a
scene filter can report missing inherited baselines.
Updating Baselines
When an intentional UI change affects a registered Omega scene, update only that scene:
script/omega-workbench-proof \
--scene omega_front_door_no_project \
--pixel-only \
--update
Inspect the current image and changed baseline, then rerun without --update.
If that comparison fails, inspect the generated diff image. Baseline updates
are disabled in CI.
Troubleshooting
Error compiling metal shaders
error: failed to run custom build command for gpui v0.1.0 (/Users/path/to/zed)`**
xcrun: error: unable to find utility "metal", not a developer tool or in PATH
Try sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
If you're on macOS 26, try xcodebuild -downloadComponent MetalToolchain.
If that command fails, run xcodebuild -runFirstLaunch and try downloading the toolchain again.
Cargo errors claiming that a dependency is using unstable features
Try cargo clean and cargo build.
Error: 'dispatch/dispatch.h' file not found
If you encounter an error similar to:
src/platform/mac/dispatch.h:1:10: fatal error: 'dispatch/dispatch.h' file not found
Caused by:
process didn't exit successfully
--- stdout
cargo:rustc-link-lib=framework=System
cargo:rerun-if-changed=src/platform/mac/dispatch.h
cargo:rerun-if-env-changed=TARGET
cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS_aarch64-apple-darwin
cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS_aarch64_apple_darwin
cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS
This file is part of Xcode. Make sure the Xcode command line tools are installed and the path is set correctly:
xcode-select --install
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
Additionally, set the BINDGEN_EXTRA_CLANG_ARGS environment variable:
export BINDGEN_EXTRA_CLANG_ARGS="--sysroot=$(xcrun --show-sdk-path)"
Then clean and rebuild the project:
cargo clean
cargo run
Tests failing due to Too many open files (os error 24)
This error seems to be caused by OS resource constraints. Installing and running tests with cargo-nextest should resolve the issue.
cargo install cargo-nextest --lockedcargo nextest run --workspace --no-fail-fast
Tips & Tricks
Avoiding continual rebuilds
If Zed continually rebuilds root crates, you may be opening the Zed codebase itself in your development build.
This causes problems because cargo run exports a bunch of environment
variables which are picked up by the rust-analyzer that runs in the development
build of Zed. These environment variables are in turn passed to cargo check, which
invalidates the build cache of some of the crates we depend on.
To avoid this, run the built binary against a different project, for example cargo run ~/path/to/other/project.
Speeding up verification
If you build Zed frequently, macOS may keep verifying new builds, which can add a few seconds to each iteration.
To fix this, you can:
- Run
sudo spctl developer-mode enable-terminalto enable the Developer Tools panel in System Settings. - In System Settings, search for "Developer Tools" and add your terminal (e.g. iTerm or Ghostty) to the list under "Allow applications to use developer tools"
- Restart your terminal.
Thanks to the nextest developers for publishing this.