How Locked In Are You? Run the Exit Test Before You Need It
The platform got you here, and mostly it's been good. But something has started the clock in your head — a pricing change, an acquisition rumour, a limit you keep hitting, or an investor asking "what happens if they shut down?" You don't necessarily want to leave. You want to know what leaving would cost, so the staying is a choice.
How trapped you are on a platform is not a feeling — it's a measurable list: the parts of your app that only exist inside the platform's walls are exactly the parts an exit would have to rebuild. You can draw up that list tonight by attempting the exports yourself, and knowing the number is valuable even if you never leave, because unpriced exits shape decisions silently.
The signs show up before the incident does.
None of these proves you have the problem. Each one raises the odds — and every one of them is checkable in the twenty-minute protocol below.
- You've never actually tried the exportYou believe your data and code can leave because the platform says so — but nobody has ever run the export and opened the result. Beliefs about exits are worth exactly what they've been tested for.
- Core functions have no address outside the platformLogin, the database, file storage, scheduled tasks — asked where each actually runs, every answer is "inside the platform". Each such answer is a component an exit must rebuild from scratch.
- Pricing changes land on you, not with youWhen the platform reprices or repackages, you adjust your budget rather than your options — because there are no options. Negotiating power is exactly proportional to your ability to leave.
- The roadmap bends around the platformFeatures get shaped by what the platform makes easy rather than what customers asked for. The walls have started doing your product design.
- Diligence questions about it make you vagueWhen an investor or acquirer asks about platform dependency, the answer goes soft. Sophisticated buyers read unpriced exits as unmanaged risk — because that is what they are.
One missing layer explains every symptom above.
The platform isn't what traps you — the parts of your app that exist only inside it are.
Every convenience you adopted — managed login, built-in database, integrated storage, one-click jobs — was also a component built in a form that runs nowhere else. None of that was a mistake; it's why you shipped fast. But until those parts are counted, the exit has no price — and a move you can't price is a move you can't make, which quietly converts every platform decision into one you must simply absorb.
This is not a defect of any one tool — it follows from how prompt-built apps come to exist, and the platform guides show how the same gap surfaces on each stack.
It isn't a bug count. It's an open door.
Lock-in charges rent even if you never leave. It surfaces as pricing changes you absorb rather than negotiate, a roadmap bent around the platform's shape, and a dependency line in every diligence conversation — acquirers and investors price unquantified platform risk into their offers, whether or not you ever intended to move. The asymmetry is what makes this page cheap insurance: measuring the exit costs an evening; needing the exit unmeasured, on a deadline someone else set, costs whatever it costs.
If something has already gone wrong, the first-response guide covers the first hour. If nothing has — that is exactly the moment this is cheap to fix.
Run the audit yourself — tonight.
No developer, no tooling, no permission needed — this is your own app. Work through the sheet in order; if a check fails, do it once more before believing it. What you find is yours to act on, with us or without us.
Export your data — then actually open the file
Run itFind the platform's export function and run it for real. Open what comes out and inventory it against what your app holds: every table, user accounts, uploaded files, configuration. Check the format too — standard formats any tool can read, or something bespoke?
What the result meansA complete export in standard formats is a pass — data is usually the most portable layer. Gaps are the finding: whatever the export omits — files, user records, configuration — is data that today exists only inside the platform, and you've just discovered that on a quiet evening instead of during a migration.
Export your code — and check it's really yours
Run itDownload the source code or connect the code export the platform offers. Open the first few files — you're not reading code, just answering two questions: is this the real, complete source, and does it visibly lean on things with the platform's name on them?
What the result meansComplete source using ordinary open technologies is a pass. Code laced with platform-specific services isn't a failure — it's the measurement: each platform-tied piece is one item on the exit's rebuild list. No code export at all puts you at the far end of the lock-in scale, and that's worth knowing tonight.
List what would simply stop existing if you left
Run itWalk the app's functions — login, database, file storage, scheduled jobs, forms, emails, payments — and for each ask one question: where does this actually run? Write two columns: "portable" and "exists only inside the platform".
What the result meansThe second column is your lock-in, itemised. Short list = an exit is mostly moving. Long list = an exit is mostly rebuilding. Either way you now hold the document that turns "how trapped are we?" from a mood into a work estimate — most founders have never written it.
Would your users survive the move?
Run itTwo ownership checks: first, confirm who controls your domain name — registered in your own account, or provided by the platform? Second, ask (support, docs, or your AI tool) whether user accounts including password credentials can be exported from the platform's login system.
What the result meansOwn domain plus exportable accounts is a pass. A platform-owned address means your identity moves when the platform says so. And if password credentials can't leave the managed login system — often they can't, by design — a migration means every user resets their password: survivable, but a real cost that belongs in the exit price, not discovered during one.
Put a number on the exit — tonight, roughly
Run itTake your "exists only inside the platform" list from the third check and ask any engineer you know — or an AI assistant — to rough-estimate rebuilding each item on ordinary infrastructure. Sum it. Precision is not the point.
What the result meansAny defensible number is a pass, because the alternative isn't a better number — it's no number. An exit estimated even roughly is a strategic option you hold; an exit never estimated is a fear that silently shapes pricing responses, roadmap choices and diligence answers. The rough number is what turns the platform relationship back into a decision.
Each of these maps to a scored item in the production-readiness framework. A pass on all of them rules out the loudest failure class — the full audit covers what a browser can't reach, at a fixed price.
Sealed from the data layer up.
The order matters more than the effort: enforcement first, credentials second, proof third. Done in the wrong order, the work gets done twice while the exposure stays open. The same discipline runs through everything we deliver.
Get my scorecard- 01
Map the dependency completely
Engineers produce the definitive version of your two-column list — every platform-only component, its role, and what rebuilding it on open infrastructure involves — priced and ranked. That map, the real answer to "how trapped are we?", arrives within 72 hours.
- 02
Secure the assets that must never be hostage
Automated, scheduled exports of data and code to storage you control, and the domain confirmed in your own hands. Whatever happens later, the irreplaceable things now exist outside the walls — this step alone defuses the shutdown scenario.
- 03
Draw a seam through the app
Platform-specific services get isolated behind thin interfaces of your own, so the rest of the codebase stops knowing which platform it runs on. This is the highest-leverage engineering in the whole sequence: it makes every future step smaller, whether or not you ever take it.
- 04
Move only what earns its move
Components migrate to portable infrastructure selectively — where cost, limits or risk justify it — while the platform keeps doing what it does well. Portability is a dial, not a door; full migration is rarely the rational setting.
- 05
Keep the exit rehearsed
The exports run on schedule, the dependency map stays current as features ship, and the exit estimate gets refreshed when the platform's pricing or terms shift. An exit you could execute is negotiating leverage you hold every single month — without ever using it.
The framework's heaviest weights sit exactly here.
25 / 100
points of the production-readiness score sit in the categories this problem touches.
See every check and weight- 10 ptsData protection & recoveryBackups that have never been restored are not backups. This category is mostly about proving the recovery path exists.
- 15 ptsDeployment & operationsThis is the category prototypes skip entirely, and the one that decides whether a bad release costs you ten minutes or a weekend.
Never leaving may well be the right call — but make it a call: run the exports tonight, write the two-column list, put a rough number on the exit, and from then on every platform decision is negotiation from a priced position instead of dependence from an unpriced one.
The questions that follow.
QIs building on one of these platforms a mistake, then?
QWhat actually happens to my app if the platform shuts down or gets acquired?
QShould I migrate off the platform now, while it's calm?
QThe platform advertises that there's no lock-in and code export is built in. Can I relax?
QHow does lock-in affect an acquisition or a fundraise?
QWhat does the dependency assessment cost, and what do I get?
- Which failures to expect from the platform that built your app
- Locked in and the bill is climbing too? The cost-control guide
- The production-readiness framework — every check we score, with weights
- Best agency to scale a vibe-coded app — how to choose, honestly
- SecurityIs Your AI-Built App Exposing Data? Here's How to Find Out
- DatabaseYour App Was Fast. Now It Crawls. Here's What's Actually Happening
- PerformanceWill Your App Survive Its First Busy Day? Find Out Before It Happens
- DeploymentOne Deploy From Disaster: Could You Put Yesterday's Version Back?
- All problems →
- Vibe-to-Production →
Nobody has ever regretted sending us their repository.
Handing private code to anyone is a real decision, so everything below is settled before the audit starts rather than on request.
- An NDA is signed and returned before you send a linkStep one, every time
- Access is read-only, scoped to one repository, and time-boxedRevoked on delivery
- Our copy of your code is deleted when the report landsNothing retained
- We build for clients and never launch anything that competes with themNever has happened
Send us the repository. We'll tell you what's missing.
Fixed price, 72 hours to findings, and a report you can act on with or without us. Nothing is committed until you have read it.
- Give us a call+1 (424) 283 4679Straight to an engineer, not a switchboard.Reach out
- WhatsAppStart a chatFastest if you are in a different timezone to us.Reach out
- Emailhello@indianic.comSend the repo link and anything you already suspect.Reach out
- Get my scorecardFindings in 72 hoursThe audit, scored against every check on this page.Start the audit
NDA signed before you send anything · read-only access, revoked when the report lands · our copy deleted on delivery.