- Home
- >
- Web Design & Development
- >
- Running react-native-web using expo
Since expo SDK version 33, expo supports react-native-web.
In this blog, we’ll see how to set up your react-native-web project using expo.
Installing expo
// install expo-cli
npm i -g expo-cli
// create expo project
expo init
Install expo-cli if you don’t have it installed already, you can use nvm and yarn as well instead of npm.
After running expo init
you’ll be presented with a few options to choose the starter kit from.
You can choose any one of those, but for this blog, we’ll use the first one, which is the blank project in javascript. Now, it will prompt you to enter the project name and the slug. Slug is the URL part that’s needed when you try to publish the app on the expo server.
cd into the project directory and run the expo start --web
If you want to quickly jump and see the code, check this GitHub repo [master branch]
cd rn-web
expo start --web
It should launch the webapp in your browser.
Let’s make some changes in the App.js
file and check if hot reloading works.
// App.js
export default function App() {
return (
<View style={styles.outer}>
<Header/>
<View style={styles.container}>
<Text>Open up App.js to start working on your app! let me do some change</Text>
</View>
</View>
);
}
You should see the browser reflecting the changes automatically. If you’d like to see my hussle with react-native-web setup check this video.
Adding components to react-native-web
Let’s add a few components to our app now.
Create a Header.js
file in components
folder
// components/Header.js
import React from 'react';
import { StyleSheet, Text, View, Dimensions } from 'react-native';
const {width, height} = Dimensions.get('window');
function Header () {
return (
<View style={styles.header}>
<Text>I'm header</Text>
</View>)
}
const styles = StyleSheet.create({
header: {
height: height/10,
alignItems: 'center',
justifyContent: 'center',
backgroundColor: 'red',
},
});
export default Header;
And include Header.js in your App.js file.
// App.js
import React from 'react';
import {Dimensions, StyleSheet, Text, View} from 'react-native';
import Header from './components/Header';
const {width, height} = Dimensions.get('window');
export default function App() {
return (
<View style={styles.outer}>
<Header/>
<View style={styles.container}>
<Text>Open up App.js to start working on your app! let me do some change</Text>
</View>
</View>
);
}
const styles = StyleSheet.create({
outer: {
flex: 1,
},
container: {
height: height*9/10,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
On the terminal, press i
and it will launch the ios simulator or press a
and it will launch android emulator, and you should see the app running in the mobile device as well.
If you want to avoid using terminals, Expo also provides you with the browser UI interface which looks like this.
This is the beauty of react-native and react-native-web, you need to write the code once and can run it on multiple platforms. Like react-native-web, there are other packages like react-native-windows which lets you run react-native apps on the windows phone and PC.
Similarly, react-native-macos lets your run the app on mac os.
In the next blog, we’ll integrate the navigation library into react-native-web as navigation is an important part of any frontend framework.
Conclusion
So, we hope you have learned how to set up react-native using expo properly. If you face any sort of doubts while setting up react-native, we the codersera team have dedicated developers who would help you in your process.
Source: InApps.net
Let’s create the next big thing together!
Coming together is a beginning. Keeping together is progress. Working together is success.