In-app browser through One.Browser. Pages open in SFSafariViewController on iOS and Custom Tabs on Android; auth sessions use ASWebAuthenticationSession on iOS and Custom Tabs with an app redirect on Android.
import { One } from 'one'
const page = await One.Browser.open('https://example.com')// { type: 'cancel' } once the user closes the sheet// { type: 'opened' } on Android, which reports no close event
await One.Browser.dismiss()// { type: 'dismiss' }
const auth = await One.Browser.openAuthSession( 'https://example.com/login', 'myapp://auth')// { type: 'success', url: 'myapp://auth?code=…' } on redirect// { type: 'cancel' } when the user backs out
One.Browser.dismissAuthSession()open takes { presentationStyle, toolbarColor, controlsColor } on iOS and { browserPackage, toolbarColor, showTitle } on Android. openAuthSession adds preferEphemeralSession on iOS. On Android the auth promise settles when the redirect returns to the app (the standard single-task activity delivers it) or with cancel when the user closes the tab. The locked type reports a second session opened while one is already up. dismissAuthSession cancels a pending auth session, whose promise then resolves dismiss.
On web, open opens a blank-target tab and a blocked popup rejects with code E_BROWSER_BLOCKED; openAuthSession rejects with Browser.openAuthSession needs an iOS or Android build.
Edit this page on GitHub.