Before Creating a PR
Checklist
- Issue has been assigned to you on GitHub
- You’ve read CONTRIBUTING.md
- Code is complete and tested on all platforms
- All tests pass (
npm test) - Code is formatted (
npm run prettier) - No lint errors (
npm run lint) - Type checking passes (
npm run typecheck-tsgo) - Commits are signed with GPG
Creating a Pull Request
1. Create Branch
2. Make Changes
Implement your fix or feature following Coding Standards.3. Commit Changes
All commits must be signed:See Getting Started for GPG signing setup.
4. Create PR on GitHub
- Go to your fork on GitHub
- Click “Compare & pull request”
- Fill out every section of the PR template
- Link the issue:
Fixes https://github.com/Expensify/App/issues/12345
PR Template Sections
Details
Explain what changed and why:Fixed Issues
Link the GitHub issue (do not usefixes keyword):
Tests
Example:Screenshots
Checklist
Complete every item in the PR checklist:- I verified the correct issue is linked in the
### Fixed Issuessection above - I signed all commits (see GPG Signing)
- I tested this with iOS, Android, Web, and mWeb
- I ran
npm run prettier - I ran
npm run lintwith no warnings - I ran
npm run testand all tests pass - I added screenshots for all platforms
During Review
Responding to Feedback
Comment “Updated” to notify reviewers when you’ve addressed feedback.
Daily Updates
Provide updates on weekdays to keep reviewers informed:Never Force Push
Review Process
Who Reviews
Your PR will be reviewed by:- Contributor+ (C+): Code quality, style, testing
- Expensify Engineer: Architecture, business logic
Review Timeline
- First review: Usually within 2-4 days
- Follow-up reviews: 1-2 days
- Final approval: After all feedback addressed
If no review after 4 days, ping in #expensify-open-source Slack.
What Reviewers Check
- Functionality: Does it fix the issue?
- Code Quality: Follows coding standards?
- Testing: Tested on all platforms?
- Performance: No performance regressions?
- Documentation: Updated if needed?
After Merge
Deployment Process
Timeline
- Merged: PR merged to
main - Staging Deploy: 1-2 days
- Production Deploy: 1-2 weeks
- Regression Period: 7 days after production
- Payment: 7+ days after production (if no regressions)
Post-Deployment Checklist
After deployment to production, complete the checklist that’s auto-posted:- Propose regression test steps: How to verify the bug doesn’t return
- Identify offending PR: If this fixed a bug, find what PR caused it
- Comment on offending PR: Explain what broke
- Discuss prevention: How to prevent similar bugs
Regressions
What Are Regressions?
Bugs introduced by your PR that are discovered within 7 days of production deployment.Impact on Payment
- 50% penalty for each regression
- Payment delayed until all regressions are fixed
- Applies to both Contributor and Contributor+
Avoiding Regressions
- Test thoroughly on all platforms
- Write comprehensive tests
- Consider edge cases
- Review your own PR before submitting
- Test with different data scenarios
Common PR Mistakes
1. Incomplete PR Template
2. Missing Screenshots
Provide screenshots for all 4 platforms, even if they look identical.3. Not Running Prettier
4. Unsigned Commits
Ensure GPG signing is configured before your first commit.5. Force Pushing During Review
Never usegit push --force after review starts.
PR Size Guidelines
Keep PRs Focused
- Ideal: 200-400 lines changed
- Maximum: 1000 lines (requires justification)
- One purpose: Fix one issue or add one feature
Large PRs
If unavoidable:- Discuss with team first
- Break into logical commits
- Provide extra context in description
- Be patient with review time
Draft PRs
Use draft PRs for work-in-progress:Best Practices
1. Self-Review First
Review your own PR before requesting review:- Check for commented code
- Verify all test steps work
- Ensure screenshots are clear
- Look for obvious improvements
2. Provide Context
Help reviewers understand:- Why the change is needed
- What alternative approaches you considered
- Any gotchas or tricky parts
- Impact on other features
3. Be Responsive
Respond to feedback quickly:- Address comments within 1-2 days
- Ask questions if unclear
- Provide updates if delayed
4. Learn from Feedback
Use review feedback to improve:- Note common suggestions
- Apply learnings to future PRs
- Ask why if you don’t understand
Communication
Where to Ask Questions
- About the PR: Comment on the PR
- About the issue: Comment on the GitHub issue
- General questions: #expensify-open-source Slack
Getting Help
If stuck:- Comment on the PR or issue
- Wait 1-2 business days
- If no response, ping in Slack
- Provide context and what you’ve tried
Payment
Payment Timeline
- Minimum: 7 days after production deploy
- With regressions: After regressions fixed + 7 days
- Maximum: Usually within 14 days of production deploy
Payment Issues
If not paid after 8 days post-production:- Verify no regressions exist
- Complete post-deployment checklist
- Comment on issue mentioning BugZero team member
- Be patient - payment is processing
Next Steps
Getting Started
Start contributing
Coding Standards
Follow code guidelines
Testing
Write comprehensive tests
PR Best Practices
Advanced PR guidelines
