Super Progressive Web Apps - Version 1.1

Version Description

  • Date: 28.January.2018
  • Aggressive caching of pages using CacheStorage API.
  • Pages once cached are served even if the user is offline.
  • Set custom offline page: Select the page you want the user to see when a page that isn't in the cache is accessed and the user is offline.
Download this release

Release Info

Developer arunbasillal
Plugin Icon 128x128 Super Progressive Web Apps
Version 1.1
Comparing to
See all releases

Code changes from version 1.0 to 1.1

admin/admin-setup.php CHANGED
@@ -80,7 +80,24 @@ function superpwa_register_settings() {
80
  'superpwa_splash_screen_section', // Page slug
81
  'superpwa_splash_screen_section' // Settings Section ID
82
  );
 
 
 
 
 
 
 
 
83
 
 
 
 
 
 
 
 
 
 
84
  }
85
  add_action( 'admin_init', 'superpwa_register_settings' );
86
 
@@ -111,6 +128,7 @@ function superpwa_get_settings() {
111
  $defaults = array(
112
  'background_color' => '#D5E0EB',
113
  'icon' => SUPERPWA_PATH_SRC . 'public/images/logo.png',
 
114
  );
115
 
116
  $settings = get_option('superpwa_settings', $defaults);
80
  'superpwa_splash_screen_section', // Page slug
81
  'superpwa_splash_screen_section' // Settings Section ID
82
  );
83
+
84
+ // Offline Page
85
+ add_settings_section(
86
+ 'superpwa_offline_page_section', // ID
87
+ __('Offline Page', 'super-progressive-web-apps'), // Title
88
+ 'superpwa_offline_page_note_cb', // Callback Function
89
+ 'superpwa_offline_page_section' // Page slug
90
+ );
91
 
92
+ // Background Color
93
+ add_settings_field(
94
+ 'superpwa_offline_page', // ID
95
+ __('Offline Page', 'super-progressive-web-apps'), // Title
96
+ 'superpwa_offline_page_cb', // Callback function
97
+ 'superpwa_offline_page_section', // Page slug
98
+ 'superpwa_offline_page_section' // Settings Section ID
99
+ );
100
+
101
  }
102
  add_action( 'admin_init', 'superpwa_register_settings' );
103
 
128
  $defaults = array(
129
  'background_color' => '#D5E0EB',
130
  'icon' => SUPERPWA_PATH_SRC . 'public/images/logo.png',
131
+ 'offline_page' => 0,
132
  );
133
 
134
  $settings = get_option('superpwa_settings', $defaults);
admin/admin-ui-render.php CHANGED
@@ -8,6 +8,8 @@
8
  * @function superpwa_splash_screen_cb() Splash Screen Callback
9
  * @function superpwa_background_color_cb() Background Color
10
  * @function superpwa_icons_cb() Application Icons
 
 
11
  * @function superpwa_admin_interface_render() Admin interface renderer
12
  */
13
 
@@ -86,6 +88,40 @@ function superpwa_icons_cb() {
86
 
87
  <?php
88
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
  /**
91
  * Admin interface renderer
@@ -125,6 +161,9 @@ function superpwa_admin_interface_render () {
125
  // Splash Screen
126
  do_settings_sections( 'superpwa_splash_screen_section' ); // Page slug
127
 
 
 
 
128
  // Output save settings button
129
  submit_button( __('Save Settings', 'super-progressive-web-apps') );
130
  ?>
8
  * @function superpwa_splash_screen_cb() Splash Screen Callback
9
  * @function superpwa_background_color_cb() Background Color
10
  * @function superpwa_icons_cb() Application Icons
11
+ * @function superpwa_offline_page_note_cb() Offline Page Note
12
+ * @function superpwa_offline_page_cb() Offline Page Dropdown
13
  * @function superpwa_admin_interface_render() Admin interface renderer
14
  */
15
 
88
 
89
  <?php
90
  }
