Build
Quality gate
One last check of the whole app before anyone else sees it: ready for App Review, safe and tested.
The build loop checked each task. This chapter checks the whole app once, the way Apple, an attacker and a stranger would see it.
Build
One last check of the whole app before anyone else sees it: ready for App Review, safe and tested.
The build loop checked each task. This chapter checks the whole app once, the way Apple, an attacker and a stranger would see it.
A quality gate is one last check of the whole app before anyone else sees it. Apple reviews every app before it goes live, and most rejections are things you can catch yourself. Will Apple approve it, is people's data safe, and can a stranger use it without help?
Know what Apple asks for before you test. Most of it you only need if it applies to your app:
The privacy policy is the one every app needs. Let the agent write it from what your code really collects, then publish it as a public page, for example in Notion or Google Docs:
Write a privacy policy for this app based on what the code actually collects and which services it sends data to. Save it as docs/privacy-policy.md, then add a Privacy policy link to the app's settings or about screen.
One prompt runs the whole gate: App Review, security, tests and crash reports. It installs a free App Store review skill that knows Expo apps (366 stars on GitHub), and you'll need a free Sentry ↗ account for the crash reports.
Run a quality gate on the whole app, one step at a time: 1. Install the App Store review skill with npx skills@latest add safaiyeh/app-store-review-skill -a claude-code -y, then list every App Store rejection risk with its file. 2. Review the app for security: secret keys in the code or git history, anything secret named EXPO_PUBLIC_, logins outside SecureStore, data sent without HTTPS. If the app uses Supabase: every table has Row Level Security with policies, and only the anon key is in the app, never service_role. Run npm audit. 3. Write tests for the main flow in docs/PRD.md with React Native Testing Library: one normal case, one edge case, one failure. 4. Add Sentry crash reporting following Expo's guide, ask me for the keys, and add a button to send one test crash. List what you find, most serious first, and fix it with me one at a time.
Then hand your phone to someone who has never seen the app. Ask them to do the main thing and watch without helping. Every place they stop is a task for docs/TASKS.md.
Our favorite tools