iOS Universal Link opens app and then opens browser (Flutter + Universal Links) — only when using paths/params

Hi everyone, I’ve been stuck on an issue with iOS Universal Links for about a week and could really use some help.

The problem When tapping a Universal Link on iOS, my Flutter app opens correctly (desired behavior) — but immediately afterward, Safari opens the same link in the browser. So both the app and the browser open. This only happens on iOS. On Android everything works as expected.

What works If the link is simply the domain, like: https://mydomain.com

…then the app opens without triggering the browser afterward. This is the correct behavior.

What doesn’t work If the link includes a path or parameters, like: https://mydomain.com/path https://mydomain.com/path?param=value

…then the app opens, and then the browser opens immediately after.

What I’ve tried

Verified my AASA file using Branch’s validator: https://branch.io/resources/aasa-validator/

→ The AASA file is valid.

Universal Links do open the correct screen inside the app — the issue is the unwanted second step (Safari opening).

Behavior is consistent across different iOS devices.

Extra details

Using Flutter.

Universal Links set up with the standard configuration (associatedDomains, AASA hosted at /.well-known/apple-app-site-association, etc.).

Question Has anyone encountered this issue where Universal Links with paths/params open the app and then open Safari? What could cause iOS to trigger the browser fallback even when the AASA file is valid and the app handles the link correctly?

Any insights, debugging tips, or known edge cases would be incredibly appreciated!

Thank you for your post. I am unfamiliar with Flutter. Have you created a simple, focused project in Xcode to verify the AASA file? Do you have a link to the public AASA file?

Have you reviewed the troubleshooting guide for Universal Links, as it was specifically designed for Xcode and may provide assistance? Have you reached out to the third-party developers who developed Flutter for their support?

You should check with the support resources provided by the 3rd party to get assistance with their software.

The troubleshooting guide can be found here if you are interested. TN3155: Debugging universal links | Apple Developer Documentation

Albert Pascual
  Worldwide Developer Relations.

Hi @jordan3900

I'm facing exactly same issue. Did you figured out.

@Osama796 Have you checked with the 3rd party tool? Can you provide the browser you are using an a link to your AASA file? Thanks

Albert  WWDR

Hi @DTS Engineer ,

Thanks for replying sure please find attached the requested information.

I've checked the documentation carefully for the third party tool that I'm using and there is no such issue mentioned.

Link to third party plugin: https://pub.dev/packages/app_links

Link to AASA: https://go.badrgo.com/.well-known/apple-app-site-association

If you want more information I'll be more than happy to provide.

Thanks

@Osama796

Thank you for your reply and the provided link. The AASA appears to be functioning correctly or at least I do not see any issues with the format, even with only one component to ensure that all requests will open the registered application. I always suggest to add different links instead of adding all requests.

I am unable to access the application to verify its installation and registration status. Therefore, I would appreciate it if you could review the troubleshooting steps and provide me with your progress. Specifically, please check the application after installation to ensure that the AASA file is registered in the swcutil, as outlined in the provided Tech Note. Additionally, please provide me with the output of that file, which should contain the app ID.

TN3155: Debugging universal links | Apple Developer Documentation

We should be able to resolve the issue, as everything appears to be in order. My guess is that the 3rd party app registration is the problem. I would investigate whether a third party is registering the link and test it using Notes. I would also recommend adding a test link to the components to test with.

Albert  WWDR

iOS Universal Link opens app and then opens browser (Flutter + Universal Links) — only when using paths/params
 
 
Q