Before You Start
Check existing issues
Look for existing issues or discussions related to your proposed change. If none exist, consider opening an issue first to discuss major changes.
Create a branch
Create a new branch for your changes:Use descriptive branch names:
feature/add-wallet-connect-v2fix/transaction-parsing-bugrefactor/improve-state-management
Set up development environment
Follow the setup instructions to configure your development environment.
Making Changes
Code Quality Standards
Ensure your code meets Rainbow’s quality standards:Follow code conventions
Review and follow the code conventions:
- Write TypeScript (no JavaScript)
- No barrel exports
- Use type-only imports
- Follow ESLint rules
Add tests
Include tests for your changes. See testing guidelines.
Commit Your Changes
Write clear, descriptive commit messages: Good commit messages:- Format code with Prettier
- Lint code with ESLint
Verification Checklist
Before submitting your PR, verify everything passes:Creating the Pull Request
Push Your Branch
Open the PR
PR Description Best Practices
What Changed
Provide context for reviewers: Good:Screen Recordings / Screenshots
For UI changes, always include:- Screenshots or screen recordings
- Before/after comparisons
- Both iOS and Android if applicable
What to Test
Provide step-by-step testing instructions: Good:Review Process
What to Expect
Automated checks
CI/CD will run automated checks:
- Linting
- Type checking
- Tests
- Build verification
Code review
Team members will review your code:
- Check for code quality
- Verify tests
- Test functionality
- Suggest improvements
Responding to Review Feedback
- Be open to feedback and suggestions
- Ask questions if feedback is unclear
- Make requested changes promptly
- Mark conversations as resolved when addressed
- Thank reviewers for their time
Common PR Issues
CI/CD Failures
Linting Failures
Test Failures
Type Errors
Merge Conflicts
If your PR has merge conflicts:Large PRs
If your PR is too large:- Consider breaking it into smaller PRs
- Each PR should focus on one feature or fix
- Smaller PRs are easier to review and merge
After Your PR is Merged
PR Checklist
Use this checklist before submitting:- Code follows code conventions
- All tests pass (
yarn test) - Linting passes (
yarn lint) - Type checking passes (
yarn lint:ts) - No circular dependencies (
yarn check:cycles) - Tests added for new functionality
- Documentation updated if needed
- PR description is complete and clear
- Screenshots/recordings included for UI changes
- Testing instructions provided
- Tested on actual devices (iOS and Android)
- No merge conflicts
- Branch is up to date with main
Getting Help
If you need help with your PR:- Ask questions in PR comments
- Review code conventions
- Check testing guidelines
- Look at recent merged PRs for examples
- Reach out to maintainers
Additional Resources
Code Conventions
Review coding standards
Testing Guidelines
Learn about testing requirements
Contributing Overview
Setup and getting started
Working with GraphQL
GraphQL development guide