Universal Links for Android and iOS
Article Summary
Konstantin Yakushev from Bumble Tech reveals the brutal truth about universal links: Apple and Google's 'simple' solution is riddled with undocumented bugs that break user experience in shocking ways.
This deep dive from Badoo's engineering team chronicles their battle to implement universal links across iOS and Android. What should have been straightforward turned into a multi-year debugging nightmare involving SafariViewController failures, mysterious redirect issues, and a button that permanently breaks deep links.
Key Takeaways
- Redirects to universal links fail completely on iOS (undocumented behavior)
- SafariViewController blocks all universal links, requiring dual-domain hack
- Single iOS button permanently disables deep links with no developer fix
- Facebook ignores universal links entirely, requires proprietary App Links format
- Version control impossible: apple-app-site-association affects all app versions simultaneously
Universal links require custom URL minifiers, alternative domains, fingerprinting services, and extensive workarounds to achieve basic functionality that Apple and Google claim works out of the box.
About This Article
When Badoo first integrated AppsFlyer's SDK, it kept sending users back to the App Store even if they already had the app installed. This broke the user experience, so the team decided to stop using the third-party solution.
Konstantin Yakushev's team built their own deep linking system using their existing m.badoo.com infrastructure. They set up two domains, m.badoo.com and mlink.badoo.com, to work around SafariViewController limitations. They also created a custom URL minifier on a separate domain that was registered as a universal link.
With their custom system in place, Badoo could support deferred deep linking through AppsFlyer while keeping control of their link infrastructure. Users could share profiles and content across platforms, and the system would fall back to the app store when the app wasn't installed.