You test your install link. It works perfectly. You ship it. Installs are lower than expected and nobody can reproduce a problem.
The link is probably failing inside in-app browsers — and failing silently, which is why you never hear about it.
What an in-app browser is
When someone taps a link inside Instagram, TikTok, LinkedIn, or Facebook, it generally does not open in Safari or Chrome. It opens in a browser embedded inside that app, controlled by that app.
These are real browsers, but with different constraints, different defaults, and behaviour that changes between versions. Crucially, this is where most social traffic lives — so it is not an edge case, it is the main path.
What specifically breaks
Custom URL schemes. myapp:// is frequently blocked or ignored. The tap appears to do nothing.
Chained redirects. Some embedded browsers handle multi-hop redirects poorly, particularly when a hop switches protocol or domain.
Query parameters. Some strip or rewrite parameters, which quietly destroys attribution — the redirect still works, so nothing looks broken, but your source data is gone.
JavaScript-based redirects. Timing-dependent redirects behave unpredictably when the browser suspends or throttles background execution.
Store URL handling. Whether an App Store link opens the native store app or renders a web page inside the embedded browser varies by platform and version.
Cookies and storage. Often partitioned or restricted, so anything depending on persistence across a redirect may not survive.
How detection works
In-app browsers usually announce themselves in the User-Agent. Recognisable tokens include Instagram, FBAN/FBAV for Facebook, and Line. TikTok and LinkedIn have their own markers.
Two caveats worth internalising:
Detection is heuristic. Tokens change without notice, new apps appear, and some embedded browsers are hard to distinguish from the real thing.
So do not depend on it. Use detection to improve the experience, but design the flow so it still works when detection fails. That principle matters more than any specific token list.
Building a link that survives
Prefer https store URLs. https://apps.apple.com/... and https://play.google.com/... are handled far more reliably than custom schemes.
Minimise redirect hops. One server-side redirect to the destination. Every additional hop is another chance to be dropped.
Redirect server-side, not in JavaScript. A 302/307 from the server is handled before any client-side quirks apply.
Always render a visible fallback. If the automatic redirect does not fire, the visitor should see a clear "Open in App Store" button rather than a blank page. This single element is the difference between a recoverable failure and a lost install.
Keep parameters short. Long query strings are more likely to be truncated or rewritten.
Offer "open in browser" guidance where appropriate. Some flows genuinely work better outside the embedded browser, and most in-app browsers expose a menu option for it.
How to actually test
Testing in Safari and Chrome tells you almost nothing about this. Do it properly:
- Post the link in an Instagram story or bio and tap it from a real phone
- Send it in a TikTok message and tap it
- Try LinkedIn, which is noticeably stricter
- Repeat on both iOS and Android — same app, different behaviour
- Test with the app installed and uninstalled
- Confirm your source parameters survive to the analytics layer
That last one catches the silent failure: the redirect works, the user installs, and your attribution shows nothing. Everything looks fine until you try to explain where installs came from.
Signals you have this problem
- Click counts look healthy but installs lag
- Traffic from one social platform converts far worse than others with no
obvious explanation
- Attribution data is missing specifically for social sources
- Nobody reports a bug, because the user just closes the page and moves on
Silence is the characteristic symptom. In-app browser failures do not generate complaints.
How Bridgly handles it
Bridgly's routing runs server-side and returns a single redirect to a standard https store URL rather than a custom scheme — the two choices that account for most in-app browser failures.
Source tracking is preserved through the redirect, so attribution survives, and the routing includes fallback handling for cases where the automatic redirect does not fire.
Start free · Read: deep links vs universal links vs App Links
The short version
- Social traffic mostly runs through embedded browsers, not Safari or Chrome.
- Custom schemes, chained redirects, and long query strings are the usual
casualties.
- Redirect server-side, once, to an
httpsstore URL. - Always provide a visible manual fallback.
- Test inside the actual apps, on both platforms — failures here are silent.
Frequently asked questions
- Why does my app link not work from Instagram?
- Instagram opens links in its own in-app browser rather than Safari or Chrome. Embedded browsers frequently block custom URL schemes such as myapp://, handle redirects inconsistently, and sometimes strip query parameters. A link that works in Safari can fail there without any visible error.
- How do I detect an in-app browser?
- In-app browsers usually identify themselves in the User-Agent string with recognisable tokens — for example Instagram, FBAN and FBAV for Facebook, and Line. Detection is heuristic rather than exact, so the safer approach is to build a flow that works even when detection fails.
- What is the fix for links breaking in in-app browsers?
- Prefer standard https store URLs over custom schemes, avoid chained redirects, keep query parameters minimal, and always render a visible fallback button so the visitor can complete the action manually if the automatic redirect is blocked.
Read more
Troubleshooting · 2 min read
Why links break inside Instagram, TikTok and other in-app browsers
A link that works fine in Safari can fail inside a social app's built-in browser. Here is what those environments do differently, which failures you can fix, and which you have to design around.
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
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.


