Thuta Learning
AdvancedMobile Developmentintermediate

Mobile Production Operations

What you'll walk away with

  • Explain the core ideas behind Mobile Production Operations
  • Read the diagram/checklist and trace how the mobile architecture or decision connects
  • Explain how this applies to a real mobile app project

Build the mental model

Running a mobile app in production surfaces problems that never show up on a developer's own phone. You need visibility into which app versions crash, on which OS versions, on which screens, across a fleet of real devices you will never personally hold.

Never log sensitive data in a crash report

Capture enough detail to reproduce and fix the problem, but never log passwords, tokens, or other sensitive user data as part of a crash report.

Version fragmentation is the next mobile-specific reality: your users are spread across whatever app version they last happened to update to, some of them years old. Your backend API must support multiple app versions calling it simultaneously.

  • Optional update: a gentle nudge users can ignore.
  • Recommended update: pushes harder without blocking use.
  • Force update: blocks use of the old version entirely.
  • Emergency security update: overrides normal caution for a real vulnerability.

Feature flags help here: shipped code can stay dormant until your backend flips it on, enabling gradual rollout and instant disable without a new release.

Mobile rollback is not instant like a web deployment -- once a version sits on a device, undoing it takes another release or a flag flip, not a redeploy.

text
BACKWARD COMPATIBILITY CHALLENGE
--------------------------------
BACKWARD COMPATIBILITY CHALLENGE
----------------------------------
v1 App (older, still installed)  ---+
                                     |
                                     +--> Backend API
                                     |      (must support
v2 App (latest release)          ---+       both versions)

Connect it to a real scenario

Set up crash monitoring before your first real release, not after your first bad one -- retrofitting it after users are already complaining means you have already lost the data from your worst incidents.

Configure it to capture app version, OS version, device model, and the screen where the crash happened, and explicitly scrub anything resembling a password, token, or personal identifier.

Ask the compatibility question

Will older, still-installed app versions send or expect something different from what the new code assumes?

Support both shapes

Add new fields instead of renaming, keep old endpoints alive, and version explicitly only when truly necessary.

Consider a feature flag first

Check whether a feature flag or server-side toggle solves the problem without a forced update.

Reserve force updates for emergencies

Treat a force-update prompt as a serious interruption to the user's day, not a routine nudge.

Mobile rollback is not instant

Mobile rollback is not instant like a web deployment -- an installed version stays on the device until it is replaced by another update, so test carefully before release.

Try the working example

javascript
function evaluateApiChangeSafety(change) {
  if (change.isBreakingChange && change.oldAppVersionsStillInUse) {
    return {
      safeToShip: false,
      recommendation: "Version the endpoint or support both old and new shapes until old app versions age out."
    };
  }
  if (change.isBreakingChange && !change.oldAppVersionsStillInUse) {
    return {
      safeToShip: true,
      recommendation: "No old versions depend on the previous shape -- confirm with real usage data before assuming so."
    };
  }
  return { safeToShip: true, recommendation: "Non-breaking change; ship normally." };
}

const riskyChange = { isBreakingChange: true, oldAppVersionsStillInUse: true };
const safeChange = { isBreakingChange: false, oldAppVersionsStillInUse: true };

console.log("Risky change:", evaluateApiChangeSafety(riskyChange));
console.log("Safe change:", evaluateApiChangeSafety(safeChange));
You should see
The risky change (breaking, with old versions still in use) returns { safeToShip: false, recommendation: 'Version the endpoint or support both old and new shapes until old app versions age out.' }. The safe change (non-breaking) returns { safeToShip: true, recommendation: 'Non-breaking change; ship normally.' }

5-minute try-it

Design a hypothetical backend API change that removes a field the app currently reads. Run it through the evaluateApiChangeSafety-style function assuming old app versions are still active, then decide what backward-compatible alternative you would ship instead.

One important caution

Retrofitting crash monitoring only after a bad release, losing visibility into exactly the incidents you needed data on most.

Forcing an update out of impatience rather than real necessity, frustrating users who did nothing wrong.

Feature toggle - WikipediaHow Mobile Apps Work

Easy traps

  • Retrofitting crash monitoring only after a bad release, losing visibility into exactly the incidents you needed data on most.
  • Forcing an update out of impatience rather than real necessity, frustrating users who did nothing wrong.
  • This course does not re-teach the Android Development, Flutter, iOS Development, or React Native tutorials -- continue to those for hands-on framework depth. This course teaches the framework-neutral mobile architecture, decision-making, and build/deployment/security concepts that sit above all four.

Exercise

Design a hypothetical backend API change that removes a field the app currently reads. Run it through the evaluateApiChangeSafety-style function assuming old app versions are still active, then decide what backward-compatible alternative you would ship instead.

You'll know it worked when: The risky change (breaking, with old versions still in use) returns { safeToShip: false, recommendation: 'Version the endpoint or support both old and new shapes until old app versions age out.' }. The safe change (non-breaking) returns { safeToShip: true, recommendation: 'Non-breaking change; ship normally.' }

Mobile Production Operations | Thuta Learning