Display Loading dialog in ReactNative

Sanjana Human In Tech
2 min readNov 16, 2023

--

Loading dialog in ReactNative

Using a loading dialog or spinner in a mobile application is essential in situations where your app is performing time-consuming tasks such as:

  1. Network Requests:
  • When making API calls or fetching data from a server.
  • During image or file uploads.
  • Retrieving large sets of data.

2. Data Processing:

  • Calculating and processing data that takes a significant amount of time.
  • Parsing and transforming large datasets

3. Authentication and Authorization :

  • Verifying user credentials against a server.
  • Checking and validating user permissions.

4. Application Initialization:

  • Loading initial app data and resources.
  • Setting up the app environment.

5. Resource Loading:

  • Loading images, fonts, or other assets.

6. Transitions Between Screens :

  • When navigating between screens, especially if there’s a delay in loading the content.

In these scenarios, displaying a loading indicator informs the user that the app is actively working on a task and helps manage user expectations. Users generally appreciate knowing that something is happening in the background, rather than experiencing a seemingly unresponsive app.

Let’s start with an example:

We will use ActivityIndicator for ReactNative.

import React, { useState, useEffect } from 'react';
import { View, Text, ActivityIndicator, StyleSheet } from 'react-native';

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

// Simulate a delay to showcase loading state
useEffect(() => {
const timeout = setTimeout(() => {
setLoading(false);
}, 5000); // Simulating a 3-second delay
return () => clearTimeout(timeout);
}, []);

return (
<View style={styles.container}>
{loading ? (
<View style={styles.loadingContainer}>
<ActivityIndicator size="large" color="#007AFF" />
<Text style={styles.loadingText}>Loading...</Text>
</View>
) : (
<View>
{/* Your content when loading is complete */}
<Text>Data Loaded Successfully!</Text>
</View>
)}
</View>
);
};

const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
loadingContainer: {
justifyContent: 'center',
alignItems: 'center',
},
loadingText: {
marginTop: 10,
fontSize: 16,
color: '#333',
},
});

export default MyLoadingComponent;

Thank you for reading this article! Don’t forget to clap only if you think I deserve it👏 and buy me a coffee.

If you have any queries related to ReactNative, I’m always happy to help you. You can reach me on LinkedIn and Gmail.

Happy Learning🚀 Happy Coding💻.

--

--

Sanjana Human In Tech
Sanjana Human In Tech

Written by Sanjana Human In Tech

A React Native front-end enthusiast and dedicated development engineer, eager to expand knowledge on development techniques and collaborate with others.

No responses yet