paint-brush
How to Develop a Progressive Web App with Reactby@hemendrasingh
978 reads
978 reads

How to Develop a Progressive Web App with React

by Hemendra SinghJuly 11th, 2022
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

A progressive web app (PWA) is a website that uses modern web capabilities to deliver an app-like user experience. In this article, we'll show you how to use React to create a React PWA from scratch. If you're already using React, then you'll have a head start on developing PWA. React is fast, efficient, and can be used to create performant PWAs. It's also possible to re-engage users with push notifications and offline capabilities.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - How to Develop a Progressive Web App with React
Hemendra Singh HackerNoon profile picture


A progressive web app (PWA) is a website that uses modern web capabilities to deliver an app-like user experience. PWAs are installable and live on the user's home screen, without the need for an app store. They can also re-engage users with push notifications and offline capabilities.


React is a popular JavaScript library for building user interfaces, so it's only natural that you might want to use react for your PWA. In this article, we'll show you how to develop a React PWA from scratch.


Why Build a PWA with React?


There are a few reasons why you might want to build a Progressive web app with React:


  • React is a popular and well-supported framework - if you're already using React, then you'll have a head start on developing PWA.
  • React is component-based, which means that you can break down your UI into smaller, reusable pieces. This makes it easier to develop and maintain your PWA over time.
  • React is fast, efficient, and can be used to create performant PWAs.


Creating a React PWA from scratch

To create a React PWA from scratch, you'll need to do the following:

  • Set up your development environment
  • Create your React components
  • Register your service worker
  • Implement caching and offline support
  • Deploy your PWA


Let's go through each of these steps in detail.


  1. Setting up your development environment


Before you can start developing your React PWA, you'll need to set up your development environment. If you're already familiar with React, then you can use your existing environment. Otherwise, we recommend using create-react-app to set up a new React project.


  1. Creating your React components


Once Creating a React PWA

Now that we've covered some of the reasons why you might want to use React for your PWA, let's walk through the steps of creating


First, let's take a look at what makes a PWA. A progressive web app must meet certain criteria in order to be eligible:


  • Must be served over HTTPS
  • Must have a registered service worker
  • Must have a manifest file


Let's go over each of these requirements one by one.


To get started, you'll need to set up a React project. You can use create-react-app for this purpose. Once your project is set up, open the index.html file and modify it to include the following:


<!DOCTYPE html> 

<html lang="en"> 

<head> 

    <meta charset="UTF-8"> 

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge"> 

    <link rel="manifest" href="/manifest.json"> 

    <title>React PWA</title> 

</head> 

<body> 

    <div id="root"></div> 

</body> 

</html>


This is the basic HTML structure that you need for a progressive web app. The only thing that's different from a regular HTML file is the inclusion of the manifest file. We'll get to that in a moment.


Next, open up the index.js file and add the following code:



import React from 'react';

import ReactDOM from 'react-dom';

import App from './App';

ReactDOM.render(<App />, document.getElementById('root'));

This code simply imports the react and react-dom libraries, as well as our App component, and renders it to the root element in our HTML file.

Now let's take a look at the App.js file:

import React, { Component } from 'react';

class App extends Component {
render() { 

    return ( <div>Hello World!</div> ); 

} 
}  export default App;


All this code is doing is creating a simple App component that renders a "Hello World!" message.

Now that we've got our basic React application set up, let's add the necessary code to turn it into a progressive web app.


The first thing we need to do is create a manifest file. This file tells the browser what our progressive web app looks like and how it should behave.


Create a new file in your src directory called manifest.json and add the following code:


{

"name": "My React PWA", 

"short_name": "React PWA", 

"start_url": "/", 

"display": "standalone", 

"icon": "/images/icon.png" 
 
}


This manifest file tells the browser that our progressive web app is called "My React PWA", has a short name of "React PWA", and should be displayed as a standalone application. It also tells the browser that our progressive web app's icon is located at /images/icon.png.


Now that we've got our manifest file set up, let's add it to our index.html file:


<link rel="manifest" href="/manifest.json">


  1. set up a service worker

    The next thing we need to do is set up a service worker. Service workers are scripts that run in the background of your progressive web app and can do things like cache resources so that your app can work offline.


To set up a service worker, we first need to create a file called sw.js in our project's root directory:


var CACHE_NAME = 'my-pwa-cache';

var urlsToCache = ['index.html', '/styles/main.css', '/images/icon.png'];

self.addEventListener('install', function(event) {

event.waitUntil(

caches.open(CACHE_NAME)

.then(function(cache) {

console.log('Opened cache');

return cache.addAll(urlsToCache);

})

);

});



Now that we have our service worker file set up, we need to tell our app to use it. We can do this by adding a few lines of code to our index.js file:


if ('serviceWorker' in navigator) {

navigator.serviceWorker .register('/sw.js') .then(function(registration) {

console.log('Service worker registration successful');

}).catch(function(err) {

console.log('Service worker registration failed: ', err);

});

}



This code checks to see if the service worker API is supported by the browser, and if it is, it registers our service worker file.


Now that we have a basic service worker set up, let's take a look at some of the other things we can do with service workers to make our progressive web app even more powerful.


Advantages of Progressive web app with react


  • PWAs are fast and responsive, even on slow internet connections
  • PWAs can be added to the home screen of a user's device, making them feel like a native app
  • PWAs can send push notifications to users, even when the app is not open
  • PWAs are secure, thanks to the service worker's ability to cache resources and prevent malicious attacks
  • PWAs are reliable, thanks to the service worker's ability to serve content even when the network is down or unavailable.


These are just some of the advantages that make progressive web apps such a powerful tool for businesses and developers alike.