◉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)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●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)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●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/Getting Started
◈ Getting Started/2026-07-01Intermediate

Why a Rork Companion App Stops Opening After a Few Days — and How to Fix It

An app you pushed to your iPhone with Rork Companion shows 'Untrusted Developer,' or simply refuses to launch a few days later. Here is why free Apple account signing expires after about seven days, and the practical fixes — trust it, re-push, or move to a paid account — from an indie developer's point of view.

Rork Companion10Device Testing8Apple Developer4Code SigningTroubleshooting43

I pushed an app to my iPhone with Rork Companion on a Friday night. When I tapped it the following Tuesday, it wouldn't open — the icon flashed and closed. Settings said, "This app cannot be opened because the developer could not be verified." Something that had been running fine went silent after just a few days off. When I was a newer indie developer, I lost half a day assuming it was a bug in my own code.

The cause wasn't the code. It was the signing expiry. For anyone stuck at the same wall, here is what is actually happening, how to bring the app back on the spot, and how to stop it from repeating.

The symptom — "it worked yesterday, now it won't open"

There are two common patterns.

The first appears right after you transfer the build: "Untrusted Developer." This shows up once.

The second is the annoying one. After a while — usually around seven days — tapping the icon bounces you back to the home screen, or you see "App is no longer available." The icon is still there, but the inside is dead.

The console message is usually about signing:

The operation couldn't be completed.
(NSCocoaErrorDomain error 4099)
... valid provisioning profile for this executable was not found.

You can chase this "bug" through your code forever and never fix it, because the cause lives in a different layer.

When it happens — are you signing with a free account?

This occurs when you run a build signed with a free Apple ID (a Personal Team) rather than the paid Apple Developer Program ($99/year). Being able to test on a real device without a paid account is a genuine strength of Rork Companion, but that signing inherits the free-tier limits directly.

The main free-tier limits are these:

ItemFree Apple ID (Personal Team)Paid Apple Developer Program
Provisioning (signing) validityAbout 7 days1 year
"Trust" step on first launchRequiredRequired (varies by method)
Apps installed at onceUp to 3Effectively unlimited
TestFlight / production pushNoYes
CostFree$99/year

So "stops opening after a few days" is not a defect — it is how free signing works. Once seven days pass, the signature expires and iOS refuses to run the app.

Bring it back on the spot — a two-step fix

1. Clear the first "cannot be verified" prompt

The Untrusted Developer message right after transfer goes away once you trust the developer on the device.

Open Settings → General → VPN & Device Management (on some devices, "Profiles & Device Management"), select the developer app under your Apple ID, and tap "Trust." That clears the first-launch wall.

Once trusted, other apps signed by the same Apple ID usually won't ask again.

2. If it expired after 7 days, re-install to re-sign

Expiry is not fixed by trusting again. The right move is to re-sign, i.e. re-install the build. Transfer it to the device once more from Rork Companion, and it is overwritten with a fresh signature and a new expiry, so it opens again.

If you have the signed build on hand (an .ipa or its embedded.mobileprovision), you can read the expiry with this command. Knowing "how many days are left" before a deadline saves you from scrambling.

# Read the ExpirationDate of embedded.mobileprovision inside an unpacked .app/.ipa
security cms -D -i embedded.mobileprovision \
  | plutil -extract ExpirationDate raw -o - -

I keep a note of the expiry date for whatever build is on my test device, and re-transfer in the morning when it gets close. You tend to notice an expiry exactly when you're in the biggest hurry.

How to stop it repeating

Even once you know the fix, re-transferring every seven days quietly adds up. To keep my rhythm, I split the work like this.

Day-to-day checks run in the browser's live simulator, not on a device. Most layout and navigation work is perfectly visible there. I save the real device for the parts you can only judge on hardware — camera, haptics, performance — and nothing else. That cuts down how often the expiry gets in the way.

Then, when you reach the stage of handing the app to an outside tester, or trying production push or real in-app purchases, that is the $99 switch point. Free signing can't put a build on TestFlight, so the moment you need someone else to test it, you hit the free-tier ceiling. Don't push your luck here — register a few days before the deadline. Some days the review account takes time to activate.

Telling the layers apart

When you meet "it won't open," check one thing before suspecting your code: when did you last transfer it to the device? If it was more than seven days ago, the cause is almost certainly signing expiry. Re-transfer; if it opens, that's confirmed. Only if that fails should you go looking inside the build.

Just not confusing the layer saves half a day. I'd be glad if the half-day I once burned becomes a few minutes for you.

References

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-09-11
Same Wi-Fi, No Preview: Where I Look Before Rebooting the Router
When Rork Companion scans the QR code and nothing arrives, there are places worth checking before you restart anything. Four settings on the iPhone, two on the router, and a one-minute test that cuts the search space in half.
◈ Getting Started2026-09-04
A Screen That Runs in Rork Companion Is Not Yet a Finished Screen
There is a gap between the app you hold in your hand through Rork Companion and the build that eventually reaches the App Store. Here is why free signing expires after a few days, what Companion can and cannot answer for you, and a small badge that keeps you honest about which build you are looking at.
◈ Getting Started2026-08-29
Nine Expo patches shipped in thirty days. Which one is your app actually running?
A tilde in package.json does not mean you are on the newest patch. The file that decides what actually gets installed is package-lock.json. Here is what npm did when I ran the checks myself.