Enonic Market Enonic Market
PWA Starter icon

PWA Starter

Framework agnostic Progressive Web App starter kit using Workbox, Webpack and Router library


  • Main page - Offline
  • A sample page - Offline
  • Main page - Online

Progressive Web Apps (PWA) brings together the best of native mobile apps and web.

Framework agnostic

Kickstart your Progressive Web App project with this starter kit. The PWA starter provides the essential building blocks for any PWA project, and lets you use your favourite front-end framework, or roll your own.

Webpack + Workbox

The PWA starter uses modern tools like Webpack for the build process, Workbox for automatic generation of the Service Worker file and dynamic response caching. A manifest file definition is also included.

Url handling and best practice

To handle server side urls, the starter uses the Enonic javascript router library. The starter delivers an out-of-the-box best practice approach for Enonic XP. Everything you need to build and deliver an end-to-end PWA.


  1. 1.4.0

    • Removed menu from the header
    • Upgraded Webpack and Workbox to newer versions
    • Changed default strategy to cache-first
    • Compatibility:
      • 6.12.0
  2. 1.3.0

    • Register Service Worker and embed inlne styles on every page
    • Update SW on app version change
    • Use NetworkFirst caching strategy
    • Compatibility:
      • 6.12.0
  3. 1.2.0

    • Upgrade xp gradle plugin to 1.0.17
    • Compatibility:
      • 6.12.0
  4. 1.1.0

    • Pass 100% audit on Lighthouse
    • Compatibility:
      • 6.12.0
  5. 1.0.0

    • Initial release
    • Compatibility:
      • 6.12.0


Clone PWA Starter

To initialize a new project based on PWA Starter, execute the command below. Remember to replace <com.company.myapp> with a unique name for your app, and </my/projects> with the location you want to store the project. <$XP_INSTALL> is the location of your XP installation.



The init-project tool initializes a new application project structure by retrieving a Git repository, removing all references to the Git repository, and adapting its build file properties (gradle.properties).

Complete init-project documentation