⭐ Found this useful? Give it a star on GitHub so more developers can find it.
Turn any Symfony application into a Progressive Web App with a fully configurable manifest, service worker, offline page, and install prompt — no vendor lock-in, no hardcoded assets.
This bundle is FrankenPHP worker mode friendly.
- Web App Manifest generated from
nowo_pwa.yaml(name, icons, shortcuts, theme, display mode, scope, start URL) - Service worker with configurable cache strategy (
network-first,cache-first,stale-while-revalidate), precache URLs, and offline fallback - Twig helpers
nowo_pwa_head(),nowo_pwa_install_prompt(), andnowo_pwa_install_links()with route targeting (all/only/except, route names or URL paths) - Install prompt modes —
banner,flash(inline), ormodal; dismiss remind / never-ask-again options - Override-friendly Twig templates with install/offline blocks, bundled
pwa.csstokens, and translations (en, es, fr, it, pt, de, nl; REQ-TWIG-001 / REQ-I18N-001) - TypeScript client for SW registration and install banner (Vite build →
pwa.js) - Works with Symfony 7.4+ and 8.x; no database required
composer require nowo-tech/pwa-bundle# config/packages/nowo_pwa.yaml
nowo_pwa:
manifest:
name: 'My Application'
short_name: MyApp
theme_color: '#0f172a'
icons:
- { src: '/icons/icon-192.png', sizes: '192x192', type: image/png }
- { src: '/icons/icon-512.png', sizes: '512x512', type: image/png }
service_worker:
precache_urls: ['/', '/offline']
offline_url: '/offline'In your base layout:
<head>
{{ nowo_pwa_head() }}
</head>
<body>
{% block body %}{% endblock %}
{{ nowo_pwa_install_prompt() }}
{{ nowo_pwa_install_links() }}
</body>See Installation and Configuration.
- GitHub Actions CI requirements
- Installation
- Configuration
- Usage
- Contributing
- Code of Conduct
- Changelog
- Upgrading
- Release process
- Security
- Engram
- Spec-driven development
- GitHub Spec Kit
make test
make test-ts
make test-coverage
make release-check # includes demo healthcheck on port 8025MIT — see LICENSE.
