Creating a WebView app in React Native using Expo

Creating a WebView app in React Native using Expo

Creating a WebView app in React Native using Expo is a straightforward process. Below is a step-by-step guide on how to achieve this, including the installation, setting up a WebView, and building the app.

Know More :- https://codexdindia.blogspot.com/2024/07/creating-webview-app-in-react-native.html

Prerequisites

Basic knowledge of JavaScript and React
Node.js and npm installed on your system
Expo CLI installed globally (npm install -g expo-cli)
An Expo account

Step 1: Initialize a New Expo Project

First, create a new Expo project using the Expo CLI.

npx create-expo-app WebViewApp –template blank
cd WebViewApp

Step 2: Install React Native WebView

Install the react-native-webview package, which provides the WebView component.

expo install react-native-webview

Step 3: Create the WebView Component

Create a new component to handle the WebView. Open App.js and replace its content with the following code:

import React from react;
import { SafeAreaView, StyleSheet, Platform, ActivityIndicator } from react-native;
import { WebView } from react-native-webview;

const App = () => {
return (
<SafeAreaView style={styles.container}>
<WebView
source={{ uri: https://www.example.com }}
startInLoadingState={true}
renderLoading={() => <ActivityIndicator color=blue size=large />}
style={{ marginTop: Platform.OS === ios ? 20 : 0 }}
/>
</SafeAreaView>
);
};

const styles = StyleSheet.create({
container: {
flex: 1,
},
});

export default App;

Step 4: Customize the WebView

You can customize the WebView further to add more functionalities, such as handling navigation gestures, showing a splash screen, or handling file downloads.

Showing a Splash Screen

To show a splash screen while the WebView loads, install the Expo Splash Screen package.

expo install expo-splash-screen

Then, modify App.js to use the splash screen:

import React, { useState, useEffect } from react;
import { SafeAreaView, StyleSheet, Platform, ActivityIndicator } from react-native;
import { WebView } from react-native-webview;
import * as SplashScreen from expo-splash-screen;

SplashScreen.preventAutoHideAsync();

const App = () => {
const [loading, setLoading] = useState(true);

useEffect(() => {
if (!loading) {
SplashScreen.hideAsync();
}
}, [loading]);

return (
<SafeAreaView style={styles.container}>
<WebView
source={{ uri: https://www.example.com }}
onLoadEnd={() => setLoading(false)}
startInLoadingState={true}
renderLoading={() => <ActivityIndicator color=blue size=large />}
style={{ marginTop: Platform.OS === ios ? 20 : 0 }}
/>
</SafeAreaView>
);
};

const styles = StyleSheet.create({
container: {
flex: 1,
},
});

export default App;

Step 5: Build and Run Your App

To build and run your app on a physical device, use the following command:

expo start

Scan the QR code with the Expo Go app on your device to see your WebView in action.

Additional Customizations

Navigation Gestures: Enable iOS navigation gestures with allowsBackForwardNavigationGestures={true} in the WebView component.

File Downloads: Handle file downloads with the onFileDownload prop and use the expo-file-system and expo-sharing packages for saving files.

External Links: Open external links in the system’s browser using expo-web-browser.

Resources

Expo Documentation【10†source】

React Native WebView Documentation【9†source】

LogRocket Guide on React Native WebView【8†source】

By following these steps, you can create a fully functional WebView app in React Native using Expo, with capabilities to handle various web-related functionalities and customizations.

Please follow and like us:
Pin Share