A React Native app that goes a long time without an upgrade doesn't accumulate that deferred maintenance in a straight line — it accumulates it exponentially, because each skipped upgrade means the next one has to cross more incompatible native-project changes, more deprecated APIs removed rather than just warned about, and more third-party libraries that dropped support for the old version somewhere along the way. The team that upgrades every release cycle does a small, boring diff each time. The team that waits does a project.
Two genuinely different upgrade paths exist depending on how the app was created: an Expo-managed app upgrades largely through a version bump and a rebuild, because Expo owns the native project files on your behalf; a bare React Native app upgrades by reconciling changes to native project files — Podfile, build.gradle, AndroidManifest.xml — that you own directly and that a version bump alone does not touch.
This lesson also covers the specific transitional problem of migrating onto the New Architecture (Fabric and TurboModules, covered earlier in this course) from an app built entirely against the old bridge-based architecture, because that migration has its own compatibility surface separate from an ordinary version upgrade, and conflating the two is a common planning mistake.
Analogy🏏Cricket
🏏 Think of it like cricket: A fast bowler who skips pre-season conditioning for one year doesn't just lose one year's worth of fitness gains — the layoff means the next pre-season has to rebuild base fitness before it can even start building on top of anything, effectively costing more than one year's worth of work to recover the same starting point a bowler who trained continuously never lost. A bowler who trains every off-season does small, manageable, incremental work each time — this year's block builds directly on last year's base. A bowler who skips two or three off-seasons in a row faces compounding cost: not two or three years of missed gains, but a genuine risk of injury just attempting to return to competitive pace too quickly, because the body that would have adapted gradually now has to adapt all at once. A React Native app follows the identical curve: a team that upgrades every release does a small, incremental diff against changes that were, individually, manageable. A team that skips several release cycles in a row faces a compounding gap — deprecated APIs that were merely warnings when skipped are now hard removals, third-party libraries that supported the old version have moved on entirely, and the diff across native project files spans far more unrelated changes tangled together than any single release's changes would have been. The insight is that deferred technical maintenance, like deferred physical conditioning, doesn't wait patiently to be paid off later at the same rate — the cost compounds specifically because the gap itself creates additional problems beyond what was originally deferred.
🏏 Showing the Cricket analogy — a Cricket version isn’t available for this concept yet.