Walsh Costigan Let's chat

Fixing & maintaining an app

Updating an Outdated App: Store SDK Deadlines, React Native/Expo Upgrades and What to Do First

Short answer: Start by checking whether the app still builds and whether it meets the stores' current requirements: Google Play's yearly target API level deadline and Apple's minimum Xcode/SDK for new uploads. Then upgrade in steps. Update the framework (React Native/Expo, Flutter or native SDKs) one major version at a time, update or replace abandoned dependencies, and test purchases, login and push notifications on real devices at each step. Ship with a staged rollout. For a React Native app that's 1–2 years behind, this usually takes days to a few weeks, not a rewrite.

Why do outdated apps become a problem?

Even if nothing in your app changed, the world around it did:

  • Google Play requires new apps and updates to target a recent Android API level, with the deadline moving forward every year (usually in late summer). Apps that fall too far behind become less visible to users on newer Android versions.
  • Apple periodically requires new uploads to be built with a recent Xcode and iOS SDK, usually in the spring after each autumn release.
  • New OS versions change permissions, background tasks, notifications and UI behaviour.
  • Third-party SDKs (payments, analytics, auth, maps) deprecate old versions and eventually turn them off.
  • Certificates and keys expire.

The result is usually discovered at the worst moment: you need an urgent fix and suddenly can't ship an update at all.

Step 1: Assess where you are

  • Does the project build on a current machine with current Xcode and Android Studio?
  • Which framework version is it on, and how many major versions behind?
  • Which target API level (Android) and SDK (iOS) does it use?
  • Which dependencies are abandoned, deprecated or have security advisories?
  • Are in-app purchases, login and push still working in production?

This assessment is usually a short, fixed-scope task, and it produces a clear upgrade plan.

Step 2: Upgrade the framework in steps

React Native / Expo

  • Upgrade one Expo SDK or React Native version at a time, using the official upgrade guides and release notes.
  • Expo's tooling (npx expo install --fix) aligns dependency versions for each SDK.
  • Check your libraries' compatibility with React Native's New Architecture, which is now the default.
  • Expect the biggest jumps to involve native build changes (Gradle, CocoaPods, Xcode settings).

Flutter

  • Upgrade Flutter and Dart versions step by step, and update plugins at each stage.

Native (Swift/Kotlin)

  • Update to the current Xcode and Android Gradle Plugin, raise the target SDKs, and fix deprecation warnings.

Step 3: Deal with dependencies

  • Update the ones that are maintained
  • Replace abandoned ones with maintained alternatives
  • Remove anything unused. Fewer dependencies means less future maintenance.

Step 4: Test what makes money

Before releasing, test on real devices (old and new OS versions):

  • Sign-up and login (including Sign in with Apple and Google)
  • In-app purchases, subscriptions and restore
  • Push notifications
  • Deep links
  • Any payment, booking or data-sync flows

Step 5: Release safely

  • Use staged rollouts (Google Play percentage rollouts, Apple phased release)
  • Watch crash reports closely for the first few days (fixing crashes)
  • Keep the previous version's build handy in case you need a quick fix

How long does it take?

How far behind Typical effort (React Native/Expo)
1 major version A day or two
1 year behind A few days to a week
2–3 years behind 1–3 weeks
4+ years, abandoned libraries Weeks. Compare against a partial rebuild

Native and Flutter apps follow similar patterns.

How do I avoid this next time?

Upgrade little and often: a small framework upgrade after each major release, dependency updates monthly, and a calendar reminder for store deadlines. This is the core of any good maintenance plan.

FAQ

My app works fine. Why do I need to update it?

Because store requirements and OS versions change every year. An app that falls behind can lose the ability to ship updates, become less visible in the stores, or break on new devices.

Will updating my app break it?

Upgrades can introduce bugs, which is why they're done in steps with testing at each stage and released with staged rollouts.

Can I update an app built by a different developer?

Yes. With access to the code repository and developer accounts, any experienced developer in that stack can upgrade it. See finding a developer to fix your app.

Is it better to rebuild an old app from scratch?

Usually not. Most outdated apps can be upgraded for far less than a rebuild. Rebuild only if the framework is abandoned or the code can't reasonably be upgraded.