Deploying app as PWA
Learn how to deploy your app as PWA on a free Firebase hosting
Prepare Firebase project for PWA
To deploy the app as PWA , we will demonstrate using Firebase hosting.
First create a project on Firebase.
Now, in your project directory, run
$ npm install -g firebase-toolsThis will install Firebase tools in your project. Now login into Firebase using
$ firebase loginIt will redirect you to browser, and authenticate using your google account. Once you are logged in, you can run this command to attach the code to your project.
$ firebase initIt will take you through a list of options for project setup.
This will create a firebase.json file which should look like the following
{
  "hosting": {
    "public": "www",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}Convert the app into a PWA
The two main requirements of a PWA are a Service Worker and a Web Manifest. While it's possible to add both of these to an app manually, the Angular team has an @angular/pwa package that can be used to automate this.
To add this package to the app run:
$ ng add @angular/pwaFinally, build your project into production using
$ ionic build --prodThis will create a production build of your ionic app for PWA deployment. Use Firebase to deploy the app using
$ firebase deploy --only hostingWhenever you make any changes to the app, make sure you run ionic build --prod before deploying it again on the hosting.
This will deploy your app on a Firebase url such as https://ionic4fullapp.firebaseapp.com/ where you will see your app running perfectly.
The Firebase console will show the deployment like this

For a more detailed step-by-step guide on PWA deployment, check this blog
When deploying an app through a hosting service, be aware that HTTPS will be required to take full advantage of Service Workers and features like Geolocation etc.
For more information on PWA related option in firebase.json , check here
Last updated
Was this helpful?
