BB PWA
WordPress plugin to turn any site into an installable PWA - offline mode, install landing page, admin UI, zero dependencies.
by BusinessBloom · github.com/tolvajsanyi/mmtr-wp-pwa · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/tolvajsanyi/mmtr-wp-pwa/archive/refs/heads/main.zipTurn any WordPress site into an installable Progressive Web App — with offline mode, a device-aware install landing page, and full admin configuration. No theme edits required.
Features
- ✅ Web App Manifest – auto-generated
/manifest.jsonserved via WP rewrite rules, no physical file needed - ✅ Service Worker – auto-generated
/sw.jswith configurable caching strategy - ✅ Offline mode – cache-first for static assets, network-first for HTML pages, with fallback to a custom offline page
- ✅ Network Only exceptions – per-URL-prefix exclusions (booking systems, checkout, REST APIs) configured from the admin
- ✅ Install landing page – device-aware page (custom slug, e.g.
/app/) for QR code campaigns: native install prompt on Android, step-by-step guide on iOS Safari - ✅ Admin UI – app name, short name, description, start URL, theme color, background color, icons via WP Media Library
- ✅ Smart cache invalidation – SW version bumps only when relevant settings change, not on every save
- ✅ Cache size limit – FIFO trim keeps the cache under 50 entries to prevent storage bloat
- ✅ Rewrite auto-flush – rules update automatically when the install page slug or status changes
- ✅ iOS meta tags –
apple-mobile-web-app-*andapple-touch-iconinjected into<head>automatically - ✅ Zero dependencies – no Workbox, no npm, no build step
Installation
- Download or clone the repo
- Copy the
bb-pwafolder to/wp-content/plugins/ - Activate the plugin in the WordPress admin
Important: After activation, go to Settings → Permalinks and hit Save to flush rewrite rules. Otherwise
/manifest.jsonand/sw.jswill return 404.
Usage
Settings
WordPress Admin → Settings → BB PWA
App identity
Set the app name (shown at install time), short name (shown under the icon on the home screen, max 12 characters), and start URL (the page that opens when the user taps the icon — e.g. /booking/).
Upload icons via the WP Media Library. Two sizes are required:
- 192×192 px PNG – home screen icon
- 512×512 px PNG – splash screen and app store listing
Offline mode
Enable Offline mode to activate caching. When enabled:
- Static assets (CSS, JS, fonts, images) are served cache-first
- HTML pages are served network-first with a cache fallback
- If the user is offline and the page isn't cached, they see the configured offline fallback page
Create a simple "No internet connection" WP page and select it as the fallback.
Network Only exceptions
List URL prefixes that should never be served from cache — one per line. Use this for booking systems, checkout pages, or any real-time data endpoint. Example:
/booking/
/wp-json/amelia/
/checkout/
These paths always require a live network connection. If the user is offline, the browser's default error is shown.
Install landing page
Enable the Install page and set a slug (default: app). This generates a device-aware page at yourdomain.com/app/:
- Android / Chrome – displays the native
beforeinstallpromptinstall button - iOS Safari – displays a 4-step guide (Share → Add to Home Screen)
- Other browsers – displays a generic message
Point your QR code at this URL. Print it, put it on the desk, done.
Theme color
Sets the browser chrome color on mobile (the status bar area). Also used as the button color on the install landing page with automatic contrast detection.
Compatibility
- Booking systems: Amelia, Bookly, SimplyBook (iframe-free integrations)
- WooCommerce (add
/checkout/and/cart/to Network Only exceptions) - Any WordPress theme
- Apache and Nginx (Cloudflare Tunnel compatible)
Requirements
- WordPress 6.0+
- PHP 7.4+
Changelog
1.1.1
- Fix:
add_option_hook added so SW version bumps correctly on first save (previously onlyupdate_option_was hooked) - Fix: trailing newline added to source file
1.1.0
- Feature:
descriptionfield added to admin and manifest output - Feature: Smart SW version bumping — only triggers on relevant setting changes
- Feature: Rewrite rules auto-flush on slug/status change only
- Feature: Cache size limiter (FIFO, max 50 entries) to prevent storage bloat
1.0.0
- Initial release
Copyright
© 2026 Business Bloom Consulting®
Support
For questions or issues, open a GitHub Issue.