Tick boxes locally while you verify a release. Nothing is saved to the server. For signed production APK notes, see docs/ANDROID_SIGNED_RELEASE.md in the repo.
Broad field rollout: distribute a release-signed APK (not debug). Upload the same binary to Hetzner, run npm run release:apk-meta on that file, commit src/data/apk-release-meta.json, then deploy so /download shows correct size and checksum.
Android (APK) Open https://rewards.interactpak.com/download on a test Android phone. Download APK from the green button; confirm HTTPS source (Hetzner: downloads.interactpak.com). If shown, compare file size and SHA-256 prefix with the /download page (metadata from last `npm run release:apk-meta` + deploy). Install, allow unknown sources if prompted, open app, complete OTP login. Confirm in-app update banner appears when /api/app-version latestVersionCode > installed build (optional test build). WhatsApp / share templates From /download, copy “WhatsApp (Android)” and send to a test chat; link opens and APK downloads. Copy “Operator cheat sheet”; verify APK URL, /install-ios, /sms-guide, and SMS line (if NEXT_PUBLIC_CAMPAIGN_SMS_DISPLAY is set). iPhone / iPad (PWA) Open https://rewards.interactpak.com/install-ios in Safari (not in-app WhatsApp browser). Add to Home Screen; open icon; log in. Confirm no App Store step is implied anywhere on /download or banner. If an update is forced for native wrapper tests, banner “Update” should open /install-ios (Safari PWA steps), not a store. SMS HELP / START Send HELP and START to the live campaign short code / number; replies match public /sms-guide (English list). If NEXT_PUBLIC_CAMPAIGN_SMS_DISPLAY is set, confirm the same number appears on /download and /sms-guide. Web / PWA version banner After deploy, open rewards in browser; when webVersion changes, banner offers reload; reload pulls new chunks/SW. serviceWorkerVersion in /api/app-version matches public/sw.js CACHE_NAME (bump both together when changing SW precache). Withdrawal minimum (SMS / policy) From a test FO wallet, trigger withdrawal via SMS or app; if below minimum, reply or UI states minimum PKR from campaign/policy (not a generic error). Play Store / App Store (engineering handoff) Read docs/MOBILE_STORE_RELEASE_ENGINEERING.md — build commands, icon paths, privacy URL, and what is still manual in consoles. Confirm AAB (Android) or archive (iOS) is built from the tagged commit; attach checksum or CI artifact link in the release ticket. Confirm listing screenshots + feature graphic exist in marketing storage (often not in git due to size). Privacy policy URL: https://rewards.interactpak.com/privacy (or tenant-specific policy if white-label). Also in repo: docs/RELEASE_VERIFICATION_CHECKLIST.md · Install & update