91
+
92
+ /**
93
+ * Offline Page Note
94
+ *
95
+ * @since 1.0
96
+ */
97
+ function superpwa_offline_page_note_cb() {
98
+
99
+ echo '<p>' . __('The page you set here will be displayed if the requested page is not cached and the user is offline. Defaults to <code>WordPress Address</code> in <code>Settings</code> > <code>General</code>)', 'super-progressive-web-apps') . '</p>';
100
+ }
101
+
102
+ /**
103
+ * Offline Page Dropdown
104
+ *
105
+ * @since 1.0
106
+ */
107
+ function superpwa_offline_page_cb() {
108
+
109
+ // Get Settings
110
+ $settings = superpwa_get_settings(); ?>
111
+
112
+ <!-- WordPress Pages Dropdown -->
113
+ <label for="superpwa_settings[offline_page]">
114
+ <?php echo wp_dropdown_pages( array(
115
+ 'name' => 'superpwa_settings[offline_page]',
116
+ 'echo' => 0,
117
+ 'show_option_none' => __( '&mdash; Default &mdash;' ),
118
+ 'option_none_value' => '0',
119
+ 'selected' => isset($settings['offline_page']) ? $settings['offline_page'] : '',
120
+ )); ?>
121
+ </label>
122
+
123
+ <?php
124
+ }
125
 
126
  /**
127
  * Admin interface renderer
161
  // Splash Screen
162
  do_settings_sections( 'superpwa_splash_screen_section' ); // Page slug
163
 
164
+ // Offline Page
165
+ do_settings_sections( 'superpwa_offline_page_section' ); // Page slug
166
+
167
  // Output save settings button
168
  submit_button( __('Save Settings', 'super-progressive-web-apps') );
169
  ?>
public/js/register-sw.js CHANGED
@@ -1,6 +1,6 @@
1
  if ('serviceWorker' in navigator) {
2
  window.addEventListener('load', function() {
3
  navigator.serviceWorker.register(superpwa_sw.url)
4
- .then(function() { console.log('SuperPWA Service Worker Registered'); });
5
  });
6
  }
1
  if ('serviceWorker' in navigator) {
2
  window.addEventListener('load', function() {
3
  navigator.serviceWorker.register(superpwa_sw.url)
4
+ .then(function() { console.log('SuperPWA service worker ready'); });
5
  });
6
  }
public/sw.php CHANGED
@@ -49,19 +49,25 @@ function superpwa_sw_template() {
49
  // Start output buffer. Everything from here till ob_get_clean() is returned
50
  ob_start(); ?>
51
  'use strict';
52
- const cacheName = '<?php echo parse_url( get_bloginfo( 'wpurl' ) )['host'] . '-ver-' . SUPERPWA_VERSION; ?>';
53
- const startPage = '/';
54
- const offlinePage = '/';
 
 
 
 
 
 
55
  const fallbackImage = '<?php echo $settings['icon']; ?>';
56
  const filesToCache = [startPage, offlinePage, fallbackImage];
57
- const neverCache = [/\/wp-admin/,/\/wp-login/,/preview=true/];
58
 
59
  // Install
60
  self.addEventListener('install', function(e) {
61
- console.log('SuperPWA Service Worker Installation');
62
  e.waitUntil(
63
  caches.open(cacheName).then(function(cache) {
64
- console.log('SuperPWA Service Worker Caching Dependencies');
65
  return cache.addAll(filesToCache);
66
  })
67
  );
@@ -69,12 +75,12 @@ self.addEventListener('install', function(e) {
69
 
70
  // Activate
71
  self.addEventListener('activate', function(e) {
72
- console.log('SuperPWA Service Worker Activation');
73
  e.waitUntil(
74
  caches.keys().then(function(keyList) {
75
  return Promise.all(keyList.map(function(key) {
76
- if (key !== cacheName) {
77
- console.log('SuperPWA Service Worker Old Cache Removed', key);
78
  return caches.delete(key);
79
  }
80
  }));
@@ -85,13 +91,38 @@ self.addEventListener('activate', function(e) {
85
 
86
  // Fetch
87
  self.addEventListener('fetch', function(e) {
88
- console.log('SuperPWA fetched ', e.request.url);
89
- e.respondWith(
90
- caches.match(e.request).then(function(response) {
91
- return response || fetch(e.request);
92
- })
93
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  });
 
 
 
 
 
 
 
 
95
  <?php return ob_get_clean();
96
  }
97
 
49
  // Start output buffer. Everything from here till ob_get_clean() is returned
50
  ob_start(); ?>
51
  'use strict';
52
+
53
+ /**
54
+ * Service Worker of SuperPWA
55
+ * https://wordpress.org/plugins/super-progressive-web-apps/
56
+ */
57
+
58
+ const cacheName = '<?php echo parse_url( get_bloginfo( 'wpurl' ) )['host'] . '-superpwa-' . SUPERPWA_VERSION; ?>';
59
+ const startPage = '<?php echo trailingslashit(get_bloginfo( 'wpurl' )); ?>';
60
+ const offlinePage = '<?php echo get_permalink($settings['offline_page']) ? trailingslashit(get_permalink($settings['offline_page'])) : trailingslashit(get_bloginfo( 'wpurl' )); ?>';
61
  const fallbackImage = '<?php echo $settings['icon']; ?>';
