RORK LABJP
BUILD — Rork Max runs real Macs in the cloud loaded with Xcode and the iOS SDK, writing SwiftUI, compiling, reading the errors and building again. That loop, not the code generation, is what lifts the outputNATIVE — What comes out is pure Swift and SwiftUI, not React Native. Reaching AR, Metal graphics and widgets that React Native cannot touch is the real gap between this and other buildersPLATFORMS — Coverage spans iPhone, iPad, Apple Watch, Apple TV and Vision Pro, plus iMessage. Worth a look if you want to start from a watch app or an extension rather than a phone screenCOMPANION — The Rork Companion app lets you check a generated build on a real iPhone without a paid Apple Developer account, lowering the bar for trying a first project end to endPRICING — Free to start, paid plans from $25 a month, and Rork Max on the $200 Max plan. Worth working out up front how many projects it takes to earn that backDEADLINE — From August 31, 2026, Google Play requires target API level 36 or higher for new apps and updates alike. Ten days out, and the targetSdkVersion of what you generate is yours to verifyBUILD — Rork Max runs real Macs in the cloud loaded with Xcode and the iOS SDK, writing SwiftUI, compiling, reading the errors and building again. That loop, not the code generation, is what lifts the outputNATIVE — What comes out is pure Swift and SwiftUI, not React Native. Reaching AR, Metal graphics and widgets that React Native cannot touch is the real gap between this and other buildersPLATFORMS — Coverage spans iPhone, iPad, Apple Watch, Apple TV and Vision Pro, plus iMessage. Worth a look if you want to start from a watch app or an extension rather than a phone screenCOMPANION — The Rork Companion app lets you check a generated build on a real iPhone without a paid Apple Developer account, lowering the bar for trying a first project end to endPRICING — Free to start, paid plans from $25 a month, and Rork Max on the $200 Max plan. Worth working out up front how many projects it takes to earn that backDEADLINE — From August 31, 2026, Google Play requires target API level 36 or higher for new apps and updates alike. Ten days out, and the targetSdkVersion of what you generate is yours to verify
Articles/Getting Started
Getting Started/2026-08-19Beginner

You Cannot Shorten Review, But You Can Still Choose the Moment Your App Goes Live

Review time is out of your hands. The moment your app appears in the store is not. Here is how the three App Store Connect release options, Google Play managed publishing, and eas submit fit together.

Rork539App Store87Google Play27Release3EAS Submit

The approval email arrived a little after three in the morning, my time.

I had submitted that version with "automatically release" still selected, so by the time I woke up the store listing had already flipped to the new build. My announcement post was still a draft. The replacement screenshots were scheduled for the next day. Nothing broke, and no user noticed — but the order of events had been decided by a review queue on the other side of the world rather than by me, and that detail stuck.

You cannot make review go faster. What you can do is stop treating "approved" and "live" as the same event. Both stores keep them on separate switches, and once you separate them, the unpredictability of the queue stops leaking into everything downstream.

Approved and live are two different switches

Here is what each store actually lets you control.

Aspect App Store Google Play
How long review takes Not under your control Not under your control
When an approved build goes live Three release options per version Managed publishing on or off
Where you set it The version page in App Store Connect Publishing overview in Play Console
Scope of the setting Per version — you pick it every submission Per app — set it once and it persists
Relationship to your submit tooling eas submit only uploads the build eas submit config has to agree with it

That last row is the one people miss. When you are shipping a Rork-exported project through EAS, it feels like eas.json should own the whole pipeline including the moment of release. It does not. The store-side setting sits above it, and changing only one of the two produces a mismatch that shows up as a failed submission rather than a helpful warning.

App Store Connect asks you to choose again every submission

The version page in App Store Connect offers three ways to release.

Option What happens after approval When it fits
Automatically release this version Goes live as soon as review clears Quiet bug fixes with no announcement attached
Manually release this version Sits at "Pending Developer Release" until you press the button Anything you want to coordinate with a post or another store
Automatically release after a date Goes live after review, but no earlier than the date and time you set A launch date that was fixed before the build was ready

The third option takes a date and time in your own local time zone. If you are coordinating with an audience in another region, do that conversion once, deliberately, rather than assuming the field means what you want it to mean. It is an easy place to land several hours off target.

My default is the manual option, for a plain reason: I do not get to choose what hour the approval lands. Review can clear at three in the morning or during a weekend. With manual release, an overnight approval simply waits. I open the store listing in the morning, look at it with my own eyes, and then publish — which keeps the announcement, the screenshots, and the build in the order I intended.

