Your link works. You tested it. Then you run a campaign on Instagram and the install rate collapses.
The link is not broken. The environment is different.
What is happening
When someone taps a link inside a social app, most apps do not hand it to Safari or Chrome. They open a built-in browser: a cut-down view living inside the app.
These behave differently from a real browser in ways that matter:
Some do not complete the handoff to a native app. The link that should open your app instead loads in the embedded view.
Storage is often restricted. Deferred deep link matching frequently depends on storage or cookies that the embedded browser limits or clears.
Parameters sometimes get stripped or appended. Some platforms add their own tracking parameters; some drop yours.
Behaviour differs per platform and changes without notice. What works in one app's browser may not in another's, and both can change after an update.
What you can actually control
Test inside the apps you promote in. Not in Safari. Open the real Instagram app, tap the real link, on a real phone. This is the single most useful thing on this page.
Make the fallback good. If the deep link does not fire, whatever loads next should be a clear page with an obvious store button — not a generic homepage.
Keep parameters minimal. The more a link depends on, the more there is to strip.
Do not rely on detection. Attempts to sniff the environment break as platforms change.
What you cannot control
You cannot force these browsers to behave like a real one. Workarounds circulate constantly and expire just as fast.
The durable approach is to accept the environment and design a path that works inside it — one clear destination, a visible store button, and no dependence on a handoff that may not happen.
Why it matters more than it seems
If your campaigns run on social, the in-app browser is not an edge case. It is the normal case, and the one most likely to be untested because desktop testing never encounters it.
Frequently asked questions
- What is an in-app browser?
- The stripped-down browser a social app opens when you tap a link rather than handing it to your real browser. Instagram, TikTok, Facebook, LinkedIn and others all use one, and each behaves slightly differently.
- Why do deep links fail in in-app browsers?
- Some do not honour the handoff to a native app, some restrict the storage that deferred matching depends on, and some strip parameters. The link is fine; the environment refuses to complete the handoff.
- Can I force a link to open in the real browser?
- Not reliably. Various workarounds have circulated and most stop working as platforms change. Designing a fallback that works inside the in-app browser is more durable than fighting it.
- How much traffic does this affect?
- For anything promoted on social, most of it. If a campaign runs on Instagram or TikTok, the in-app browser is the default environment rather than an edge case, which is why it deserves testing before launch.
Read more
Troubleshooting · 2 min read
Firebase Dynamic Links is gone: what to migrate to
Firebase Dynamic Links shut down on 25 August 2025 and existing links now return 404. Here is what actually replaced it, what you lose with each option, and how to migrate without breaking links already in the wild.
Troubleshooting · 4 min read
In-app browsers are where install links break
Instagram, TikTok, and LinkedIn open links in their own embedded browsers, which handle redirects and URL schemes inconsistently. Here's what breaks, how to detect it, and how to build a link that survives.
Troubleshooting · 4 min read
Why your app install link isn't working: a diagnostic checklist
Work through the failure modes in order — wrong destination, in-app browser blocking, broken deep-link association, stripped parameters, and dead store URLs. Each has a distinct symptom.


