◉RORK LABJP
●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SONNET 4.5 — Retires on the Claude API on 11/30, 36 days left. If your app calls it, check the migration target●SDK 58 ISSUE — Early reports include Android widgets not refreshing on a schedule and Stripe linking statically●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SONNET 4.5 — Retires on the Claude API on 11/30, 36 days left. If your app calls it, check the migration target●SDK 58 ISSUE — Early reports include Android widgets not refreshing on a schedule and Stripe linking statically●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…
Articles/Business
⟐ Business/2026-06-12Intermediate

When Should a Rork App Move Up to Rork Max? Deciding With Store Data, Not Aspiration

A framework for deciding whether the $200/month Rork Max tier is justified: three data-driven migration triggers, the case for staying on Expo, why June 2026 lowered the lock-in risk, and the practical steps once you do commit to the move.

Rork600Rork Max235pricing7indie appsmigration decision

Three months after shipping an app, I find myself staring at its dashboard and asking the same question on a regular schedule: is it time to move this one up to Rork Max? The gap between $25 and $200 a month comes to $2,100 a year — not a trivial fixed cost for an indie developer. And yet the pull of Max is real: native Swift generation and reach across the whole Apple device family.

The reason the question kept coming back is that I was feeding it feelings instead of data. Aspiration fluctuates weekly; the dashboard does not. So I pinned the migration decision to three concrete triggers, and the recurring agonizing stopped. If you are circling the same question, here is the framework, along with what the move actually involves once you commit.

Staying put also needs a reason

The first change I made was requiring a stated reason for not migrating. If the only argument against Max is "it costs too much," that argument evaporates the moment revenue grows, and the dithering starts over. If instead the reason is "only one of my three triggers has fired," the decision can be re-checked every month against the same yardstick.

Since adopting the yardstick, the deciding itself takes no time at all. The agonizing, it turns out, lived entirely in the absence of criteria — never in applying them.

Staged migration: validate and deepen in different environments

My underlying premise is that Rork (built on Expo and React Native) and Rork Max are not a lower and higher tier of the same thing. They have different jobs.

Rork's strength is shipping to both iOS and Android at once with a low cost of rebuilding — which makes it the right environment for validating an idea. Max generates native Swift and reaches deep Apple capabilities: widgets, Live Activities, Core ML. That makes it the right environment for deepening an app whose demand is already proven.

Building an unvalidated idea directly on Max strikes me as the steps in the wrong order. Before you know whether something will land, what you need is not depth — it is the speed to ship again.

The three triggers that justify moving up

Here is the yardstick. Two or more triggers firing means the migration deserves serious consideration; one or zero means stay.

Trigger 1: you have actually hit the native-capability wall. Requests for widgets, Apple Watch support, or similar are physically present in your reviews and support inbox. Count only documented requests. Imagined demand — "users would surely love this" — does not count; in my experience, most imagined features go unused after shipping.

Trigger 2: revenue already absorbs the price difference. The gap is $175 a month. I apply a three-times safety factor: the app's own monthly net revenue should clear three times that gap, sustained — judged on a three-month median, excluding launch spikes. Ads or in-app purchases, either counts.

Trigger 3: the iOS skew is proven by data. If seventy percent or more of downloads and revenue come from iOS, specializing in Apple has a case. If the App Store and Google Play split is close to even, surrendering Android to chase native Swift gives up more than it gains. Read the ratio from store analytics, not from intuition.

The courage to stay on Expo

Worth stating plainly: most indie apps never see two triggers fire. That is not failure.

The Expo foundation has quiet, durable advantages — over-the-air updates that deliver small fixes same-day, and one codebase maintaining both platforms. For an app that never reaches the native-capability wall, $200 a month buys aspiration, not function. Fixed costs are easy to raise and hard to lower, so my default posture is: staying is the rule, migrating is the exception. For indie cash flow, that weighting has served me well.

June 2026 tailwinds: more exits, less lock-in

I revisited this framework this month because two things moved.

First, Android Studio gained a migration agent that converts React Native projects to native Kotlin automatically. Choosing Expo used to mean that a future move to native Android was effectively a rewrite; with an automated path visible, the risk of starting on Expo dropped another notch.

Second, at WWDC Apple opened its Foundation Models to smaller developers at no cost, for apps under two million first-time downloads. Rushing to Max purely for AI features now makes less sense — adding them incrementally from the server side is a realistic route.

Both changes point the same direction: the degree to which your first platform choice binds your future keeps shrinking. Validate light on Expo; let real performance data dictate the shape of the deepening later. The staged strategy got easier to hold this month, not harder.

Once you commit: turn the rebuild into an asset

When the triggers do fire, be clear about what follows: Max generates Swift, so the move is a reconstruction, not a port. What makes the reconstruction cheap is the evidence you banked during the validation phase.

I prepare three artifacts. Screenshots of every screen plus a navigation map of the existing app. A list of data structures and stored fields, written as export and import procedures rather than as a migration tool. And a digest of what reviews praised and complained about. With those three in hand, the instruction to Max stops being "recreate my old app" and becomes a requirements spec for an improved version, grounded in observed behavior.

Settle store continuity early, too. Will the rebuilt app ship as an update under the same bundle ID, or as a new listing? Carrying over your review history and download record argues for the former — in which case, verify the App Store Connect handover and certificate situation at the start of the migration, not in the final stretch.

Three numbers to watch on next month's dashboard

To run this as an operation rather than a recurring debate, three numbers suffice: the iOS-to-Android split of downloads and revenue; the count of native-feature requests arriving through reviews and support; and the app's monthly net revenue expressed as a multiple of $175. One spreadsheet row per month. After six months of rows, the migration question stops being a dilemma and becomes a glance.

If you have been stuck on the same fence, I hope the yardstick saves you some of the circling it saved me.

Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

If you found this article helpful, a small tip ($1.50) would mean a lot to us. Your support helps keep this site ad-free and covers server and hosting costs.

Related Articles

⟐ Business2026-05-03
Making a Rork App Sell on the App Store — ASO, Pricing, and IAP Strategy
How to take a Rork-built app from invisible to ranked, priced right, and earning real money on the App Store. ASO, price psychology, IAP design, and subscription tactics drawn from running indie apps solo.
⟐ Business2026-04-26
Taking a Rork Max Native App Up the App Store Charts — The Order I Build Ads, StoreKit 2, and Subscriptions
The order I follow to grow a Rork Max SwiftUI app into one that stays near the top of its App Store category: a single AdGate that decides when ads may show, StoreKit 2 Transaction.updates monitoring, and where I draw the lines on ASO and retention — with working code.
⟐ Business2026-04-26
Rork's Free Plan and Free Trial — What You Actually Keep When the Credits Run Out
What ends a Rork free trial is messages, not days. Export while it is still free, verify it builds outside Rork with a small script, then decide about paying.