Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
react-native-web
Advanced tools
The react-native-web package allows you to use React Native components and APIs to build web applications. It provides a way to write a single codebase that can run on both mobile and web platforms, leveraging the same React Native components.
Cross-Platform Components
This feature allows you to use React Native components like View and Text to build web applications. The code sample demonstrates a simple app that displays 'Hello, world!' using React Native components.
import { View, Text } from 'react-native';
import { AppRegistry } from 'react-native-web';
const App = () => (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text>Hello, world!</Text>
</View>
);
AppRegistry.registerComponent('App', () => App);
AppRegistry.runApplication('App', { initialProps: {}, rootTag: document.getElementById('app') });
StyleSheet for Web
This feature allows you to use the StyleSheet API from React Native to style your web components. The code sample shows how to create and apply styles using StyleSheet.
import { StyleSheet, View, Text } from 'react-native';
import { AppRegistry } from 'react-native-web';
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
});
const App = () => (
<View style={styles.container}>
<Text style={styles.welcome}>Welcome to React Native Web!</Text>
</View>
);
AppRegistry.registerComponent('App', () => App);
AppRegistry.runApplication('App', { initialProps: {}, rootTag: document.getElementById('app') });
Event Handling
This feature allows you to handle events such as button presses using React Native's event handling system. The code sample demonstrates a button that shows an alert when pressed.
import { View, Button, Alert } from 'react-native';
import { AppRegistry } from 'react-native-web';
const App = () => (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Button
title="Press me"
onPress={() => Alert.alert('Button pressed!')}
/>
</View>
);
AppRegistry.registerComponent('App', () => App);
AppRegistry.runApplication('App', { initialProps: {}, rootTag: document.getElementById('app') });
react-native-dom is another package that aims to bring React Native to the web. It provides a similar set of components and APIs as react-native-web but focuses more on integrating with the DOM directly. It is less mature and has a smaller community compared to react-native-web.
react-primitives is a package that provides a set of primitive components that work across multiple platforms, including web, iOS, and Android. It is more lightweight compared to react-native-web and focuses on providing a minimal set of components for cross-platform development.
reactxp (React Cross-Platform) is a library developed by Microsoft that allows you to build cross-platform apps using React and React Native. It provides a unified API for building apps that run on web, iOS, Android, and Windows. It is more opinionated and comes with its own set of components and APIs.
React Native components and APIs for the Web.
Browser support: Chrome, Firefox, Safari >= 7, IE 10, Edge.
"React Native for Web" is a project to bring React Native's building blocks and touch handling to the Web.
React Native provides a foundational layer to support interoperable, zero-configuration React component development. This is missing from React's web ecosystem where OSS components rely on inline styles (usually without vendor prefixes), or require build tool configuration. This project allows components built upon React Native to be run on the Web, and it manages all component styling out-of-the-box.
For example, the View
component makes it easy to build
cross-browser layouts with flexbox, such as stacked and nested boxes with
margin and padding. And the StyleSheet
API converts
styles defined in JavaScript into "Atomic CSS".
To install in your app:
npm install --save react@0.14 react-dom@0.14 react-native-web
Read the Client and Server rendering guide.
Demos:
Sample:
import React, { AppRegistry, Image, StyleSheet, Text, View } from 'react-native'
// Components
const Card = ({ children }) => <View style={styles.card}>{children}</View>
const Title = ({ children }) => <Text style={styles.title}>{children}</Text>
const Photo = ({ uri }) => <Image source={{ uri }} style={styles.image} />
const App = () => (
<Card>
<Title>App Card</Title>
<Photo uri="/some-photo.jpg" />
</Card>
)
// Styles
const styles = StyleSheet.create({
card: {
flexGrow: 1,
justifyContent: 'center'
},
title: {
fontSize: '1.25rem',
fontWeight: 'bold'
},
image: {
height: 40,
marginVertical: 10,
width: 40
}
})
// App registration and rendering
AppRegistry.registerComponent('MyApp', () => App)
AppRegistry.runApplication('MyApp', { rootTag: document.getElementById('react-root') })
Guides:
Exported modules:
ActivityIndicator
Image
ListView
Portal
ScrollView
Text
TextInput
TouchableHighlight
(mirrors React Native)TouchableOpacity
(mirrors React Native)TouchableWithoutFeedback
View
Animated
(mirrors React Native)AppRegistry
AppState
AsyncStorage
Dimensions
NativeMethods
NetInfo
PanResponder
(mirrors React Native)PixelRatio
Platform
StyleSheet
React Native for Web is BSD licensed.
FAQs
React Native for Web
The npm package react-native-web receives a total of 515,298 weekly downloads. As such, react-native-web popularity was classified as popular.
We found that react-native-web demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.