It is recommended to follow the steps for a fresh environment setup from the react native docs depending on the version that you are aiming to develop for.
You'll need homebrew, a runtime manager (mise — preferred — or asdf), Yarn and Watchman installed (brew install watchman).
We pin the versions of java, nodejs and ruby in .tool-versions. Both mise and asdf read that file, so either tool will install the correct versions.
Full instructions: https://mise.jdx.dev/getting-started.html
brew install mise
# ...or, without homebrew: curl https://mise.run | sh
# activate mise in your shell (zsh shown here — see the mise docs for other shells)
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc && source ~/.zshrc
# from the eigen directory, install the pinned tool versions
mise install
mise uses PATH-based activation (not shims) by default, so there's no reshim step. It has built-in support for node, ruby and java — no plugins to add. mise install reads .tool-versions and installs everything.
There are instructions here: https://asdf-vm.com/guide/getting-started.html You will want the java, nodejs, and ruby plugins to get all of our tooling.
brew install asdf
# configure your shell setup scripts for your shell, see asdfs instructions on the site
asdf plugin add ruby
asdf plugin add nodejs
asdf plugin add java
Download Xcode version 26.2 (the version CI builds against — see ios-config.json). You can find all available versions of Xcode at Apple's Developer Portal 🔐.
Ask your mentor to add you on the firebase.console to be able to release.
NOTE: After installing Xcode
Check that Command Line Tools version is added in the Locations tab. Xcode>Settings>Locations:
Important
We manage java with our runtime manager (mise or asdf), so you can skip the section in the docs below around the Java Development Kit. Instead, from the eigen directory:
mise (preferred): run mise install. mise activation sets JAVA_HOME automatically — no extra step needed. Confirm with echo $JAVA_HOME.
asdf: run asdf install, then set JAVA_HOME in your shell config (e.g. .zshrc) to the asdf java install path. Find it with asdf where java, then add:
export JAVA_HOME="<YOUR-ASDF-JAVA-PATH-HERE>"
-
Android development environment: Follow the official docs. Select "React Native CLI Quickstart" tab
-
Create a virtual device on which to run the Android app.
git clone https://github.com/artsy/eigen.git
cd eigen
Work at Artsy?
- Run
mise install # or `asdf install`
yarn setup:artsy
yarn install:all
yarn relay
You will need awscli to get our ENV vars.
Independent Contributor?
You will need awscli to get our font files. You can configure it with a personal user account.
yarn setup:oss # this is `yarn setup:artsy` if you're working at ArtsyYou can create an account on mapbox and get a token with their free tier:
Follow the instructions here: https://docs.mapbox.com/ios/maps/guides/install.
Add the token to .env.shared as MAPBOX_DOWNLOAD_TOKEN
yarn install:all
yarn relaySome third party services will not function when working as an open source contributor including but not limited to Braze, Unleash, Sentry and Google Sign In. The conversations tab and related features are also inaccessible. Thanks for supporting open source!
Note: yarn pod-install (which is included in yarn install:all) may fail the first time you run it (due to a bug in a dependency of ours). Re-running the command should work.
If there are issues setting up the app, see the troubleshooting doc.
We welcome independent contributions! Feel free to open an issue and open a PR and assign one of Brian Beckerle, George Kartalis, Mounir Dhahri as a reviewer or anyone else listed here.
If you work at Artsy you can find a ticket on CX backlog 🔐 and look for a #good-first-issue
Start the react-native bundler:
yarn startFirst, ask for your apple developer account to be added on the project and login with your apple id under settings/accounts/apple Id.
yarn iosThis will use a cached build if one is available. To force a full rebuild, use yarn ios:no-cache.
Open the app in Xcode:
open ios/Artsy.xcworkspaceFrom Xcode, run the app by hitting Product > Run (or ⌘R). This will start the Artsy app in an iOS simulator, pointed at Artsy's staging environment.
yarn androidThis will start the Artsy app in an Android emulator, pointed at Artsy's staging environment. To use build caching, use yarn android:cached.
In order to have internet access on android emulator you need to add Google's DNS servers to your device's network settings. You can do that by following these steps:
- Click Apple menu > System Preferences > Search for DNS.
- Click DNS Domains.
- Select the DNS tab.
- Add 8.8.8.8 and 8.8.4.4
- Click OK > Apply.
- Restart the emulator with cold boot now. (Android Studio > Device Manager > Three Dots (settings) > Cold Boot Now)
⚠️ You might need to run the last step above after you get setup with Artsy's VPN or if you edit your DNS settings!
We can only run tests in one specific environment, today that is the iPhone 17 Pro with the iOS 26.2 Simulator (see ios-config.json for the source of truth). This is because we use visual snapshots for UI regressions.
Tap cmd + u to run all tests, use ctrl + alt + cmd + g to run the last set you clicked on via the GUI.
You can run tests via the CLI using:
./scripts/ci/test-iosWe use Xcode's auto-codesigning. It should magically "just work" if you log in to Xcode with an iTunes account which is on the Artsy team.
We have cert troubleshooting here
When you connect an iPhone to your machine, Xcode will prompt you to join a team, then to enable the device for development. If you have to choose a team, choose Art.sY Inc..
- On your Android device go to Settings > About Phone
- Find the 'Build number' menu item and tap it 7 times to enable developer mode.
- Now go to Settings > System > Developer Options, and turn on 'USB Debugging'
- Connect your device to your computer via USB cable. After a moment the device should show a prompt for you to allow USB debugging for your computer. Press yes.
- After that run
yarn androidfrom within the eigen directory. This will build the app, install it on your device, and run it.
Learn about what things are architecturally here, then move to the blog. for more in-depth discussions on Eigen.