nexa
ExploreServicesAboutTeamFAQBlogContact
GitHubStart a project
Blog · Process

One codebase, three stores: our release checklist

The boring list we run before every release to App Store, Google Play and the web, and the mistakes that put each item on it.

Ethan

Tech Lead · Mobile & Web

June 22, 20263 min read

On this page

  1. Before building
  2. Before submitting
  3. The web build
  4. The whole release, in order
  5. Why a list and not a script

Shipping one React Native app to two stores and a web build sounds efficient, and mostly it is. The code is shared. The release is not. Below is the checklist we run before every release, with the story behind each line one tap away.

  1. Shared React Native codeScreens, state and business logic
  2. Platform buildsNative projects plus web fallbacks for native modules
    iOSAndroidWeb
  3. Where it shipsThree reviews, three sets of rules
    App StoreGoogle PlayWeb hosting
One codebase fans out into three builds, each with its own review and its own way to fail.

Before building

  • Bump version and build number in both native projects
  • Changelog covers every user-visible change since last release
  • Environment config points at production, not staging
  • Feature flags for unfinished work are off
Why the version bump is on the list

It sounds trivial, and it is the item we have missed most often. One store rejects a duplicate build number outright; the other can accept it in ways that make the next upload confusing. Checking both projects every time is cheaper than finding out during review.

Why feature flags get their own line

Half-finished screens hidden behind a flag are harmless until the flag defaults the wrong way in a release build. A five-second check prevents a very public mistake.

Before submitting

  • Install the release build on a real, older Android phoneCatches more problems than anything else on this list.
  • Install the release build on an iPhone, from a clean state
  • Run the main flow end to end without the debugger attached
  • Privacy labels and data safety forms still match what the app collects
  • Store screenshots regenerated if any visible screen changed
Why an older Android phone, specifically

Animations that are smooth on a new phone stutter, memory runs out sooner, and slow storage reveals loading states you never saw during development. If the app feels good on a cheap phone, it feels good everywhere.

Why "without the debugger"

Debug builds are slower in some places and more forgiving in others. Release builds are what users get, so release builds are what we test.

The simulator tells you the code works. A cheap phone tells you the app works.

The web build

The web version shares most screens with the mobile app, but not the environment. Native modules have web fallbacks, and those fallbacks are easy to forget about until they break.

  • Run the web build against production keys
  • Anything stored on device has a working web equivalent
  • Check a narrow mobile viewport as well as desktop

The whole release, in order

  1. PrepareVersion, changelog, config, feature flags
  2. BuildScripted for both native platforms
  3. Real-device passAn older Android phone and a clean iPhone install
  4. SubmitApp Store and Google Play review
  5. Web buildPrivate window, narrow and wide viewports
  6. WatchCrash reports and reviews for the first days
The real-device pass is the step that catches the most.

Why a list and not a script

Version bumps and builds run from scripts now. But half the list is judgement: does this screenshot still represent the app, does this changelog make sense to someone outside the team, does this animation feel slow on a cheap phone. A checklist keeps a person looking at those things.

How the list grows

It lives in the repository next to the code. When a release goes wrong, the fix is not finished until the list has a new line explaining how to catch it next time.

P

Mentioned in this post

PetPal

Case study

Work with us

Need an app like PetPal built?

Our services

Keep reading

All posts
  • AI can design an app now. Are designers redundant?
    Read post

    Design

    AI can design an app now. Are designers redundant?

    AI makes the first draft of a screen cheap. That shifts design work to what matters most: understanding users and choosing what is right for them.

    Tina· Oct 10, 20266 min read
  • AI in software development: turn change into an advantage
    Read post

    Engineering

    AI in software development: turn change into an advantage

    AI does not replace technical thinking. With the right process, it frees teams to focus on the decisions that make products better.

    Ethan· Oct 9, 20264 min read
  • Adding AI to an app without a surprise bill
    Read post

    Engineering

    Adding AI to an app without a surprise bill

    Most of the cost of an AI feature is decided before the first request. Model routing, caching, context size and hard limits, in order of impact.

    Ethan· Oct 7, 20267 min read
nexa
ExploreServicesAboutTeamFAQBlogContact

© 2026 Nexa Tech. All rights reserved.

Web · Mobile · Open source