App Store and TestFlight release checklist
App Store and TestFlight release checklist
The immediate distribution goal is a TestFlight build that can exercise the physical-device Siri checkpoint without installing a locally signed developer app on a managed work phone. TestFlight availability remains subject to the employer’s device policy.
1. Account and app record
- Enroll as an individual in the Apple Developer Program.
- Confirm that the Free Apps Agreement is active in App Store Connect.
- Create an iOS app record using bundle ID
io.github.ejones23.KidMoney. - Confirm the public App Store name:
Kid Money Ledger. - Record the App Store Connect Apple ID (
6810006476) and SKU (kid-money-ios).
2. Release identity and assets
- Use a stable reverse-DNS bundle identifier.
- Add an opaque 1024×1024 App Store icon.
- Review the current icon with the product owner; approved October 4, 2026.
- Capture and upload representative iPhone screenshots from the release candidate using fictional ledger data; the home screen appears first, followed by child history.
- Finalize copyright, description, subtitle, keywords, and categories in App Store Connect.
- Provide the user-approved public support email
kidmoneyledger@duck.comon the support page; GitHub Issues remain available for non-sensitive reports. - Verify the published support link and the Duck address receive/reply path without exposing the owner’s personal address.
3. Privacy and compliance
- Draft public privacy and support pages.
- Enable GitHub Pages from the repository’s
docsdirectory and verify every URL. - Audit the release build and third-party code before selecting “Data Not Collected.”
- Complete the age-rating questionnaire; App Store Connect calculates a global 4+ rating with regional equivalents.
- Confirm the app is not designated Made for Kids; the operator is a parent or guardian.
- Declare that the app does not contain, show, or access third-party content.
- Declare that build
0.1 (1)contains no encryption algorithms and add the matching Info.plist setting for future builds. - Verify that all user-facing claims match the shipped behavior.
4. Build verification
- Build the Release configuration for a generic iOS device.
- Run all automated tests on the supported simulator runtime.
- Confirm a clean Xcode Issue Navigator.
- Exercise persistence across termination and relaunch.
- Audit accessibility, Dynamic Type, dark appearance, and supported screen sizes.
- Decide whether to keep iOS 26 as the initial minimum version.
5. TestFlight
- Confirm the initial release version (
0.1) and build number (1). - Create a signed Release archive with automatic signing.
- Validate the archive for App Store Connect distribution and upload it.
- Create the
Internal Testinggroup, add build0.1 (1), and invite the account holder. - Upload build
0.1 (2)with the Siri capability and add it toInternal Testing. - Upload build
0.1 (3)with localized App Shortcut phrase resources and add it toInternal Testing. - Archive and upload build
0.1 (4)with the Phase 3 voice-action set. - Add build
0.1 (4)toInternal Testingafter App Store Connect finishes processing it. - Upload build
0.1 (5)with the one-shot child-and-amount routing experiment and add it toInternal Testing. - Archive and upload build
0.1 (6)with every five-cent increment through one dollar. - Add build
0.1 (6)toInternal Testingafter App Store Connect finishes processing it. - Upload Phase 4 build
0.1 (7)and add it toInternal Testingfor manual-interface review. - Upload build
0.1 (8)with the isolated family-sharing connection probe. - Deploy the counter-only CloudKit production schema and add build
0.1 (8)toInternal Testing. - Generate and deploy the missing
cloudkit.sharesystem schema. - Upload build
0.1 (9)with incomplete-probe recovery. - Add build
0.1 (9)toInternal TestingandFamily Test. - Complete the two-account physical CloudKit connection matrix with build
0.1 (9). - Complete beta description, feedback contact, and review information.
- Add the owner’s non-managed Apple Account as an external tester if necessary.
- Submit the first external build for Beta App Review.
- Install from TestFlight on an allowed physical iPhone.
- Verify the action end to end through a Siri-invoked user-created shortcut.
- Verify both advertised App Shortcut phrases end to end on an unmanaged physical iPhone.
- Verify automatic App Shortcut routing and a persisted transaction on the managed physical iPhone.
- Verify terminated, locked-device execution and termination/relaunch persistence on the managed physical iPhone.
- Execute and record the Phase 2 portion of
docs/SIRI_TEST_PLAN.mdbefore expanding the intent set. - Execute and record the Phase 3 build 4 matrix on physical hardware.
- Execute and record the build 5 one-shot routing matrix on physical hardware.
- Execute and record the build 6 locked-screen increment matrix on physical hardware.
- Execute and record
docs/PHASE6_CONNECTION_TEST.mdon two iCloud accounts before implementing real-ledger synchronization. - Deploy the real-ledger Household, Child, and LedgerTransaction CloudKit schema to Production before distributing an opt-in sharing build.
- Verify App Store Connect privacy answers and the published privacy policy
match the optional private CloudKit ledger upload.
The verified privacy-policy URL and
Data Not Collectedanswer were published in App Store Connect on September 26, 2026. Optional private iCloud sharing remains disclosed in the full privacy policy. - Archive, validate, and upload real-ledger sharing build
0.1 (10). - Add build
0.1 (10)toInternal Testingafter processing completes. - Complete the owner-only, no-upload physical preflight for build 10: existing ledger unchanged, plausible consent counts, and Not Now kept the ledger local-only.
- Add build
0.1 (10)to the externalFamily Testgroup after preflight; App Store Connect shows Testing for the group. - Observe owner-side build 10 consent/upload completion, Sharing enabled, and private invitation sent on a physical phone.
- Verify participant adoption, Sharing enabled, and matching initial transaction history on the spouse’s phone.
- Resolve the build 10 owner-to-participant Sync Now failure in build 11; verify the old pending edit drains and arrives once on the second phone.
- Verify participant-to-owner Sync Now for a single manual edit.
- Validate and upload build
0.1 (11)with the candidate Sync Now fix; App Store Connect shows Testing in both internal and Family Test groups. - Archive and upload visual-first build
0.1 (13)with Xcode 27 and add it toInternal Testingafter processing completes. - Complete the build 13 owner-phone quick-action checks in
docs/QUICK_ACTION_TEST_PLAN.md. - Upload build
0.1 (14)and add it toInternal Testing. - Complete build 14’s owner-phone visual Undo, All Children, child-detail, and automatic pending-queue checks.
- Add build 14 to
Family Testwith one-phone review instructions; App Store Connect shows Testing in both internal and Family Test groups. - Run build 14’s basic two-phone automatic-sync check: changes arrived in both directions without Sync Now; one receiving app needed foreground catch-up.
- Complete the rapid-edit and automatic offline/reconnect checks.
- Complete build 14’s automatic two-device matrix, including foreground catch-up and exact-once history, without Sync Now.
- Remove the home-screen Undo Last control and hide the obsolete counter-only connection test in the release-candidate source.
- Archive and upload release-candidate build
0.1 (15); App Store Connect accepted the upload on October 4, 2026 and it is assigned to Internal Testing. - Complete build 15’s owner-phone TestFlight upgrade check: existing data, visual controls, hidden connection-test UI, one adjustment, and automatic pending-change drain all passed.
- Submit build 15 to the external
Family Testgroup with accurate one-phone review instructions; App Store Connect shows Testing in both internal and external groups. - Complete build 15’s two-phone TestFlight check: both upgraded ledgers retained their data, owner-to-participant and participant-to-owner automatic delivery each arrived exactly once, and both replicas persisted matching results after termination and relaunch.
6. Public release
- Resolve every release-candidate TestFlight finding.
- Choose public version
1.0; create build 16 as the version-only successor to the physically verified build 15. - Archive, validate, and upload public candidate
1.0 (16); App Store Connect accepted the upload on October 4, 2026 and it is assigned toInternal Testing. - Configure United States-only storefront availability and a free price in App Store Connect.
- Attach verified build
1.0 (16)to the App Store version. - Save App Review contact information, retain manual release, and limit the compatibility release to iPhone by disabling Apple Silicon Mac and Apple Vision Pro availability. App Store Connect enabled Add for Review on October 10, 2026.
- Submit build
1.0 (16)and its required metadata for App Review; App Store Connect reported Waiting for Review on October 10, 2026, with manual release retained. - Respond to review questions without sharing private ledger or device data.
- Release manually after approval and verify the live product page.
Never commit Apple credentials, certificates, provisioning profiles, personal development-team identifiers, private contact details, or device registration data.