🌐
Expo Documentation
docs.expo.dev › versions › latest › sdk › webbrowser
WebBrowser - Expo Documentation
A library that provides access to the system's web browser and supports handling redirects. ... expo-web-browser provides access to the system's web browser and supports handling redirects.
🌐
npm
npmjs.com › package › expo-web-browser
expo-web-browser - npm
Provides access to the system's web browser and supports handling redirects. On iOS, it uses SFSafariViewController or ASWebAuthenticationSession, depending on the method you call, and on Android it uses ChromeCustomTabs.
      » npm install expo-web-browser
    
Published   Dec 05, 2025
Version   15.0.10
Author   650 Industries, Inc.
🌐
GitHub
github.com › expo › expo › blob › main › docs › pages › versions › unversioned › sdk › webbrowser.mdx
expo/docs/pages/versions/unversioned/sdk/webbrowser.mdx at main · expo/expo
expo-web-browser provides access to the system's web browser and supports handling redirects. On Android, it uses ChromeCustomTabs and on iOS, it uses SFSafariViewController or ASWebAuthenticationSession, depending on the method you call.
Author   expo
🌐
CloudDefense.ai
clouddefense.ai › code › javascript › example › expo-web-browser
Top 10 Examples of expo-web-browser code in Javascript
const _handlePressButtonAsync = async () => { let result = await WebBrowser.openBrowserAsync('https://expo.io'); setResult(result); }; return ( ... const openLink = (url, theme = 'light') => WebBrowser.openBrowserAsync(url, { toolbarColor: themes[theme].headerBackground, controlsColor: themes[theme].headerTintColor, collapseToolbar: true, showTitle: true });
🌐
Reddit
reddit.com › r/reactnative › issue with expo-web-browser
r/reactnative on Reddit: Issue with expo-web-browser
April 7, 2025 -

I'm trying to implement google auth using expo-auth-session in expo-router and testing with an ios simulator but it's not opening the google consent screen and giving this connection lost error.
When I open any site on the safari it works fine. Therefore, I think the issue is with the expo-auth-session which uses expo-web browser to open web pages.
Is anyone else facing this issue?

🌐
Expo Documentation
docs.expo.dev › workflow › web
Develop websites with Expo - Expo Documentation
Building web-only components is fully supported by Expo, however, you may want to organize your code to better support building for both web and native platforms simultaneously. Learn more in platform-specific modules. All of the libraries in the Expo SDK are built to support both browser and server rendering environments (when applicable).
🌐
CodeSandbox
codesandbox.io › examples › package › expo-web-browser
expo-web-browser examples - CodeSandbox
AboutProvides access to the system's web browser and supports handling redirects. On iOS, it uses SFSafariViewController or ASWebAuthenticationSession, depending on the method you call, and on Android it uses ChromeCustomTabs.
🌐
GitHub
github.com › expo › expo › blob › main › packages › expo-web-browser › CHANGELOG.md
expo/packages/expo-web-browser/CHANGELOG.md at main · expo/expo
An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web. - expo/packages/expo-web-browser/CHANGELOG.md at main · expo/expo
Author   expo
Top answer
1 of 2
3

you can use the following library react-native-inappbrowser

follow the installation from the github page

import { Linking } from 'react-native'
import InAppBrowser from 'react-native-inappbrowser-reborn'

...
  async openLink() {
    try {
      const url = 'https://www.google.com'
      if (await InAppBrowser.isAvailable()) {
        const result = await InAppBrowser.open(url, {
          // iOS Properties
          dismissButtonStyle: 'cancel',
          preferredBarTintColor: '#453AA4',
          preferredControlTintColor: 'white',
          readerMode: false,
          animated: true,
          modalPresentationStyle: 'overFullScreen',
          modalTransitionStyle: 'partialCurl',
          modalEnabled: true,
          // Android Properties
          showTitle: true,
          toolbarColor: '#6200EE',
          secondaryToolbarColor: 'black',
          enableUrlBarHiding: true,
          enableDefaultShare: true,
          forceCloseOnRedirection: false,
          // Specify full animation resource identifier(package:anim/name)
          // or only resource name(in case of animation bundled with app).
          animations: {
            startEnter: 'slide_in_right',
            startExit: 'slide_out_left',
            endEnter: 'slide_in_left',
            endExit: 'slide_out_right'
          },
          headers: {
            'my-custom-header': 'my custom header value'
          },
          waitForRedirectDelay: 0
        })
        Alert.alert(JSON.stringify(result))
      }
      else Linking.openURL(url)
    } catch (error) {
      Alert.alert(error.message)
    }
  }
...

you can check the example app here

for expo it becomes little bit complicated please check the related tutorial by Medium

if you want reading mode in ios please refer this link

reader-mode-webview-component-for-react-native

2 of 2
2

The expo-web-browser package opens an in app browser.

This worked for me with expo. I tried react-native-inappbrowser-reborn first, but isAvailable() was throwing an error.

import * as WebBrowser from 'expo-web-browser'

...
WebBrowser.openBrowserAsync(url, {showTitle: true})
Find elsewhere
🌐
Snyk
snyk.io › advisor › expo-web-browser › functions › expo-web-browser.openbrowserasync
How to use the expo-web-browser.openBrowserAsync function in expo-web-browser | Snyk
Provides access to the system's web browser and supports handling redirects. On iOS, it uses SFSafariViewController or ASWebAuthenticationSession, depending on the method you call, and on Android it uses ChromeCustomTabs.
🌐
Expo Documentation
docs.expo.dev › linking › into-other-apps
Linking into other apps - Expo Documentation
The expo-linking API allows you to open a URL using the operating system's default web browser app. You can use the expo-web-browser library to open URLs in an in-app browser.
🌐
UNPKG
app.unpkg.com [email protected] › files › package.json
expo-web-browser
Provides access to the system's web browser and supports handling redirects. On iOS, it uses SFSafariViewController or SFAuthenticationSession, depending on the method you call, and on Android it uses ChromeCustomTabs. As of iOS 11, SFSafariViewController ...
🌐
UNPKG
unpkg.com › browse › [email protected] › package.json
expo-web-browser - package.json
Provides access to the system's web browser and supports handling redirects. On iOS, it uses SFSafariViewController or SFAuthenticationSession, depending on the method you call, and on Android it uses ChromeCustomTabs. As of iOS 11, SFSafariViewController ...
🌐
Akhromieiev
akhromieiev.com › tutorials › expo-integrating-webbrowser
Expo - Integrating WebBrowser
October 26, 2021 - In this simple tutorial, I want to show you how to integrate the WebBrowser module inside of Expo Application. This module allows the user to view another sites or web pages inside of your Expo Application.
🌐
GitHub
github.com › expo › expo › issues › 27500
[Android][expo-web-browser] Signing in via another app will not redirect back to the initial app · Issue #27500 · expo/expo
March 7, 2024 - await WebBrowser.openAuthSessionAsync( "the_auth_link", "the_redirect_to_main_app_link" ); Ideally, we would like to open the auth page in the browser of the app instead of using the AuthApp, just like it is happening on the iOS. expo-env-info 1.2.0 environment info: System: OS: macOS 13.6.4 Shell: 5.9 - /bin/zsh Binaries: Node: 20.11.1 - ~/.nvm/versions/node/v20.11.1/bin/node Yarn: 1.22.19 - /opt/homebrew/bin/yarn npm: 10.2.4 - ~/.nvm/versions/node/v20.11.1/bin/npm Managers: CocoaPods: 1.14.3 - /opt/homebrew/bin/pod SDKs: iOS SDK: Platforms: DriverKit 23.2, iOS 17.2, macOS 14.2, tvOS 17.2, vi
Published   Mar 07, 2024
🌐
GitHub
github.com › expo › expo › issues › 40123
expo-web-browser(web): openBrowserAsync returns OPENED even when popup is blocked (no-op in WKWebView / IAB) · Issue #40123 · expo/expo
October 1, 2025 - Open the web URL shown in the terminal (e.g., http://localhost:19006). Open that URL inside a WKWebView / in-app browser (IAB). Easiest: send the URL to yourself in Instagram DM, then tap it to open in Instagram’s in-app browser on iOS.
Published   Oct 01, 2025