[ reference ]

App Development BKM

Best known methods for shipping a React Native + Expo iOS app from idea to App Store.

Version v1.0
Last updated May 9, 2026
Status Living document
Phases 6
For Solo founders, small teams

preamble

What this is.

This is a phase-based reference for shipping a React Native + Expo iOS application from idea to the App Store and through the post-launch stabilization period. It is written for solo founders and small teams who do not have a dedicated DevOps engineer, a release manager, or an iOS specialist on staff.

The document is organized into six phases. Each phase has a brief intro that names what the phase is about, a checklist of operational steps that should be completed before moving to the next phase, and warnings drawn from lessons learned the hard way on previous shipping cycles. The warnings are deliberately separated from the checklists. Checklists are what to do; warnings are what to avoid.

This document does not cover business operations (LLC formation, banking, tax). It does not cover supervising agentic AI development tools — that surface lives in the AI Working Instructions. It does not cover the reflective lessons from specific shipping cycles — those live in Field Notes. This is the operational app-development reference, scoped to that.

The document is versioned and dated. New best-known methods are added as new shipping cycles produce them. Existing methods are revised when subsequent practice reveals they were incomplete. The version log at the bottom records what changed.

// six phases
  1. Phase 0 — Pre-flight— before you write a line of code
  2. Phase 1 — Project initialization— repo, environment, conventions
  3. Phase 2 — Build phase— feature work, integration, on-device testing
  4. Phase 3 — Monetization— RevenueCat, paywall, subscription products
  5. Phase 4 — App Store submission— listing, screenshots, reviewer notes
  6. Phase 5 — Post-launch and iteration— first 30 days and beyond

phase 00

Pre-flight.

Before any code is written, several decisions and accounts need to exist. Skipping this phase is the most common cause of multi-week delays mid-project, because the missing prerequisites only surface when you need them and the lead time on each is non-trivial.

Account prerequisites

Each of these takes between hours and weeks to set up. Start them in parallel as early as possible.

// account checklist

Naming convention decisions

Names made early ripple through every system. Decide them once, write them down, and do not change them mid-project.

// naming decisions
⚠ lesson

Identifier drift between code and dashboard ships silent bugs. If your code looks up an entitlement called premium and your RevenueCat dashboard has it as Premium or App Premium, real subscribers will pay successfully and never receive Premium features. The string must match exactly. Pick the convention at project start, document it, and verify the match every time you touch either side.

Product decisions before code

// product decisions

phase 01

Project initialization.

The first commits to the repo set conventions that affect every later session. This phase establishes the structure, the file conventions, and the build pipeline. Decisions made here are expensive to reverse.

Repository structure

// repo conventions
⚠ lesson

Backup files are an attractive nuisance for any tool that operates on file paths. If your AI development tool, CI script, or build process can encounter a .bak file in the same directory as the live file, eventually it will operate on the wrong one. Move backups to a separate directory or rely entirely on git history.

Environment configuration

// env setup
⚠ lesson

Missing the EXPO_PUBLIC_ prefix is a silent failure. The variable exists, the build succeeds, the code reads it as undefined. Document the prefix requirement in your .env.example file and verify all client-readable variables follow the convention.

Build pipeline

// build setup

Project documentation

// internal docs

phase 02

Build phase.

The longest phase. Most of the visible work happens here. The disciplines that matter most in this phase are the ones that prevent you from accumulating technical debt that surfaces during submission.

Development discipline

// dev disciplines

Code quality controls

// code quality

Localization (if shipping multi-language)

// localization
⚠ lesson

Inline strings everywhere is fast in week 1 and a tax in week 8. If you suspect the app will support multiple languages, set up i18n infrastructure on day one. Migrating inline ternaries to a centralized translation file mid-project is significantly more work than starting with the right structure.

Crash reporting and analytics

// observability

phase 03

Monetization.

RevenueCat integration and paywall implementation. This is the phase where small misalignments cause the largest downstream pain. Every identifier must match across code, App Store Connect, and the RC dashboard.

RevenueCat dashboard configuration

Do this before code. Configuration drives the code, not the other way around.

// rc dashboard

App Store Connect subscription setup

// asc subscriptions

Code integration

// code integration
⚠ lesson

The custom paywall vs SDK paywall decision is bigger than it looks. RevenueCat's RevenueCatUI.presentPaywall() is a complete native paywall with offerings fetching, plan toggle, purchase flow, and trial mechanics built in. A custom paywall gives you full design control but requires implementing offerings fetching, package selection, purchase wiring, and trial logic yourself. For v1 of any new app, ship with the SDK paywall. Custom comes in vN+1 if needed.

Sandbox testing

Before any TestFlight submission, every purchase path must be verified end-to-end with sandbox credentials.

// sandbox tests

phase 04

App Store submission.

The bottleneck phase. Apple's reviewer has limited context and limited time. Every artifact you provide either speeds the review or invites questions. The disciplines here are about making the reviewer's job as easy as possible.

Pre-submission checklist

// pre-submission

App Store listing

// listing copy

Screenshots

// screenshots

Review Information

This is the section the reviewer reads to understand your app. Every field matters.

// review info
⚠ lesson

Reviewer notes that explain the AI guardrails save rejection cycles. If your app uses an LLM-powered feature, the reviewer will encounter it. Explain in the notes: what the AI can and cannot do, what content guardrails exist, what happens on out-of-scope queries, and any fact-checking or safety measures. The reviewer's first instinct on encountering AI features is to test edge cases. Pre-empt the test by describing the constraints.

Final submission

// submission gate

phase 05

Post-launch and iteration.

The phase that determines whether you ship a hit or a launched app that quietly fails. The first 30 days are the highest-information period of the entire project. Discipline here is what turns a v1 into a v2.

The first 72 hours

// first 72 hours

The first 2 weeks

// stabilization

v.0.1 hotfix discipline

// hotfix rules

Beyond week 2

// iteration

cross-phase reference

Standing reference tables.

Identifier conventions

IdentifierFormat
Bundle IDcom.company.app
Subscription product (monthly)com.company.app.premium.monthly
Subscription product (yearly)com.company.app.premium.yearly
RC entitlementpremium (lowercase)
RC offeringdefault (mark as Current)
RC packages$rc_annual, $rc_monthly (predefined)
Env variable for RC iOS keyEXPO_PUBLIC_REVENUECAT_IOS_API_KEY

Required URLs

PurposeNotes
Privacy PolicyRequired by Apple. Must be publicly reachable.
Terms of ServiceRequired for any subscription app.
Support URLRequired. Can be your domain or a hosted contact form.
Marketing URLOptional but recommended.

Cost reference

ServiceApproximate cost
Apple Developer Program$99/year
EAS (Production tier)$29/month
RevenueCatFree up to $2,500/month revenue, then percentage
Sentry / Bugsnag (free tier)Free for low-volume apps
Domain$10-20/year

version log

What changed and when.

Every revision of this document is recorded here. New phases or sections are noted. Existing methods are revised when subsequent shipping cycles produce better practice.

v1.0 — May 9, 2026

related references

Where the rest of the operator framework lives.

Maintained by Qais Ali — Senior AI Cyber Security Engineer, CEO of Ilm Works.

Living document. Last updated May 9, 2026. Contact: qais@ilmworks.co