Web/API/WakeLockSentinel

From Get docs

Draft This page is not complete.


Secure contextThis feature is available only in secure contexts (HTTPS), in some or all supporting browsers.


The WakeLockSentinel interface of the Screen Wake Lock API provides a handle to the underlying platform wake lock and can be manually released and reacquired. An Object representing the wake lock is returned via the navigator.wakelock.request() method.

An acquired WakeLockSentinel can be released manually via the release() method, or automatically via the platform wake lock. This can happen if the document becomes inactive or looses visibility, if the device is low on power or the user turns on a power save mode. Releasing all WakeLockSentinel instances of a given wake lock type will cause the underlying platform wake lock to be released.

Properties

This interface provides the following properties.

released Read only
Returns a boolean indicating whether the WakeLockSentinel has been released.
type Read only
Returns a String representation of the currently acquired WakeLockSentinel type. Return values are:
'screen'
  • A screen wake lock. Prevents devices from dimming or locking the screen.

Event handlers

onrelease
Fired when the release() method is called or the wake lock is released by the user agent.

Methods

release()
Releases the WakeLockSentinel, returning a Promise that is resolved once the sentinel has been successfully released.

Examples

In this example we create an asynchronous function which requests a WakeLockSentinel. Once acquired we listen for the onrelease event which can be used to give appropriate UI feedback. The sentinel can be acquired or released via appropriate interactions.

// create a reference for the wake lock
let wakeLock = null;

// create an async function to request a wake lock
const requestWakeLock = async () => {
  try {
    wakeLock = await navigator.wakeLock.request('screen');

    // listen for our release event
    wakeLock.addEventListener('release', () => {
      // if wake lock is released alter the UI accordingly
    });

  } catch (err) {
    // if wake lock request fails - usually system related, such as battery

  }
}

wakeLockOnButton.addEventListener('click', () => {
  requestWakeLock();
})

wakeLockOffButton.addEventListener('click', () => {
  if (wakeLock !== null) {
    wakeLock.release()
      .then(() => {
        wakeLock = null;
      })
  }
})

Specifications

Specification Status Comment
Screen Wake Lock APIThe definition of 'WakeLockSentinel' in that specification. Editor's Draft Initial definition.

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet

WakeLockSentinel

Experimental'

Chrome

Full support 84

Edge

Full support 84

Firefox

No support No

IE

No support No

Opera

Full support Yes

Safari

No support No

WebView Android

Full support 84

Chrome Android

Full support 84

Firefox Android

No support No

Opera Android

Full support Yes

Safari iOS

No support No

Samsung Internet Android

No support No

onrelease

Experimental'

Chrome

Full support 84

Edge

Full support 84

Firefox

No support No

IE

No support No

Opera

Full support Yes

Safari

No support No

WebView Android

Full support 84

Chrome Android

Full support 84

Firefox Android

No support No

Opera Android

Full support Yes

Safari iOS

No support No

Samsung Internet Android

No support No

release

Experimental'

Chrome

Full support 84

Edge

Full support 84

Firefox

No support No

IE

No support No

Opera

Full support Yes

Safari

No support No

WebView Android

Full support 84

Chrome Android

Full support 84

Firefox Android

No support No

Opera Android

Full support Yes

Safari iOS

No support No

Samsung Internet Android

No support No

released

Experimental'

Chrome

Full support 87

Edge

Full support 87

Firefox

No support No

IE

No support No

Opera

Full support Yes

Safari

No support No

WebView Android

Full support 87

Chrome Android

Full support 87

Firefox Android

No support No

Opera Android

Full support Yes

Safari iOS

No support No

Samsung Internet Android

No support No

type

Experimental'

Chrome

Full support 84

Edge

Full support 84

Firefox

No support No

IE

No support No

Opera

Full support Yes

Safari

No support No

WebView Android

Full support 84

Chrome Android

Full support 84

Firefox Android

No support No

Opera Android

Full support Yes

Safari iOS

No support No

Samsung Internet Android

No support No

Legend

Full support  
Full support
No support  
No support
Experimental. Expect behavior to change in the future.'
Experimental. Expect behavior to change in the future.