One practical caveat: this setting is stored per version, so the next submission starts fresh and you choose again. It is worth a line in whatever pre-submission checklist you keep, because it is exactly the kind of setting that gets skipped when you are focused on the build itself.

Turn on managed publishing before you need it

On the Play side, the equivalent control is managed publishing, and it is set per app rather than per release. With it enabled, changes that pass review collect in a "Ready to publish" list and stay there until you publish them yourself. With it disabled — the default — approved changes go live the moment they clear review.

The benefit that matters most in practice is not timing for its own sake. It is that store listing edits and app updates can be released together. Without managed publishing, a screenshot change can clear review in an hour while the binary is still being examined, leaving your listing describing a version nobody can download yet.

If you submit through EAS, there is one collision worth knowing about before you hit it. With managed publishing enabled, a plain eas submit run fails, because EAS tries to send the changes for review automatically and the store is configured to let you do that manually. You resolve it by declaring the intent in eas.json:

{
  "submit": {
    "production": {
      "android": {
        "serviceAccountKeyPath": "./secrets/play-service-account.json",
        "track": "production",
        "releaseStatus": "completed",
        "changesNotSentForReview": true
      }
    }
  }
}

Setting changesNotSentForReview to true narrows the EAS step to uploading the artifact. Sending changes for review and publishing them both stay in Play Console, where managed publishing expects them to be. If you are going to use managed publishing, treat these two settings as a pair — enabling one without the other is the whole failure mode.

The reverse is also worth checking. On an app where managed publishing is off, leaving changesNotSentForReview set to true means your upload succeeds and then quietly sits there, never entering review at all. That one is easy to inherit by copying an eas.json between a test app and a production app, and it looks like nothing went wrong until you notice the release never moved.

When a deadline is fixed, start counting from before review

Controlling the moment of publication does not make review time predictable. For updates with an externally imposed date — a target API level requirement, a seasonal campaign, a partner announcement — you still need to work backwards, and the backwards count should start before the submission, not after it.

Three allowances I build in every time:

  1. Budget one full rejection round trip. Planning as if the first submission clears means a single piece of feedback consumes the entire buffer. Assuming one round trip and being pleasantly surprised costs nothing.
  2. Push a TestFlight external build through first. Distribution to external testers requires Beta App Review, which is a separate queue from the production App Review — and it is only required for the first build of a version. Getting it through early surfaces the things reviewers most often push back on, like permission usage strings and metadata, while you still have room to fix them. Internal testers on your team skip this review entirely, which is convenient but also means an internal-only test tells you nothing about how a reviewer will read your submission.
  3. Set your own submission deadline a few days ahead of the launch date. Without a hard "submitted by" date, small refinements expand to fill the time you were holding for the review queue.

If the deadline you are working against is on the Android side, the three places I had to fix before a Rork project actually targeted API level 36 covers what I actually had to change. And if the submission itself is rejected over a number rather than a policy, Version code 1 has already been used — who owns that number, app.json or EAS? is the closest neighbour to this article.

What you can change today

Two of these do not require waiting for your next submission.

Open Play Console and turn managed publishing on for the app you ship most often. If you submit through EAS, add changesNotSentForReview to eas.json in the same sitting — it is an app-level setting, so once the pair is in place it keeps working for every release after this one.

App Store Connect is the one you re-select each time. Adding a single line to your pre-submission checklist ("set release option to manual") has been the only thing that reliably stops me from forgetting it.

While your build is sitting in the queue, there is very little left to do. But the first move after it comes out of the queue can still belong to you — and having that one move back makes the announcement, the listing update, and the release itself happen in the order you actually planned.

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

Getting Started2026-04-18
What Actually Happens When You Ship a Rork App to iOS and Android at the Same Time
A practical account of releasing a Rork app to both the App Store and Google Play simultaneously — covering screenshot specs, privacy manifests, SDK requirements, review timing, and what actually trips you up along the way.
Getting Started2026-08-15
The Apple-side setup Rork cannot do for you before your first release
Rork Max automates the build, the certificates, and the submission. Your Apple account, contracts, and tax details are still yours to fill in. Here is the order that avoids dead time.
Getting Started2026-04-20
3 Walls Every Rork Beginner Hits — And How to Actually Get Past Them
Every Rork beginner hits the same three walls: prompts that don't produce what you imagined, apps that break on real devices, and App Store rejections. Here's how to get past each one with practical, experience-based advice.
📚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 →