Quick Step-By-Step Guide to Convert your Project into PWA using Laravel

  • Cubettech
  • Application Development
  • 2 years ago
Quick Step-By-Step Guide to Convert your Project into PWA using Laravel

PWA with Laravel can transform your web application to behave like a mobile application, and still have all the functionalities like a website.

Progressive Web App development are a fairly recent trend in web and mobile app development. According to statistics, PWA can improve site performance by 63%, with an average loading speed of 2.75 seconds. Besides, it can increase the user engagement rate by 68% and website traffic by 65%.

Now, let us first get an insight into PWA before jumping onto the process.

What is PWA?


Progressive Web Applications (PWA) are software applications delivered through the web; coded using common programming languages like JavaScript, HTML, or CSS.

PWAs are web apps that look, feel, function, and behave like native apps. They render smoothly on all platforms: iOS, Android, Windows, Linux, etc., and on all devices: mobile, desktop, and tablet, within a standard compliant browser.

What Are the Benefits of Creating PWA Using the Laravel Framework?


With PWA’s high performance, fast loading speed, and code reusability; you can enjoy the fully featured framework of Laravel.

Furthermore, you can enjoy:

·         A pleasant UI on mobiles, desktops, and other devices

·         Your app gets launched in both online/offline modes.

·         Your app can send/receive push notifications even in offline mode

·         It has a large installation capacity

·         Consuming less space it can handle CPU-intensive workloads effortlessly

Objective: In this blog, we are giving you a comprehensive step-by-step guide that leads you to turn your project into PWA using Laravel

A Quick Step-By-Step Guide to Convert your App into PWA using Laravel


To convert your Laravel app into PWA, follow this quick guide. After completing the last step, you will have your PWA app ready, within a few minutes.

Step 1: Deploy Server


To initiate the process, deploy the Laravel development server. Make sure that you are not using NPM or BrowserSync. For deploying the server.

php artisan serve

NOTE: When you deploy the development server using NPM or BrowserSync, the PWA does not work. Because BrowserSync is using a virtual host. So, the manifest will register the virtual host whereas the service worker will register a different URL. As a result, it does not show the option for installation in the browser.

Step 2: Install the Composer Package


Install the Laravel PWA package. By doing this you complete half of the task.

composer require silviolleite/laravelpwa

Once installed, publish its assets and configuration file.

Php artisan vendor:publish –provider=”LaravelPWA\Providers\LaravelPWAServiceProvider”

In the configuration folder, you will find the ‘laravelpwa.php’ file. Make necessary changes in the app name (short & long), and colours to match the design palette.


‘manifest’ => [

‘name’ => env(‘APP_NAME’, ‘MY PWA APP’),

‘short_name’ => ‘PWA’,

‘start_url’ => ‘/’,

‘background_color’ => ‘#00be9c’,

‘theme_color’ => ‘#1c3c50’,

‘display’ => ‘standalone’,

‘orientation’=> ‘any’,

‘icons’ => [

’72×72′ => ‘/images/icons/icon-72×72.png’,

‘96×96′ => ‘/images/icons/icon-96×96.png’,

‘128×128’ => ‘/images/icons/icon-128×128.png’,

‘144×144’ => ‘/images/icons/icon-144×144.png’,

‘152×152’ => ‘/images/icons/icon-152×152.png’,

‘192×192’ => ‘/images/icons/icon-192×192.png’,

‘384×384’ => ‘/images/icons/icon-384×384.png’,

‘512×512’ => ‘/images/icons/icon-512×512.png’


‘splash’ => [

‘640×1136’ => ‘/images/icons/splash-640×1136.png’,

‘750×1334’ => ‘/images/icons/splash-750×1334.png’,

‘828×1792’ => ‘/images/icons/splash-828×1792.png’,

‘1125×2436’ => ‘/images/icons/splash-1125×2436.png’,

‘1242×2208’ => ‘/images/icons/splash-1242×2208.png’,

‘1242×2688’ => ‘/images/icons/splash-1242×2688.png’,

‘1536×2048’ => ‘/images/icons/splash-1536×2048.png’,

‘1668×2224’ => ‘/images/icons/splash-1668×2224.png’,

‘1668×2388’ => ‘/images/icons/splash-1668×2388.png’,

‘2048×2732’ => ‘/images/icons/splash-2048×2732.png’,
‘custom’ => []


Step 3: Customize the images


In the same configuration file (above image), two arrays are representing the images: icons and splash. For normal operation of PWA, you need to customize them with your icons and splash. These images are published into the public folder with the path: ‘public/images/icons.’

You can specify the size for each icon as:


‘path’ => ‘/images/icons/icon-512×512.png’,

‘sizes’ => ‘512×512’,

‘purpose’ => ‘any’


Step 4: Include Blade directive


To make the assets available in the browser, you must include the Blade directive ‘@laravelPWA’ in the parent view layout. Always remember to do this before closing the head tag.

 App … @laravelPWA … @yield(‘content’) …

Step 5: Offline Route


What if there is a network failure? You must create an offline route to respond with a default view in case there is a network failure. For this, you must modify the Route files with path: routes/web.php, and add:

Route::get(‘/offline’, function () {

return view(‘modules/laravelpwa/offline’);


Step 6: Customize Service Worker


Here, you may worry about losing control, which can be avoided by using the importScripts option to include any custom logic that you need. Also, you can use any package that generates your service worker. Basically, service workers are necessary because they provide you with the exact requirement that you want. You can select your own set of libraries that will interact with the chosen database. And, once you have got the plugin installed, you can now customize the PWA-Laravel project.

However, there is also a default service provider code that can be implemented by any given app:

var staticCacheName = “pwa-v” + new Date().getTime();

var filesToCache = [























// Cache on install

self.addEventListener(“install”, event => {




            .then(cache => {

                return cache.addAll(filesToCache);




// Clear cache on activate

self.addEventListener(‘activate’, event => {


        caches.keys().then(cacheNames => {

            return Promise.all(


                    .filter(cacheName => (cacheName.startsWith(“pwa-“)))

                    .filter(cacheName => (cacheName !== staticCacheName))

                    .map(cacheName => caches.delete(cacheName))





// Serve from Cache

self.addEventListener(“fetch”, event => {



            .then(response => {

                return response || fetch(event.request);


            .catch(() => {

                return caches.match(‘offline’);




In case if you wish to customize the service worker functionality, you can update the following code


Step 7: Customize for offline view


While publishing the assets with the ‘vendor: publish’ command, you will come across a published Blade view with path: view folder/modules/laravelpwa/offline.blade.php.

Customize it accordingly so that it renders smoothly in the parent view layout (in which you put the ‘@laravelPWA’ directive).


Finally, HIT the Refresh button and enjoy your Laravel in the PWA app.

On installation, the device prompts to add the web app shortcut on the home screen. Once the app is launched and displayed on the home screen, it can be easily navigated without relying on the back/forward tab of the browser.



This is the quickest way to turn your project into PWA with Laravel. Within a few minutes, you get to see PWA coming into action with Laravel. And, your app starts behaving like a native app. In case you get stuck at any point in this process, you can always consider referring to web.dev documentation.

So, Good Luck! Let us know in the comment section how fast you build your PWA with Laravel.

Table of Contents

    Contact Us


    What's on your mind? Tell us what you're looking for and we'll connect you to the right people.

    Let's discuss your project.