This wiki is intended to provide some guidance and reminders when creating a pull request. This should evolve with our practices and processes over time.
General
- Did I remove any extraneous
selfreferences? [Swift only] - If you added a
defaultcase to aswitch, are you absolutely sure that’s the ideal solution? - Am I duplicating existing code?
- Did you specify the correct access level for any of the new entities you introduced?
- Is everything behind a feature flag that should be?
- Am I force unwrapping anything?
- Am I introducing any unnecessary
importstatements? - Did I document everything that I needed to?
- Am I introducing any long-running operations on the main thread?
- Am I using any “magic numbers”? Should I add them to our constants?
- Am I following the team’s coding conventions throughout my changes?
- Did I receive design and product approval?
- Could any of my new code be replaced by native functions or existing helper functions?
- Did I choose appropriate names for my classes, enums, structs, methods, and variables?
- Am I handling and logging all errors correctly?
- Am I supporting dynamic type?
- Did I resolve any ambiguous constraints / handle any breaking constraints at runtime issues?
Testing
- Are there tests? Should there be?
- Did I test different locales and languages? Did the currency, time, and date formatting work as expected?
- Did I test night mode support or remember to disable it?
- Did I test for memory leaks? Did I make everything
weakthat should be? - Did I test multiple screen sizes and orientations?
- Did I test on the lowest iOS version we support?
- Did I test what happens if the user declines/limits permission access (location, camera roll, contacts, etc)?
- Did I test for accessibility compatibility?
- Did I test a poor or offline WiFi connection?
- Did I test what happens if the API calls fail?
- Do the existing tests (unit & UI) pass?
- Did I test other languages we support to ensure there are no missing translations?
Creating a Pull Request
- Am I introducing any new warnings into the Xcode project?
- Did I pull in
developand resolve any merge conflicts before opening a pull request? - Does linting pass?
- Does my PR include screenshots and instructions on how to test these changes?
- Did I remove any commented-out code?
- Did I remove all
TODO,@DOCUMENTME, and placeholder code? - Do I have appropriate
TICKETcomments that reference future work? - Did I remove all of the
printstatements I was using? Am I doing any unnecessary logging? - Does my PR include testing instructions, a description, and a link to the ticket?