AppReviewX Log in

The full mobile app testing checklist (50 checks)

One master list across install, onboarding, core flows, errors, devices, privacy and release.

In this guide

One list for the whole app, in the order a user meets it. Every check has a reason and a way to verify it. Area tags let you filter: [INSTALL], [ONBOARD], [FLOW], [ERROR], [DEVICE], [PRIVACY], [WORDING], [RELEASE]. For depth in one area, follow the links at the end.

Use a real device where you can. Tick a check only when you saw the result, not when you assume it.

Install and first start

  1. [INSTALL] Clean install works. Why: first impressions are made here. Check: delete the app, install the build, open it.
  2. [INSTALL] Update over an older version keeps data. Why: users who update lose trust fast if data vanishes. Check: install the previous build, add data, install the new one.
  3. [INSTALL] Uninstall and reinstall behave sensibly. Why: stale local data causes odd states. Check: reinstall and sign in again.
  4. [INSTALL] App starts without a network. Why: launch crashes on missing data are common. Check: airplane mode, cold start.
  5. [INSTALL] Launch time feels acceptable. Why: slow starts get the app closed. Check: time a cold start on your oldest device.

Onboarding and account

  1. [ONBOARD] Every onboarding screen can be completed and skipped. Why: a stuck first run ends the session. Check: tap through both ways.
  2. [ONBOARD] Back navigation works in onboarding. Why: users misread screens. Check: go back at each step.
  3. [ONBOARD] Permission prompts appear when needed, not all at once. Why: early denial hurts later features. Check: first run, note when each prompt shows.
  4. [ONBOARD] Denied permissions have a usable fallback. Why: denial is common. Check: deny each permission, use the feature.
  5. [ONBOARD] Interrupted onboarding resumes. Why: users get calls and switch apps. Check: kill the app mid-way and reopen.
  6. [FLOW] Sign-up accepts valid input and rejects invalid input clearly. Why: sign-up is the first gate. Check: see the sign-up checklist.
  7. [FLOW] Login, wrong password and reset work. Why: lockouts create support work. Check: see the login checklist.
  8. [FLOW] Logout clears the session. Why: shared devices. Check: log out, press back, restart.
  9. [FLOW] Expired session sends users to sign-in without losing work. Why: tokens expire. Check: wait out or invalidate a token.

Core flows

  1. [FLOW] The main task works start to finish. Why: this is the reason the app exists. Check: do it as a new user, no shortcuts.
  2. [FLOW] Each form validates on the field and on submit. Why: bad data enters silently otherwise. Check: empty, too long, wrong format.
  3. [FLOW] Lists, search and filters return correct results. Why: wrong results look like a broken app. Check: known data, no match, many matches.
  4. [FLOW] Create, edit and delete update everywhere. Why: stale screens confuse. Check: change an item, open every screen showing it.
  5. [FLOW] Back button and gestures behave consistently. Why: unexpected exits annoy. Check: go back from every screen.
  6. [FLOW] Settings save and apply. Why: settings that don't stick feel broken. Check: change, close, reopen.
  7. [FLOW] Payment success, cancel, failure and restore work. Why: money bugs are the costliest. Check: see the payment checklist.
  8. [FLOW] Uploads, camera and files handle large and denied cases. Why: media is where memory runs out. Check: big file, cancel mid-upload.
  9. [FLOW] Deep links and shared links open the right screen. Why: broken links waste campaigns. Check: tap links with the app closed and open.
  10. [FLOW] Notifications arrive and open the right place. Why: they are a re-entry point. Check: send one, tap it, with the app closed.
  11. [FLOW] Account deletion works and says what happens. Why: users expect it. Check: delete a test account and try to log in.

States and errors

  1. [ERROR] Empty states explain what to do next. Why: blank screens look broken. Check: new account, every list.
  2. [ERROR] Loading states appear and end. Why: endless spinners drive uninstalls. Check: slow the network.
  3. [ERROR] Server errors show a helpful message and a retry. Why: raw errors scare people. Check: block the server or return an error.
  4. [ERROR] Offline mode fails gracefully. Why: phones lose signal. Check: switch networks and go offline mid-action.
  5. [ERROR] Double taps don't create duplicates. Why: impatient users tap twice. Check: tap submit and buy buttons rapidly.
  6. [ERROR] Error messages say what to fix. Why: "Something went wrong" helps nobody. Check: read each message aloud.
  7. [ERROR] Long text, emoji and non-Latin input don't break layouts. Why: real names vary. Check: paste long and unusual strings.

Devices and environment

  1. [DEVICE] Smallest and largest supported screens look right. Why: clipped buttons block flows. Check: run both.
  2. [DEVICE] Oldest supported OS version runs the app. Why: crashes there are silent for developers. Check: install on it.
  3. [DEVICE] Portrait and landscape behave as intended. Why: rotation reloads state. Check: rotate mid-flow.
  4. [DEVICE] Dark mode and large text stay readable. Why: accessibility and comfort. Check: switch both in system settings.
  5. [DEVICE] Interruptions (call, alarm, app switch) recover. Why: they happen daily. Check: interrupt each core flow.
  6. [DEVICE] Low battery and low storage don't crash the app. Why: real devices are never ideal. Check: low power mode; fill storage if you can.
  7. [DEVICE] Date, time zone and number formats are right. Why: wrong dates break trust. Check: change region and time zone.
  8. [DEVICE] Screen reader and touch targets work for basics. Why: some users depend on it. Check: turn on the screen reader, finish one flow.

Privacy and wording

  1. [PRIVACY] The app asks only for permissions it uses. Why: extra requests reduce trust. Check: list permissions against features.
  2. [PRIVACY] Consent choices are respected after restart. Why: a remembered "no" must stay no. Check: decline, restart, check.
  3. [PRIVACY] Privacy policy and store data answers match the app. Why: mismatches cause rejections and complaints. Check: list SDKs and data, compare. Not legal advice; check the current store rules.
  4. [PRIVACY] No secrets or test data in logs and screenshots. Why: leaks happen in debug builds. Check: review logs and store images.
  5. [WORDING] Text has no typos or leftover placeholders. Why: "Lorem ipsum" in production shows. Check: read every screen.

Release

  1. [RELEASE] The tested build is the one you submit. Why: rebuilds differ. Check: compare version and build numbers.
  2. [RELEASE] Crash reporting is on and receives a test crash. Why: you can't fix what you can't see. Check: trigger one and find it.
  3. [RELEASE] Known issues are written down and accepted. Why: surprises hurt more than known flaws. Check: list open bugs, decide each.
  4. [RELEASE] There is a rollback or fix plan. Why: the first bad day needs a plan. Check: write who does what.
  5. [RELEASE] Someone outside the project completed the main flow. Why: you can't see your own blind spots. Check: watch or ask for structured feedback.

Go deeper

Check 50 is where AppReviewX helps: private, structured feedback from other developers, one feedback you write earns one credit. See how AppReviewX works.