Learn how to develop your app for the web so you can build a universal app.
If you build your native app with the Expo SDK, then you can also run it directly in the browser with Expo CLI. On web, your app is rendered with React Native for web which powers massive websites and progressive web apps like Twitter, and Major League Soccer. The Expo SDK also utilizes native browser functionality like Video, Camera, and Gestures without the need for a custom native browser.
-
npx expo install react-dom react-native-web @expo/webpack-config
If you have a bare React Native app that doesn't use Expo modules, you can either install Expo modules (recommended) or just install the expo
package and configure the app entry file. This will allow you to target web, but it will not include support for Expo modules.
expo
package which contains the Expo CLI used for starting the dev server:-
npm install expo
registerRootComponent
instead of AppRegistry.registerComponent
:+ import {registerRootComponent} from 'expo';
import App from './App';
- import {AppRegistry} from 'react-native';
- import {name as appName} from './app.json';
- AppRegistry.registerComponent(appName, () => App);
+ registerRootComponent(App);
Learn more about
registerRootComponent
.
Finally you can start the webpack dev server with:
-
npx expo start --web
You can test secure web APIs like the camera and user location by adding the --https
flag to npx expo start
. This will host your app from a secure origin like https://localhost:19006
.
You can try experimental Metro web support instead of webpack.
Example: The website beatgig.com uses Expo web + Next.js to achieve SSR in the browser.
By default, Expo renders your web app as a single page application (SPA). This rendering pattern is the closest to how native rendering works. If you'd like to render your Expo web using server-side rendering (SSR) or static site generation (SSG), then you should try using the Expo SDK with another tool like Gatsby, Next.js, Remix, and so on. One caveat is that these tools are less universal and require a bit more effort to share code across platforms.
The ability to use Expo web with these other React frameworks is what makes it the most powerful way to build a universal app. The possibilities are endless and you won't hit a theoretic performance wall in the future.
Alternative framework implementations are maintained by the Expo community.
Export your website and upload to any web host.
Learn how to make your website run offline.
Make your website work across different screens.