javascriptandroidchrome-custom-tabs

Detect & prevent opening new tabs inside Chrome Custom Tabs


Background:

Problem: On Android devices, using the Gmail app, clicking/tapping links in emails open the resulting page inside a Chrome Custom Tab browser that properly displays Window A.

However, opening window B will position it over window A. While postMessage between the two browsing contexts is working there is no way for the user to return to Window A. Back arrow in the browser will return user to Gmail app.

We'd like to detect this situation and gracefully fallback so the user doesn't find themselves stranded on Window B - as we do for other non-multi-tab browsers like WebViews (Facebook, etc).

Seems that Chrome Custom Tabs uses the exact same user agent as "regular" multi-tab Chrome browser so that's not an option.

Would appreciate if anyone has figured out a way to detect loading through Chrome Custom Tabs


Solution

  • Custom Tabs and Trusted Web Activity are largely the same protocol. The solution described in How can I detect if my website is opened inside a Trusted Web Actvity? should work for Custom Tabs too.