Well-deployed technologies

HTML5’s ApplicationCache enables access to Web applications offline through the definition of a manifest of files that the browser is expected to keep in its cache. The feature is well deployed but this approach is extremely limited in terms of how much developers can control what gets cached when. The feature has been obsoleted in HTML 5.1, in favor of the Service Workers specification, which defines a much more powerful approach.

The Page Visibility specification lets developers detect when their application is in the foreground, and thus adapt their operations and resource consumption accordingly.

FeatureSpecificationMaturityCurrent implementations
Offline Web AppsApplicationCache in HTML 5.1REC

Shipped
shipped in firefoxshipped in chromeshipped in edgeshipped in safari

Foreground DetectionPage VisibilityREC

Shipped
shipped in firefoxshipped in chromeshipped in edgeshipped in safari

Technologies in progress

Whether packaged or not, users rely on a variety of metadata (name, icons) to identify the apps they want to use among their list of regularly used applications. The Web App Manifest specification lets developers group all these metadata into a single JSON file.

The Service Workers specification describes a method that enables applications to take advantage of persistent background processing, opening the door to running applications offline.

Not only does Service Workers enables Web applications to work seamlessly offline or in poor network conditions, it also creates a model for Web applications to operate when they have not been opened in a browser window, or even if the browser itself is not running. That ability opens the door for Web applications that run in the background and can react to remotely triggered events.

The Push API enables Web applications to subscribe to remote notifications that, upon reception, wake them up. Native applications have long enjoyed the benefits of greater user engagement that these notifications bring.

The Web Background Synchronization specification builds on top of Service Workers to enable Web applications to keep their user data up to date seamlessly, by running network operations in the background, adjusting to possibly unreliable connections that users often experience on mobile devices.

FeatureSpecificationMaturityCurrent implementations
PackingWeb App ManifestWD

In development
indevelopment in webkitindevelopment in edge

Shipped
shipped in firefoxshipped in chrome

Offline Web AppsService Workers 1WD

Experimental
experimental in safari

In development
indevelopment in edge

Shipped
shipped in firefoxshipped in chrome

Remote NotificationsPush APIWD

In development
indevelopment in edge

Shipped
shipped in firefoxshipped in chrome

Background SyncWeb Background SynchronizationED

In development
indevelopment in edgeindevelopment in firefox

Shipped
shipped in chrome

Exploratory work

The Web Packaging document describes use cases for a new package format for web sites and applications and outlines such a format.

Applications running on mobile devices can go through different application states, from running to being idle, paused, stopped, discarded, or terminated. Transitions between these states are triggered by the underlying operating system, and hidden from web applications. The Web Lifecycle proposal seeks to expose application state transitions to applications so that these applications can persist/restore state, enable/disable use of network, etc.

FeatureSpecificationGroupImplementation intents
PackingWeb PackagingWeb Platform Incubator Community Group

N/A

State transitionA Lifecycle for the WebWeb Platform Incubator Community Group

In development
indevelopment in chrome

Discontinued features

Task Scheduling
The Task Scheduler API made it possible to trigger a task at a specified time via the service worker associated with a Web app. This specification was in scope of the now-closed System Applications Working Group and was shelved as a result.
Geofencing API
The Geofencing API made it possible to wake up a Web app when a device enters a specified geographical area. This work has been discontinued, partly out of struggles to find a good approach to permission needs that such an API triggers to protect users against privacy issues. Work on this specification could resume in the future depending on interest from would-be implementers.