62
  const filesToCache = [startPage, offlinePage, fallbackImage];
63
+ const neverCacheUrls = [/\/wp-admin/,/\/wp-login/,/preview=true/];
64
 
65
  // Install
66
  self.addEventListener('install', function(e) {
67
+ console.log('SuperPWA service worker installation');
68
  e.waitUntil(
69
  caches.open(cacheName).then(function(cache) {
70
+ console.log('SuperPWA service worker caching dependencies');
71
  return cache.addAll(filesToCache);
72
  })
73
  );
75
 
76
  // Activate
77
  self.addEventListener('activate', function(e) {
78
+ console.log('SuperPWA service worker activation');
79
  e.waitUntil(
80
  caches.keys().then(function(keyList) {
81
  return Promise.all(keyList.map(function(key) {
82
+ if ( key !== cacheName ) {
83
+ console.log('SuperPWA old cache removed', key);
84
  return caches.delete(key);
85
  }
86
  }));
91
 
92
  // Fetch
93
  self.addEventListener('fetch', function(e) {
94
+
95
+ // Return if the current request url is in the never cache list
96
+ if ( ! neverCacheUrls.every(checkNeverCacheList, e.request.url) ) {
97
+ console.log('SuperPWA: Current page is excluded from cache');
98
+ return;
99
+ }
100
+
101
+ // Return if request url protocal isn't http or https
102
+ if ( ! e.request.url.match(/^(http|https):\/\//i) )
103
+ return;
104
+
105
+ e.respondWith(
106
+ caches.match(e.request).then(function(response) {
107
+ return response || fetch(e.request).then(function(response) {
108
+ return caches.open(cacheName).then(function(cache) {
109
+ cache.put(e.request, response.clone());
110
+ return response;
111
+ });
112
+ });
113
+ }).catch(function() {
114
+ return caches.match(offlinePage);
115
+ })
116
+ );
117
  });
118
+
119
+ // Check if current url is in the neverCacheUrls list
120
+ function checkNeverCacheList(url) {
121
+ if ( this.match(url) ) {
122
+ return false;
123
+ }
124
+ return true;
125
+ }
126
  <?php return ob_get_clean();
127
  }
128
 
readme.txt CHANGED
@@ -1,7 +1,7 @@
1
  === Super Progressive Web Apps ===
2
  Contributors: arunbasillal, josevarghese
3
  Donate link: http://millionclues.com/donate/
4
- Tags: pwa, progressive web apps, manifest, android app, mobile, superpwa
5
  Requires at least: 3.5.0
6
  Tested up to: 4.9.2
7
  Requires PHP: 5.3
@@ -13,52 +13,106 @@ SuperPWA helps you convert your WordPress website into a Progressive Web App.
13
 
14
  == Description ==
15
 
16
- A Progressive Web App (PWA) is a new technology that is a middle ground between a website and a mobile app. They are installed on the phone like a normal app (web app) and can be accessed from the home screen.
17
 
18
- Users can come back to your website by launching the app from their home screen and interact with your website through an app like interface.
19
 
20
- **What included in the box**
21
 
22
- Here is a list of feature the current release can do:
23
 
24
  * Generate a manifest for your website and add it to the <head> of the page
25
  * Set the application icon for your Progressive Web App.
26
  * Set the background color for the splash screen of your Progressive Web App.
27
- * Your website will show "Add to home screen" notice when accessed in a supported browser (please refer FAQ).
 
 
 
28
 
29
- Please note that the app is very basic at the moment and does not include offline fall-backs. Only the homepage is cached offline as of now.
30
 
31
- **What features are we working on**
 
 
 
32
 
33
- * Offline pages
34
- * Aggressive caching of pages
35
- * Better admin notices and info
36
 
37
- **About us**
38
 
39
- We are a duo who got excited about the idea. Our mission is simple: Help you build an awesome PWA that users would want to have on their home screen.
40
 
41
- When we first heard about PWA we wanted to learn everything about. We have spent countless hours learning and wants to share it with the world.
 
 
 
 
 
 
 
 
42
 
43
  Please give us your constructive feedback and support.
44
 
45
- **Feature Requests, Issues, Pull Requests**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
- Here is our repository on [Github](https://github.com/SuperPWA/Super-Progressive-Web-Apps). Send us your pull requests, feature requests or issues, if any.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  == Installation ==
50
 
51
  To install this plugin:
52
 
53
- 1. Install the plugin through the WordPress admin interface, or upload the plugin folder to /wp-content/plugins/ using ftp.
54
  2. Activate the plugin through the 'Plugins' screen in WordPress.
55
  3. Go to WordPress Admin > Settings > SuperPWA
56
 
57
  == Frequently Asked Questions ==
58
 
59
- = Which devices and browsers will it work? =
60
-
61
- Progressive web apps need browsers that support manifests and service workers. Currently Google Chrome (version 57+), Chrome for Android (62), Mozilla Firefox (57), Firefox for Android (58) are the major browsers that support PWA. The list is fast growing and is likely to be supported in most major browsers by the end of this year.
62
 
63
  == Screenshots ==
64
 
@@ -66,6 +120,12 @@ Progressive web apps need browsers that support manifests and service workers. C
66
 
67
  == Changelog ==
68
 
 
 
 
 
 
 
69
  = 1.0 =
70
  * Date: 22.January.2018
71
  * First release of the plugin.
1
  === Super Progressive Web Apps ===
2
  Contributors: arunbasillal, josevarghese
3
  Donate link: http://millionclues.com/donate/
4
+ Tags: pwa, progressive web apps, manifest, web manifest, android app, chrome app, add to homescreen, mobile web
5
  Requires at least: 3.5.0
6
  Tested up to: 4.9.2
7
  Requires PHP: 5.3
13
 
14
  == Description ==
15
 
16
+ Progressive Web Apps (PWA) is a new technology that creates a middle ground between a website and a mobile app. They are installed on the phone like a normal app (web app) and can be accessed from the home screen.
17
 
18
+ Users can come back to your website by launching the app from their home screen and interact with your website through an app-like interface. Your return visitors will experience almost-instant loading times and enjoy the great performance benefits of your PWA!
19
 
20
+ ### What's in the box
21
 
22
+ Here are the current features of Super Progressive Web Apps:
23
 
24
  * Generate a manifest for your website and add it to the <head> of the page
25
  * Set the application icon for your Progressive Web App.
26
  * Set the background color for the splash screen of your Progressive Web App.
27
+ * Your website will show the "Add to home screen" notice when accessed in a supported browser.
28
+ * Aggressive caching of pages using CacheStorage API.
29
+ * Pages once cached are served even if the user is offline.
30
+ * Set custom offline page: Select the page you want the user to see when a page that isn't in the cache is accessed and the user is offline.
31
 
32
+ **Features are we currently working on:**
33
 
34
+ * Cache busting features.
35
+ * Better handling of service worker updates.
36
+ * Better admin notices and info.
37
+ * Better UI.
38
 
39
+ ### Progressive Web App Minimum Requirements
 
 
40
 
41
+ Progressive Web Apps require that your WordPress website is served from a secure origin i.e. your website should be HTTPS and not HTTP. If your website isn't HTTPS, please contact your host about it. You can also [ask us](https://wordpress.org/support/plugin/super-progressive-web-apps) if you need help.
42
 
43
+ ### Device and Browser Support For PWA
44
 
45
+ Progressive web apps need browsers that support manifests and service workers. Currently Google Chrome (version 57+), Chrome for Android (62), Mozilla Firefox (57), Firefox for Android (58) are the major browsers that support PWA.
46
+
47
+ The list is fast growing and is likely to be supported in most major browsers by the end of this year.
48
+
49
+ ### About us
50
+
51
+ We are a duo who got excited about the idea. Our mission is simple: Help you build an awesome PWA that your users would want to have on their home screen.
52
+
53
+ When we first heard about PWA we wanted to learn everything about it. We have spent countless hours learning and wants to share it with the world.
54
 
55
  Please give us your constructive feedback and support.
56
 
57
+ ### Feature Requests, Issues, Pull Requests
58
+
59
+ Here is our repository on [GitHub](https://github.com/SuperPWA/Super-Progressive-Web-Apps). Send us your pull requests, feature requests or issues, if any.
60
+
61
+ ### How To Convert Your WordPress Website Into A Progressive Web App
62
+
63
+ #### WordPress Installation
64
+
65
+ * Visit WordPress Admin > Plugins > Add New
66
+ * Search for 'Super Progressive Web Apps'
67
+ * Click "Install Now" and then "Activate" Super Progressive Web Apps
68
+
69
+ To install manually:
70
+
71
+ * Upload super-progressive-web-apps folder to the /wp-content/plugins/ directory on your server
72
+ * Go to WordPress Admin > Plugins
73
+ * Activate Super Progressive Web Apps plugin from the list.
74
 
75
+ #### Customizing Your Progressive Web App
76
+
77
+ Your Progressive Web App should be ready to test with the default settings upon activation. You can customize it further and make it truly your own.
78
+
79
+ * Go to WordPress Admin > Settings > SuperPWA
80
+ * Set a Background Color for the splash screen to be shown when your PWA is opened on a mobile device.
81
+ * Set the Application Icon. This will be the icon of your PWA when it is added to the homescreen in a mobile device. The icon must be a PNG image and exactly 192 x 192 pixels in size.
82
+ * Set the Offline Page. This page will be displayed if the user is offline and the page he requested is not cached already. Ideally you should create a dedicated WordPress page and set it here. Within the page you create, you could add a note that reads, "It looks like you are offline and the page you requested is not available right now. Please check back again once you are online.".
83
+ * Click "Save Settings".
84
+
85
+ #### Testing Your Progressive Web App
86
+
87
+ * Open a supported browser in a supported device (for eg: Chrome for Android (62 or higher) in an Android Phone)
88
+ * Enter your website and wait till it fully loads
89
+ * You should see a pop-up that has your Application Icon and a button that reads "ADD TO HOME SCREEN".
90
+ * Click on it and your PWA will be added to your home screen. Wait for the install to complete.
91
+ * Go to your home screen and open your PWA. Browse into a few pages if you like. Close the App.
92
+ * Disconnect from the internet and now open your PWA again. You should be able to see all the pages that you previously browsed.
93
+ * Try visiting a page that you did not visit before. You should see the page you set as your "Offline Page" in the settings of SuperPWA.
94
+
95
+ #### Troubleshooting Your Progressive Web App
96
+
97
+ Uh, oh. Your PWA did not work as expected? You do not see the "Add to Home Screen" notice?
98
+
99
+ * Make sure your website has a SSL certificate installed. i.e. your website should be https instead of http (as in https://your-domain.com).
100
+ * Make sure you are using a supported device and a supported browser. Refer to the "Device and Browser Support For PWA" list above.
101
+ * Clear the browser cache and try again. In Chrome for Android, go to Settings > Privacy > "Clear browsing data".
102
+ * If the application icon does not update after first install, delete the PWA from your phone, clear browser cache and install again. (We are working on making it better.)
103
+ * Create a [new support ticket](https://wordpress.org/support/plugin/super-progressive-web-apps) and share a link to your website. We will take a look and figure it out for you.
104
 
105
  == Installation ==
106
 
107
  To install this plugin:
108
 
109
+ 1. Install the plugin through the WordPress admin interface, or upload the plugin folder to /wp-content/plugins/ using FTP.
110
  2. Activate the plugin through the 'Plugins' screen in WordPress.
111
  3. Go to WordPress Admin > Settings > SuperPWA
112
 
113
  == Frequently Asked Questions ==
114
 
115
+ If you have any questions, please ask it on the [support forum](https://wordpress.org/support/plugin/super-progressive-web-apps).
 
 
116
 
117
  == Screenshots ==
118
 
120
 
121
  == Changelog ==
122
 
123
+ = 1.1 =
124
+ * Date: 28.January.2018
125
+ * Aggressive caching of pages using CacheStorage API.
126
+ * Pages once cached are served even if the user is offline.
127
+ * Set custom offline page: Select the page you want the user to see when a page that isn't in the cache is accessed and the user is offline.
128
+
129
  = 1.0 =
130
  * Date: 22.January.2018
131
  * First release of the plugin.
superpwa.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: Convert your WordPress website into a Progressive Web App
6
  * Author: SuperPWA
7
  * Contributors: Arun Basil Lal, Jose Varghese
8
- * Version: 1.0
9
  * Text Domain: super-progressive-web-apps
10
  * Domain Path: /languages
11
  * License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
@@ -47,7 +47,7 @@ if ( ! defined('ABSPATH') ) exit;
47
  */
48
  if ( ! defined('SUPERPWA_PATH_ABS ') ) define('SUPERPWA_PATH_ABS', plugin_dir_path( __FILE__ )); // absolute path to the plugin directory. eg - /var/www/html/wp-content/plugins/superpwa/
49
  if ( ! defined('SUPERPWA_PATH_SRC') ) define('SUPERPWA_PATH_SRC', plugin_dir_url( __FILE__ )); // link to the plugin folder. eg - http://example.com/wp/wp-content/plugins/superpwa/
50
- if ( ! defined('SUPERPWA_VERSION') ) define('SUPERPWA_VERSION', '1.0'); // Plugin version
51
  if ( ! defined('SUPERPWA_MANIFEST_FILENAME') ) define('SUPERPWA_MANIFEST_FILENAME', 'superpwa-manifest.json'); // Name of Manifest file
52
  if ( ! defined('SUPERPWA_MANIFEST_ABS') ) define('SUPERPWA_MANIFEST_ABS', trailingslashit( ABSPATH ) . SUPERPWA_MANIFEST_FILENAME); // Absolute path to manifest
53
  if ( ! defined('SUPERPWA_MANIFEST_SRC') ) define('SUPERPWA_MANIFEST_SRC', trailingslashit( get_bloginfo('wpurl') ) . SUPERPWA_MANIFEST_FILENAME); // Link to manifest
5
  * Description: Convert your WordPress website into a Progressive Web App
6
  * Author: SuperPWA
7
  * Contributors: Arun Basil Lal, Jose Varghese
8
+ * Version: 1.1
9
  * Text Domain: super-progressive-web-apps
10
  * Domain Path: /languages
11
  * License: GPL v2 - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
47
  */
48
  if ( ! defined('SUPERPWA_PATH_ABS ') ) define('SUPERPWA_PATH_ABS', plugin_dir_path( __FILE__ )); // absolute path to the plugin directory. eg - /var/www/html/wp-content/plugins/superpwa/
49
  if ( ! defined('SUPERPWA_PATH_SRC') ) define('SUPERPWA_PATH_SRC', plugin_dir_url( __FILE__ )); // link to the plugin folder. eg - http://example.com/wp/wp-content/plugins/superpwa/
50
+ if ( ! defined('SUPERPWA_VERSION') ) define('SUPERPWA_VERSION', '1.1'); // Plugin version
51
  if ( ! defined('SUPERPWA_MANIFEST_FILENAME') ) define('SUPERPWA_MANIFEST_FILENAME', 'superpwa-manifest.json'); // Name of Manifest file
52
  if ( ! defined('SUPERPWA_MANIFEST_ABS') ) define('SUPERPWA_MANIFEST_ABS', trailingslashit( ABSPATH ) . SUPERPWA_MANIFEST_FILENAME); // Absolute path to manifest
53
  if ( ! defined('SUPERPWA_MANIFEST_SRC') ) define('SUPERPWA_MANIFEST_SRC', trailingslashit( get_bloginfo('wpurl') ) . SUPERPWA_MANIFEST_FILENAME); // Link to manifest