the Ethereum wallet that lives in your pocket!
π²οΈ Available on the iOS App Store.
π€ Android available on the Google Play Store
π» Browser extension available on, Chrome, Brave, Edge, FireFox, and Arc.
π Follow us on X
[!TIP] > Internal developers can also use the
rainbow-me/rainbow-setupscript to install all dependencies and configure the project in one step.
- Install nvm: https://github.com/creationix/nvm
- Install the required Node.js version:
nvm install - Install Ruby (version specified in
.ruby-version). macOS system Ruby is too old and will not work. Use a version manager such as rbenv or rvm. - Enable yarn:
corepack enable
Note: On future terminal sessions, run nvm use to activate the correct Node.js version. Alternatively, set up automatic nvm switching in your shell.
Set up these before running yarn install, as the postinstall script reads .env and rainbow-scripts to generate build configs and run prebuild hooks.
- Copy
dotenvfromrainbow-me/rainbow-envto.envin the project root. - Copy
android/app/google-services.jsonfrom the same repo toandroid/app/in this project. - Clone
rainbow-me/rainbow-scriptsinto the project root (the postinstall prebuild hooks depend on it). - Install dependencies and run setup:
yarn install && yarn setup
- Copy
.env.exampleto.envand fill in your own API keys. Note that some features are currently not accessible; we are working with our Data Providers to provide open source API Keys.- Etherscan: https://etherscan.io/apis
- Infura: https://infura.io/
- ETH Gas Station: https://docs.ethgasstation.info/
- Imgix: https://www.imgix.com/
- Provide your own
google-services.jsoninandroid/app/from a personal Firebase project registered under the package nameme.rainbow. - Install dependencies and run setup:
yarn install && yarn setup
The iOS GoogleService-Info.plist is already in the repo and gets its API key patched by the postinstall script from GOOGLE_SERVICE_API_KEY in your .env.
- Install Xcode from the Mac App Store.
- Install Watchman:
brew install watchman - Install the required bundles and Pods:
yarn install-bundle && yarn install-pods
-
Install JDK 17. Do not use the JDK bundled with Android Studio (it's JDK 21, which causes build failures). On macOS:
brew install --cask zulu@17
-
Add to your shell profile (
~/.zshrcor~/.bashrc):export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home export ANDROID_HOME=$HOME/Library/Android/sdk # macOS # export ANDROID_HOME=$HOME/Android/Sdk # Linux export PATH=$PATH:$ANDROID_HOME/emulator export PATH=$PATH:$ANDROID_HOME/platform-tools
On Linux, also install system dependencies:
sudo apt install libsecret-tools watchman -
Install Android Studio (the standard setup wizard is fine).
-
Increase the IDE memory: Android Studio > Settings > Memory Settings and set the heap to at least 4096 MB. This project is large enough that the default 2048 MB will cause slow syncs and builds.
-
Set the Gradle JDK: Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK and select the
JAVA_HOME(Azul Zulu 17) entry. The default points to the bundled JDK 21. -
Restart any open terminals so the new environment variables take effect.
-
Create an emulator via Android Studio > Device Manager (unless using a physical device).
-
Run the first build from the terminal to generate native headers that Android Studio needs for Gradle sync:
cd android && ./gradlew assembleDebug && cd .. -
Quit Android Studio completely, then reopen it from the terminal so Gradle sync picks up the generated headers:
open -a "Android Studio" # macOSAlways launch Android Studio this way so it inherits your shell PATH (including
nodefrom nvm). Launching from Spotlight or the Dock will cause Gradle sync to fail with "Cannot run program node".
Start Metro in one terminal:
yarn start Then build and run:
- iOS: Open
ios/Rainbow.xcworkspacein Xcode (not the.xcodeproj) and press Cmd+R, or runyarn iosfrom the terminal. - Android: Open the
android/folder in Android Studio, or runyarn androidfrom the terminal.