Quick Start
Rainbow is a React Native crypto wallet app for iOS and Android. It uses React Navigation, custom Zustand-based store creators for state management, and ethers/viem for blockchain interactions.Prerequisites
Before you begin, ensure you have:Install nvm
Install Node Version Manager from nvm repository
Install Node.js
Install the required Node.js version:On future terminal sessions, run
nvm use to activate the correct Node.js version.Setup for External Contributors
If you’re an external contributor, follow these steps:Configure environment
Copy
.env.example to .env and fill in your own API keys:- Etherscan: https://etherscan.io/apis
- Infura: https://infura.io/
- ETH Gas Station: https://docs.ethgasstation.info/
- Imgix: https://www.imgix.com/
Add Firebase configuration
Provide your own
google-services.json in android/app/ from a personal Firebase project registered under the package name me.rainbow.The iOS GoogleService-Info.plist is already in the repo and gets its API key patched from GOOGLE_SERVICE_API_KEY in your .env.Platform-Specific Setup
iOS (macOS only)
Android
Install JDK 17
Do not use the JDK bundled with Android Studio (it’s JDK 21, which causes build failures). On macOS:
Configure environment variables
Add to your shell profile (On Linux, also install system dependencies:
~/.zshrc or ~/.bashrc):Install Android Studio
Install Android Studio using the standard setup wizard.
Configure Android Studio
- Increase IDE memory: Go to Android Studio > Settings > Memory Settings and set the heap to at least 4096 MB
- Set Gradle JDK: Go to Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK and select the
JAVA_HOME(Azul Zulu 17) entry
Create an emulator
Create an emulator via Android Studio > Device Manager (unless using a physical device).
Development Workflow
Running the App
Start Metro in one terminal:- iOS: Open
ios/Rainbow.xcworkspacein Xcode (not the.xcodeproj) and press Cmd+R, or run: - Android: Open the
android/folder in Android Studio, or run:
Before Submitting
Before submitting a pull request, ensure your code passes all verification checks:Getting Help
If you have questions or need help:- Review our code conventions
- Check the PR guidelines
- Look at recent pull requests for examples
- Ask questions in your PR comments
Next Steps
Code Conventions
Learn about our coding standards and style guide
Testing Guidelines
Understand our testing requirements and best practices
Pull Request Process
Follow our PR workflow and review process
Working with GraphQL
Learn how to work with GraphQL queries and clients