Power Permission

4 min read

Power Permission

Overview

API Methods

Manifest Declaration

{ "permissions": ["power"] }

Use Cases

MV3 Considerations

Battery Impact

Code Examples

Basic Keep-Awake Toggle

import { createStorage, defineSchema } from '@theluckystrike/webext-storage';

const schema = defineSchema({ keepAwake: 'boolean' });
const storage = createStorage(schema, 'local');

chrome.action.onClicked.addListener(async () => {
  const isAwake = await storage.get('keepAwake');
  if (isAwake) {
    chrome.power.releaseKeepAwake();
    await storage.set('keepAwake', false);
    chrome.action.setBadgeText({ text: '' });
  } else {
    chrome.power.requestKeepAwake('display');
    await storage.set('keepAwake', true);
    chrome.action.setBadgeText({ text: 'ON' });
  }
});

Alarm-Based Re-request Pattern for MV3

chrome.runtime.onStartup.addListener(async () => {
  const isAwake = await storage.get('keepAwake');
  if (isAwake) {
    chrome.power.requestKeepAwake('display');
  }
});

// Timed keep-awake with auto-release
chrome.power.requestKeepAwake('display');
chrome.alarms.create('release-power', { delayInMinutes: 30 });

chrome.alarms.onAlarm.addListener((alarm) => {
  if (alarm.name === 'release-power') {
    chrome.power.releaseKeepAwake();
    storage.set('keepAwake', false);
  }
});

Integration with @theluckystrike/webext-storage

import { createStorage, defineSchema } from '@theluckystrike/webext-storage';

const schema = defineSchema({ 
  keepAwake: 'boolean',
  keepAwakeLevel: 'string' 
});
const storage = createStorage(schema, 'local');

// Persist and restore state
async function enableKeepAwake(level: 'display' | 'system') {
  chrome.power.requestKeepAwake(level);
  await storage.set('keepAwake', true);
  await storage.set('keepAwakeLevel', level);
}

async function disableKeepAwake() {
  chrome.power.releaseKeepAwake();
  await storage.set('keepAwake', false);
}

Cross-references

Frequently Asked Questions

How do I prevent screen sleep in Chrome extension?

Use chrome.power.requestKeepAwake() to prevent the system from sleeping. Use chrome.power.releaseKeepAwake() when done.

Does power API work on all platforms?

The power API works on ChromeOS, Windows, and Mac. Linux support is limited. —

Part of the Chrome Extension Guide by theluckystrike. Built at zovo.one.

No previous article
No next article