Setting a background image in React Native allows you to enhance the visual appearance of your app by placing an image behind other components. This is commonly done using the ImageBackground component provided by React Native.
- The ImageBackground component is used to set an image as the background of a screen or view.
- It allows other components like Text, View, and Button to be placed on top of the image.
- Background images help improve UI design and create more attractive layouts.
Props in ImageBackground
The ImageBackground component provides several props to control the image, layout, and styling of the background.
- source – Specifies the image source (local file or URL).
- style – Applies styles to the ImageBackground container.
- imageStyle – Applies styles specifically to the background image.
- resizeMode – Controls how the image is resized (cover, contain, stretch, repeat, center).
- blurRadius – Adds a blur effect to the background image.
- defaultSource – Displays a placeholder image while loading (mainly for local images).
- onLoad – Function called when the image finishes loading.
- onError – Function called if the image fails to load.
- onLoadStart – Function called when the image starts loading.
- onLoadEnd – Function called when the image loading finishes.
- imageRef – Provides a reference to the underlying image component.
- children – Components placed inside ImageBackground that appear on top of the image.
Step-by-Step Implementation
Step 1: Create a React Native Project
Now, create a project with the following command.
npx create-expo-app app-name --templateNote: Replace the app-name with your app name for example : react-native-demo-app
Next, you might be asked to choose a template. Select one based on your preference as shown in the image below. I am selecting the blank template because it will generate a minimal app, as clean as an empty canvas in JavaScript.

It completes the project creation and displays a message: "Your Project is ready!" as shown in the image below.

Now go into your project folder, i.e., react-native-demo
cd app-nameProject Structure

Step 2: Run Application
Start the server by using the following command.
npx expo startThen, the application will display a QR code.
1. For the Android users,
- For the Android Emulator, press "a" as mentioned in the image below.
- For Physical Device, Download the "Expo Go" app from the Play Store. Open the app, and you will see a button labeled "Scan QR Code." Click that button and scan the QR code; it will automatically build the Android app on your device.
2. For iOS users, simply scan the QR code using the Camera app.
3. If you're using a web browser, it will provide a local host link that you can use as mentioned in the image below.

Step 3: Start Coding
- Import libraries: Import required libraries at the top of the file.
import React from 'react'; // Import React library
import {
View, // Import View component for layout
TextInput, // Import TextInput component for user input
ImageBackground, // Import ImageBackground component for background images
StyleSheet, // Import StyleSheet for styling
Dimensions // Import Dimensions to get screen dimensions
} from 'react-native'; // Import necessary components from react-native
- StyleSheet: Create a StyleSheet to style components like img and input.
// Get the height of the device screen
const screenHeight = Dimensions.get('window').height;
// Get the width of the device screen
const screenWidth = Dimensions.get('window').width;
// Define styles for the components
const styles = StyleSheet.create({
img: {
// Set the height to the screen height
height: screenHeight,
// Set the width to the screen width
width: screenWidth,
// Center content vertically
justifyContent: 'center',
// Center content horizontally
alignItems: 'center',
},
input: {
// Set the height of the input field
height: 40,
// Add margin around the input field
margin: 12,
// Set the border width
borderWidth: 2,
// Add padding inside the input field
padding: 10,
},
});
- ImageBackground: This component is used to set a background image.
<ImageBackground
source={{
// URL of the background image
uri:'https://media.geeksforgeeks.org/wp-content/uploads/20220217151648/download3.png',
}}
// Stretch the image to fit the container
resizeMode="stretch"
// Apply styles to the ImageBackground
style={styles.img}
>
It can be one of the following:
resizeMode: "center" | "contain" | "cover" | "repeat" | "stretch"- TextInput: This component is used to take input from the user.
<TextInput
placeholder="Geeks for Geeks " // Placeholder text for the input field
style={styles.input} // Apply styles to the TextInput
/>
- BackgroundImg: This is a wrapper of ImageBackground and TextInput components with the View component.
// Define a functional component for displaying
// a background image with a text input
const BackgroundImg = () => {
return (
<View> {/* Wrapper View component */}
{/* ImageBackground component to set a background image */}
<ImageBackground
source={{
// URL of the background image
uri: 'https://media.geeksforgeeks.org/wp-content/uploads/20220217151648/download3.png',
}}
// Stretch the image to fit the container
resizeMode="stretch"
// Apply styles to the ImageBackground
style={styles.img}
>
<TextInput
// Placeholder text for the input field
placeholder="Geeks for Geeks "
// Apply styles to the TextInput
style={styles.input}
/>
</ImageBackground>
</View>
);
};
- App Component: Call the above Component in the App component, and also make sure to export the App.
// Define the main App component
export const App = () => {
return (
<View>
<BackgroundImg />
</View>
);
};
Complete Source Code
App.js:
// Import React library
import React from 'react';
import {
View, // Import View component for layout
TextInput, // Import TextInput component for user input
ImageBackground, // Import ImageBackground component for background images
StyleSheet, // Import StyleSheet for styling
Dimensions // Import Dimensions to get screen dimensions
} from 'react-native'; // Import necessary components from react-native
// Get the height of the device screen
const screenHeight = Dimensions.get('window').height;
// Get the width of the device screen
const screenWidth = Dimensions.get('window').width;
// Define a functional component for displaying
// a background image with a text input
const BackgroundImg = () => {
return (
<View> {/* Wrapper View component */}
{/* ImageBackground component to set a background image */}
<ImageBackground
source={{
// URL of the background image
uri: 'https://media.geeksforgeeks.org/wp-content/uploads/20220217151648/download3.png',
}}
// Stretch the image to fit the container
resizeMode="stretch"
// Apply styles to the ImageBackground
style={styles.img}
>
<TextInput
// Placeholder text for the input field
placeholder="Geeks for Geeks "
// Apply styles to the TextInput
style={styles.input}
/>
</ImageBackground>
</View>
);
};
// Define the main App component
export const App = () => {
return (
<View>
<BackgroundImg />
</View>
);
};
// Define styles for the components
const styles = StyleSheet.create({
img: {
// Set the height to the screen height
height: screenHeight,
// Set the width to the screen width
width: screenWidth,
// Center content vertically
justifyContent: 'center',
// Center content horizontally
alignItems: 'center',
},
input: {
// Set the height of the input field
height: 40,
// Add margin around the input field
margin: 12,
// Set the border width
borderWidth: 2,
// Add padding inside the input field
padding: 10,
},
});
Output: