●CLOUD — Rork Max compiles native Swift on a fleet of cloud Macs, so you never download Xcode or need to own a Mac●PLATFORM — Rork Max targets iPhone, iPad, Apple Watch, and Vision Pro, and reaches games, widgets, and Live Activities●SHIP — Build in the browser, preview through a streaming simulator, install on device via QR code, and submit to the App Store without leaving Rork●SPLIT — Regular Rork generates cross-platform apps with React Native and Expo. Reach for it to ship broadly and fast, and for Max when you need Apple-specific depth●CREDIT — The free tier works out to roughly five prompts a week. It helps to budget the cost of trying something separately from the cost of finishing it●PRICE — Rork Max sits on the $200/month Max plan, while regular Rork starts free with paid plans from $25/month●CLOUD — Rork Max compiles native Swift on a fleet of cloud Macs, so you never download Xcode or need to own a Mac●PLATFORM — Rork Max targets iPhone, iPad, Apple Watch, and Vision Pro, and reaches games, widgets, and Live Activities●SHIP — Build in the browser, preview through a streaming simulator, install on device via QR code, and submit to the App Store without leaving Rork●SPLIT — Regular Rork generates cross-platform apps with React Native and Expo. Reach for it to ship broadly and fast, and for Max when you need Apple-specific depth●CREDIT — The free tier works out to roughly five prompts a week. It helps to budget the cost of trying something separately from the cost of finishing it●PRICE — Rork Max sits on the $200/month Max plan, while regular Rork starts free with paid plans from $25/month
Will Rork Max's $200 a Month Pay for Itself? Decide It With a Formula
When you are torn over Rork Max at $200 a month, here is a break-even formula, a script that runs a sensitivity analysis, and a way to judge the timing by three months of buildup rather than a single month—with notes from indie development.
"$200 a month feels steep, but if it unlocks native features, maybe it pays for itself"—I left that hesitation sitting on feel for far too long. Between Rork (the Expo edition) at $25 a month and Rork Max at $200, the gap is $175 a month, which is $2,100 a year. In indie development, deciding this by gut usually lands you on the side you regret.
The root of the hesitation is never putting the $200 next to the extra revenue your app would actually generate. So I turned the feel entirely into numbers and let break-even alone make the call. Once it is numbers, the hesitation goes remarkably quiet.
Compare the "extra revenue the gap unlocks," not the "price difference"
The common mistake is judging the $200 monthly fee itself as cheap or expensive. What you should actually compare is the $175 gap you add by moving from Rork to Rork Max, and the extra revenue only the features that gap unlocks can produce.
The signature things only Rork Max can deliver are native features that Expo's standard scope struggles to reach: Live Activities, Dynamic Island, HealthKit / HomeKit integration, App Clips, on-device inference with Core ML. If those are merely "nice to have," the gap will not be recovered. The gap only carries meaning when it is "an app that does not work without this."
Open your app's spec sheet once and underline the Rork Max–only features in red. If you cannot draw a single red line, you already have your answer: stay put. Only when a red line appears is it worth moving to the next calculation.
Build the break-even formula on "take-home"
The decision collapses into one very simple line.
extra net monthly revenue needed > $175 (= 200 − 25)
But app revenue has to be counted as take-home after store fees and ad-network shares. Calculate it at face value and a decision that looked profitable collapses in production. What tripped me up again and again in indie development was always this gap between face value and take-home.
For subscriptions, factor Apple's cut (15% if you are enrolled in the Small Business Program, 30% in year one if you are not); for ads, expect the displayed rate itself to fluctuate. Whether you can plausibly clear the $175 gap on a take-home basis—that is the only axis. Nail that down, and the rest is just multiplication.
✦
Thank you for reading this far.
Continue Reading
What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.
WHAT YOU'LL LEARN
✦A one-line break-even test that judges the $175 gap on take-home revenue, plus a script that runs conservative, base, and optimistic scenarios at once
✦How to estimate the three revenue paths realistically—ad eCPM, subscription churn, and store fees on a take-home basis
✦A worked habit-tracker example that finds the right upgrade moment from three months of buildup, not a single month
Secure payment via Stripe · Cancel anytime
✦
Unlock This Article
Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.
Estimate the three revenue paths' take-home in realistic ranges
Fill the break-even formula with optimism and any app looks profitable. Here are the conservative estimation ranges I use in indie operations. The numbers move a great deal by market, region, and season, so treat them only as starting values.
Revenue path
Main drivers of take-home
Starting estimate (conservative)
Subscription
Price, churn, store fee
Take-home price = list price × 0.85 (Small Business). Start monthly churn at 5–10%
Ads
eCPM, impressions, geo mix
Interstitial eCPM roughly a few to low-teens dollars in developed markets. Banners an order of magnitude lower
One-time
Price, conversion
Count only the lift from the new feature. Do not credit existing sales to the gap
The key is to enter, for all three paths, only "the lift from Rork Max native features." Mixing in revenue you already earned on the Expo edition bends the math conveniently in your favor. The lift only, and on a take-home basis. Hold those two lines and your estimate sharpens noticeably.
On ads, it is worth naming how much eCPM swings by country and time of day. I run mediation to let several networks compete, and even then the month-to-month range is not small. That is why I treat ad revenue as "welcome upside" and build the break-even backbone on subscription take-home—in indie development, that is the safer footing.
A copy-paste script, with sensitivity analysis
So you can try it while swapping numbers, here it is as a small Node script. It sums the three paths on take-home, and runs conservative, base, and optimistic scenarios at once so you can see how far the call depends on your assumptions.
// rork-max-breakeven.mjs run: node rork-max-breakeven.mjs// Rewrite with your own app's assumed valuesconst base = { rorkMonthly: 25, // Rork (Expo edition) monthly (USD) rorkMaxMonthly: 200, // Rork Max monthly (USD) // Subscriptions (enter ONLY the lift from Rork Max native features) newSubscribers: 30, // extra monthly subs this feature drives (base case) subPrice: 4.99, // monthly price (USD) appleCut: 0.15, // store fee (Small Business = 15% = 0.15) // Ads (net lift from sessions the native feature drives, take-home) extraAdRevenue: 40, // extra monthly ad revenue (base case) // One-time extraOneTime: 0, // feature-driven one-time net lift (USD/mo, take-home)};const gap = base.rorkMaxMonthly - base.rorkMonthly; // the gap to recoverfunction addedNet(v) { const subNet = v.newSubscribers * v.subPrice * (1 - v.appleCut); return subNet + v.extraAdRevenue + v.extraOneTime;}const breakevenSubs = Math.ceil( (gap - base.extraAdRevenue - base.extraOneTime) / (base.subPrice * (1 - base.appleCut)));const scenarios = { "Conservative (0.6x)": 0.6, "Base (1.0x)": 1.0, "Optimistic (1.4x)": 1.4,};console.log(`Gap to recover: $${gap}/mo`);console.log(`Subs needed (rough): ${breakevenSubs}/mo (after ads & one-time)\n`);for (const [label, k] of Object.entries(scenarios)) { const v = { ...base, newSubscribers: base.newSubscribers * k, extraAdRevenue: base.extraAdRevenue * k, }; const net = addedNet(v); const margin = net - gap; const mark = margin >= 0 ? "in the black" : "not recovered"; console.log( `${label}: take-home $${net.toFixed(2)} / net $${margin.toFixed(2)} -> ${mark}` );}
Enter conservative values first. Stack newSubscribers optimistically and any app looks profitable. If the "Conservative (0.6x)" case still stays in the black, that call is genuinely solid. If it only turns positive under "Optimistic (1.4x)," that is not profit—it is a wish. I make "at least break even under the conservative scenario" my condition for moving up.
Work one all the way through — a habit-tracker app
Left abstract, it is hard to see where this bites, so let me run one through. A habit tracker whose selling point is "easier to keep going," built on Rork Max with Live Activities and a home-screen widget. Those are hard to reach on the Expo standard—exactly where the gap earns its meaning.
Take a $4.99 price, a 15% fee, and 7% monthly churn, and assume the widget-driven retention gain adds 25 new subscribers a month. Here is where many people go wrong: they look at the first month alone, see "25 won't cover it," and give up. Unless they churn, subscribers live on into the next month—so in reality they accumulate.
Elapsed
Retained subs (after 7% churn)
Subscription take-home
Ad take-home
Net vs. the $175 gap
Month 1
25
~$106
~$20
−$49 (not recovered)
Month 2
~48
~$205
~$20
+$50 (crosses into black)
Month 3
~70
~$296
~$20
+$141
Look at month one alone and it reads "not recovered"—on gut, you might have retreated right there. But compound it at 7% churn and it clears the gap by month two and reaches a comfortable margin by month three. Decide the timing on a single-month snapshot and you throw away all of that buildup. That is exactly why the call should be made on at least a three-month horizon.
Read subscriptions as "buildup," not a single month
What the example shows is a structural point: in a subscription-led app, break-even is not "a single point in month one" but "a line you cross over time." Get this wrong and you discard apps with real runway on their first-month numbers.
The thing that most governs the buildup is not new acquisitions but churn. Even at the same 25 acquisitions a month, 5% versus 15% churn paints an entirely different picture six months out. In my own experience, what finally matters in monetization is not the flash of acquisition but the quiet pull of a low churn rate. Rork Max native features—widgets and Live Activities, those "gentle daily touchpoints"—work precisely on that churn. The main battleground for recovering the gap is not the momentum of new users but the stickiness of retention.
List the non-numeric factors once, too
Break-even is the main axis, but some factors do not show up in dollars. The work time saved by Rork Max's in-browser iOS simulator and two-click publish, the lightness of shipping to every Apple device without owning Xcode—converted to an hourly rate, these offset part of the gap.
But overrate them and break-even quietly erodes. I capped it: "time-saving benefit counts for at most 30% of the gap," and decided the remaining 70% must always be recovered in real revenue. Convenience clouds judgment, so I deliberately hold its weight down. Acknowledging value outside the numbers, and surrendering the decision to it, are two different things.
Staying put is an equally valid choice
If the math says you cannot recover the gap, staying on Rork is not a loss. Paying $2,100 a year for a feature that does not recover is the surer way to drain an indie developer's stamina. Same as the idea of migrating in stages: it is enough to move up once the feature you need has a clear path to profitability.
Start by entering your app's actual numbers from the past month, conservatively, into the script above. When even the conservative scenario nears break-even and three months of buildup draws a picture that clears the gap, that is the right time to move up to Rork Max. I hope this gives a basis for anyone stuck at the same pricing wall. Thank you for reading.
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.