This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The WindowClient interface of the ServiceWorker API represents the scope of a service worker client that is a document in a browser context, controlled by an active worker. The service worker client independently selects and uses a service worker for its own loading and sub-resources.


WindowClient inherits methods from its parent interface, Client.

Gives user input focus to the current client. 
Loads a specified URL into a controlled client page.


WindowClient inherits properties from its parent interface, Client.

WindowClient.focused Read only
A boolean that indicates whether the current client has focus.
WindowClient.visibilityState Read only
Indicates the visibility of the current client. This value can be one of hidden, visible, prerender, or unloaded.


self.addEventListener('notificationclick', function(event) {
  console.log('On notification click: ', event.notification.tag);

  // This looks to see if the current is already open and
  // focuses if it is
    type: "window"
  }).then(function(clientList) {
    for (var i = 0; i < clientList.length; i++) {
      var client = clientList[i];
      if (client.url == '/' && 'focus' in client) {
    if (clients.openWindow)
      return clients.openWindow('/');


Specification Status Comment
Service Workers
The definition of 'WindowClient' in that specification.
Working Draft Initial definition

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support42 Yes441 No ? No
focus42 Yes441 No ? No
navigate49 Yes441 No ? No
focused42 Yes441 No ? No
visibilityState42 Yes441 No ? No
ancestorOrigins ? ? ? ? ? ?
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support No42 ?44 ? No4.0
focus No42 ?44 ? No4.0
navigate No49 ?44 ? No4.0
focused No42 ?44 ? No4.0
visibilityState No42 ?44 ? No4.0
ancestorOrigins ? ? ? ? ? ? ?

1. Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).

See also

Document Tags and Contributors

Last updated by: fscholz,