RORK LABJP
PLAY — Google Play's target API level 36 requirement took effect yesterday, August 31. From today, new apps and updates must target Android 16VISIBILITY — Apps still on API 35 stay listed but disappear for users on newer Android versions. No error is raised; new installs simply fade, which makes the change easy to missEXTENSION — If you missed the deadline, an extension through November 1, 2026 can be requested in Play Console — best filed alongside a concrete migration planAPPLE — On the Apple side, the event lands September 9 and iOS 27 is reported to ship September 14. Testing generated apps on iOS 27 hardware before release week is time well spentEXPO — Expo released expo-paste-input on August 28, a native module that brings image, GIF, and sticker paste to React Native TextInputEAS — EAS Observe reached general availability on August 20, putting crash and performance monitoring on the same EAS platform as builds and updatesPLAY — Google Play's target API level 36 requirement took effect yesterday, August 31. From today, new apps and updates must target Android 16VISIBILITY — Apps still on API 35 stay listed but disappear for users on newer Android versions. No error is raised; new installs simply fade, which makes the change easy to missEXTENSION — If you missed the deadline, an extension through November 1, 2026 can be requested in Play Console — best filed alongside a concrete migration planAPPLE — On the Apple side, the event lands September 9 and iOS 27 is reported to ship September 14. Testing generated apps on iOS 27 hardware before release week is time well spentEXPO — Expo released expo-paste-input on August 28, a native module that brings image, GIF, and sticker paste to React Native TextInputEAS — EAS Observe reached general availability on August 20, putting crash and performance monitoring on the same EAS platform as builds and updates
Articles/Dev Tools
Dev Tools/2026-07-16Advanced

Regenerable Zones in Rork Max Code: Keeping the Freedom to Rebuild

Generated code carries an invisible asset: the option to throw it away and rebuild it. Every hand edit quietly expires that option. Here is how I track it with a ledger and CI checks across six live apps.

Rork Max232Swift47Architecture22Long-term maintenanceIndie development

Premium Article

At the end of June I changed one line in a wallpaper browser I had generated with Rork Max. Corner radius from 12 to 16. Not worth writing down.

The next week I wanted a filter on that screen, so I added a sentence to the prompt and regenerated it. The new screen worked fine. The corner radius was back to 12.

I lost 4 points. But I stopped there, because something else had happened. Until the week before, that screen had been a screen I could throw away and rebuild. The moment I touched one line, it became a screen that loses something when rebuilt — and nothing anywhere recorded that change.

When you run apps solo as an indie developer, this kind of quiet decay is the dangerous kind. This piece is about deliberately keeping — and deliberately giving up — the option that rides along with generated code.

Generated code ships with an option that expires

Code you write by hand is a maintenance obligation from the first keystroke. There is no option attached. You either fix it or delete it.

Output from a tool like Rork Max is different. A freshly generated file comes with the option to throw it away and rebuild. When the spec changes, instead of chasing a diff you rewrite the prompt and emit the whole thing again. That is not merely convenient — it is a right to buy your own hours back.

The option has a shelf life. Every hand edit quietly expires a little of it. The moment I changed 12 to 16, regenerating that screen became "an operation that loses 4 points." If someone later adds a VoiceOver label, regenerating becomes "an operation that loses accessibility work." Three months on, nobody knows whether the screen is still safe to rebuild — including the person who made the edit.

I run six wallpaper apps in parallel. The first thing that actually hurt after I started using generated code was not credit burn or output quality. It was not knowing which files still carried a live option. Without a ledger you default to hand-fixing when in doubt. Hand-fixing expires more of the option. Nobody stops the cycle, and the $200/month gradually turns into an empty promise.

Three states, not two

As long as you sort files into "generated" and "not generated," this decay is invisible. Split it three ways and it shows up.

StateDefinitionHow to treat it
regenerableUntouched since generation. The ledger's prompt plus contract can produce an equivalent fileAn asset. Protect the boundary
driftedHand-edited, but the delta is written down nowhereA liability. Never leave it here
sealedDeliberately promoted to hand-maintained. Removed from the prompt and from regenerationOrdinary code. Guard it by hand

Drifted is the dangerous one. Regenerate it as if it were regenerable and something disappears silently. Hand-maintain it as if it were sealed and you never collect the benefit of generation. Neither assumption holds, which is the definition of a state you cannot act on.

The operating goal is simple: drive drifted toward zero. When you want to hand-edit, pick one of two paths.

  1. Fold the change back into the prompt or the contract, keeping the file regenerable
  2. Record the decision in the ledger, promote the file to sealed, and guard it by hand from now on

Those 4 points belonged in path one. A single line in the prompt — "corner radius 16" — would have settled it. I did not do that. I fixed my working copy only. I had not postponed a decision so much as failed to notice I was making one.

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 working ledger that tracks every generated file as regenerable, drifted, or sealed — plus the mechanism that decides the state for you
A 40-line CI script that fails the build when a regenerable zone reaches into billing, persistence, or domain code
The 2 metrics from a quarterly regeneration drill, and how to judge whether $200/month for Rork Max is buying a real option or an empty one
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.

or
Unlock all articles with Membership →
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 $15 for lifetime access
View Membership →

Related Articles

Dev Tools2026-06-16
Designing CloudKit Sync in a Rork Max Native App — Handling Conflicts and Deletes
You want the same data on iPhone and iPad. When you add CloudKit to a Swift app generated by Rork Max, the hard part is not saving — it is conflicts and deletes. Here are the design decisions I settled on.
Dev Tools2026-06-15
Drawing the Line Between Rork Max's Swift Output and the Expo Build
Rork Max now generates native Swift, while the standard Rork keeps producing Expo (React Native) apps. Here is how to split responsibilities between the two engines inside a single app business, viewed from real maintenance cost.
Dev Tools2026-07-18
Your AR Furniture Is Gone by Morning — Persisting Placements with ARWorldMap
AR apps generated by Rork Max lose every placed object on relaunch. Here is the design that fixes it: when to save an ARWorldMap, how to encode custom anchors, how to handle the relocalization wait, and what to do when relocalization simply never lands.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →