Introduction to the platform


Introduction is a platform for building websites and progressive web apps (PWAs) with offline capabilities. The platform is composed of both a server component and client code that runs in the browser. The server component is implemented in node.js, so the platform is a 100% JavaScript stack. is open-source software released under the Apache 2.0 OSS licence.

Why offline?

In a world of mobile internet, offline capabilites are increasingly important due to the wide variety of issues that can affect mobile connectivity, including:

  • Network coverage
  • Connection blackspots
  • Contention
  • Latency
  • Usage caps and connection throttling
  • Data plans

Providing your website or PWA with offline capabilities can help solve many of the problems that these issues present.

Offline and PWAs

The benefits that offline capabilities can give are most obvious when dealing with progressive web apps. A PWA is simply a web page, but when combined with JS code, APIs and web manifests, a PWA is able to reproduce a lot of the functionality that previously could only be provided by a native mobile app. Offline capabilities are vital to ensure that a PWA meets a user's basic expectations of how an app should work; for example, that it opens and loads quickly and reliably, with or without a network connection; and that the app continues to function and provides at least basic functionality when opened without a connection.

Offline and websites

Less obviously, offline capabilities can provide benefits for standard websites by ensuring that key content is always available and loads quickly, regardless of network conditions. Judicious use of offline content can improve the overall quality and feel of a website, by ensuring quick and reliable load times with or without a connection. Offline capabilities work naturally with static content and static websites, but even websites with a lot of dynamic content can benefit, for example by storing standard website assets like stylesheets and images in offline caches. is a platform for building websites and progressive web apps (PWAs) with offline capabilities. The platform is composed of the following parts:

  • A client-side service worker component, which downloads and caches content from the server and serves it to client pages in the browser.
  • A server component, written in node.js, which is responsible for serving content to the client service worker.
  • A client-side JS SDK which allows code running within a page to communicate with the service worker.
  • A collection of development tools used to build and publish content.

The stack is 100% JavaScript.

How it works

The way that supports offline content is quite different to that taken by other projects. Something like Workbox, for example, is a purely client-side solution., on the otherhand, takes a more dynamic, content driven approach, where the server dictates exactly what content is visible to the client and how and when it should cache it, or when the client should download content updates.

At the core of this approach are two HTTP-based APIs used by the client:

  • The updates API is a server feed that tells the client about the content that is available, and how and when to download updates to that content.
  • The query API allows the client to perform queries on available content in an offline-safe manner.

Both of these APIs, together with further details of's operation, are described in the xxx section of this website.

Getting is open-source software released under the Apache 2.0 OSS licence.

All source code is available on GitHub.

Getting started is a client/server platform, so to start developing with you will need a server to run your client code against.

The build tools include a development server which can be used for local test and debug of client code, and which is sufficient to play around with's features.

To run and test fully offline-capable clients, you will need to test against the content server running on a publically accessible host with SSL. You can setup and host your own server using the instructions provided here; alternatively, a hosted server is available at where you can create a free to use account. This hosted server is provided as a convenience for developers wanting to try out and who want to get up and running quickly with a minumum of effort; however, the service isn't (for now) intended for production or commercial usage, so if you plan to build a client-facing PWA or website using then you will need to host the server component yourself.

Next steps

See the following guides: