Skip to content

Fatblabs/FireEfficient

Repository files navigation

FireEfficient

FireEfficient is a Firefox WebExtension that keeps ordinary tabs in an efficiency profile while letting the user choose the only sites that get the max-performance profile.

What it does

  • Lets only the user add domains to the max-performance list from the popup or options page.
  • Marks user-listed sites as MAX, leaves their page resources unrestricted, and sets autoDiscardable to false.
  • Marks other web pages as ECO and applies Light, Balanced, or Strict savings.
  • Adapts the inactive-tab discard delay when many ECO tabs are loaded.
  • Protects ECO tabs with unsaved form input from automatic offload.
  • Reduces animation work, pauses hidden media, and discards inactive tabs according to the selected ECO intensity.
  • Keeps network request savings off by default so uBlock Origin can remain the only request blocker.
  • Skips automatic discarding for pinned and audible tabs by default.
  • Shows currently offloaded tabs and FireEfficient session offloads in the toolbar popup.

After Install

FireEfficient starts with a simple model:

  1. Most normal web pages begin in ECO. ECO tabs can use calmer page behavior and can be offloaded after your configured delay.
  2. Add demanding sites to the MAX list. MAX sites are for editors, games, video calls, dashboards, and other pages that should stay responsive and protected from automatic offload.
  3. Leave Network request savings off if uBlock Origin is installed and you want uBlock to remain the only request blocker. If you enable it, Firefox asks for optional request permissions and FireEfficient only blocks requests in Strict intensity.

Automatic tab discard does not close a tab. Firefox unloads the page from memory and reloads it when you return. Use a longer delay, disable automatic discard with 0, or add a site to MAX if a workflow should stay loaded.

Firefox API boundary

Firefox WebExtensions do not expose a per-tab hardware acceleration switch. MDN documents tab discard controls through tabs.discard() and tabs.update({ autoDiscardable }), blocking requests through webRequest.onBeforeRequest with "blocking" and the webRequestBlocking permission, and browserSettings as a set of global browser settings. Hardware acceleration is not one of those exposed settings, and the exposed settings are global rather than per-tab.

FireEfficient therefore uses the supported per-tab and per-request controls: high-performance sites are protected from tab discard and bypass conservation rules; all other sites use the efficiency profile.

uBlock Origin Compatibility

FireEfficient is designed to sit beside uBlock Origin without competing with it. By default, FireEfficient does not register its blocking webRequest.onBeforeRequest listener, so uBlock Origin keeps ownership of ad, tracker, and cosmetic/network filtering.

The optional Network request savings setting can be enabled if you want FireEfficient to cancel a small set of expensive request types on ECO tabs. It only becomes active in Strict intensity. Leave it off when uBlock Origin is installed unless you intentionally want both extensions to participate in request cancellation. MDN notes that when multiple blocking request handlers modify the same request, only one modification takes effect, and redirects/cancellations have the same precedence.

Load in Firefox

  1. Open about:debugging#/runtime/this-firefox.
  2. Choose Load Temporary Add-on....
  3. Select this repository's manifest.json.

The extension appears in the toolbar as FireEfficient.

FireEfficient requires Firefox 142 or newer.

Validate

Run syntax checks:

npm run check

Run the local smoke tests:

npm test

Run the Firefox smoke test with the pinned web-ext dev dependency and geckodriver installed:

npm run test:firefox

Run the full local, linter, and Firefox integration suite:

npm run test:all

Build the AMO upload package:

npm run build

The upload ZIP is written to dist/fireefficient-1.0.0.zip. AMO reviewer/listing notes are in amo/.

Run Mozilla's extension linter:

npm run lint

web-ext is pinned in devDependencies and package-lock.json. Use npm ci before reviewer or release builds to reproduce the same build tooling version.

Documentation Checked

About

Extension that maximizes firefox efficiency and will only switch to high performance on certain tabs,.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors