Webview tabs
Table of Contents
Pugpig Bolt iOS and Android now (as of Bolt 4.1) offer two kinds of webview tab: Managed and Unmanaged.
These two tab types serve different purposes depending on the kind of experience you want to give your users and the type of content you want to display. Managed Webviews are good for a single page experience - e.g. a video player, custom search - or a Single Page App (SPA) - in these you cannot navigate away from the url configured in the app build without being taken to a web browser view. Unmanaged Webviews are suitable for a microsite experience, where cross links between different pages work and keep the user within the webview.
Both types of tab support the ability to pass the user's auth token to the webview so that they can be seamlessly logged in to an externally-hosted site using the same authentication as the app itself.
Given the expectation that if a user logs out of the app they should no longer have access to content, or if they log in they should - if a token (for logging in) or any parameter (such as dark mode, if configured) attached to the webview URL changes, then the webview will be refreshed.
Offline behaviour
Note that neither type of webview support offline reading or caching of content.
Managed webview tabs
These are more fully-featured tabs that utilise much of our underlying Bolt product code to provide a consistent experience across webview content and that which is delivered via the Express CMS. For instance, these tabs support all of our bridge functionality which includes, but is not limited to:
- Analytics: events can be passed from the web content to the analytics SDKs included in the app
- Link handling
- Localisation
- User information
These tabs are designed with the expectation that any content in them is hosted on the app domain. Links to other domains will open in an external webview, and webviews not on the app domain will not have access to our bridge functionality unless specifically allowed.
Unmanaged webview tabs
Bolt Web support
Unmanaged webview tabs are not supported on Bolt Web. Such tabs should be set to only appear on iOS and Android.
Overview
Unmanaged webview tabs are a less controlled experience, essentially allowing you to place any page in them and allow that page to dictate behaviour. Most importantly this does not include any link detection or handling, any link tapped on by the user will open within the tab itself. This is good for cases when you have content hosted on an external domain that you want to feel like part of the app.
Navigation
These tabs do now support some standard browser navigation, including pull to refresh on iOS and Android, the system back button on Android and swiping back to previous pages on iOS.
We don't recommend simply placing a full website in one of these tabs, as certain links may not make sense (for example those to the app store listing of the app the user is currently using!)
We also support the ability to deeplink to content within an unmanaged webview tab and we support links that try to open a new window (_blank).
Authentication
We will pass the user's auth token to the webview, allowing you to keep a user who is signed into the app also signed into the embedded page. The page itself is then responsible for remembering this status, as the token is only passed when the user first opens the tab, not subsequently for any actions the user might take in the embedded page.
Bolt functionality not supported in unmanaged webview tabs
Note this list is not exhaustive.
- Deeplinks to other parts of the app or command deeplinks (e.g Subscribe).
- Content will not be indexed by Pugpig and thus not available in Search.
- Our out-of-the-box event tracking. Analytics will need to be handled by the page itself and won't have access to our analytics bridge.
- Ability to pass the user's dark mode setting to the content.
- Any changes to the user's auth state (i.e going to the tab when signed out then signing in).