Skip to main content

Extension compatibility matrix

This is the current measured support snapshot for Crest on Mac. Verified means the listed workflow was exercised in the real extension and browser—not that every version, site, or optional feature is guaranteed.

ExtensionPackage testedStatusWhat is known to workCurrent limit
BitwardenChrome 2026.8.0Verified end to endDevice verification, login, vault, relaunch unlock, popout window, page injector, and autofill.No known limit in the tested workflow.
LastPassChrome 4.155.1Verified end to endLogin, vault, relaunch persistence, matching-item popup, in-field integration, and autofill.No known limit in the tested workflow.
Dark ReaderFirefox 4.9.129Verified core workflowBackground startup, full action controls, page injection, toggling, and site appearance.Advanced behavior on every site and theme combination is not exhaustively certified.
uBlock OriginFirefox 1.73.0Partial—engine limitedMV2 background page, popup controls and live statistics, cosmetic/page integration, and child-frame request classification.WebKit reports requests but does not consume blocking webRequest listener responses, so cancellation, redirect, header mutation, and authentication parity are unavailable.
uBlock Origin LiteChrome 2026.812.1211Startup verifiedThe Declarative Net Request package verifies, installs, and starts cleanly.Full filter-list and site-by-site behavior has not been certified.
SponsorBlockChrome 6.1.6Startup verifiedPackage verification, installation, and background startup.The complete YouTube workflow has not been certified.
1PasswordChrome 8.12.32.33Native companion pendingWorker startup, setup UI, account navigation, native-host launch, and browser-authorization handoff.Pairing and autofill require a Developer ID signed Crest release trusted through 1Password's Add Browser flow.
GrammarlyChrome 14.1320.0PartialThe worker loads.Account-cookie access and an initial tab-creation request still fail.
React Developer ToolsChrome 7.0.1PartialPackage installation and startup.WebKit does not provide the requested isolated execution-world behavior.
TampermonkeyChrome 5.5.0PartialPackage installation and partial background startup.WebKit rejects its tabs.onUpdated startup registration.
iCloud PasswordsChrome 3.3.0Apple entitlement pendingThe package and worker start.Apple's helper requires a managed Web Browser Public Key Credential entitlement that Crest does not currently have.

Status meanings

  • Verified end to end: the important signed-in workflow, page integration, and relaunch behavior were exercised directly.
  • Verified core workflow: the extension's central browser behavior works, but its full option and site matrix was not exhaustively tested.
  • Startup verified: the package verifies, installs, loads, and starts without a recorded runtime failure; deeper behavior is not certified.
  • Partial: useful behavior works, with a known missing API or platform boundary.
  • Engine limited: the missing behavior requires WebKit support that Crest cannot supply safely from browser-app code.

Package and process support

Extension kindCrest supportImplementation boundary
Chrome Manifest V3SupportedKeeps the service worker native. Crest loads a content-addressed compatibility bootstrap before the authored worker while preserving WebKit's runtime, Port, event, and sender identity.
Chrome Manifest V2SupportedKeeps background pages or scripts in their authored document process and layers compatibility before package code.
Firefox WebExtensionsSupportedMozilla-signed packages retain their published identity and Firefox reference environment while using the shared compatibility routes.
Content scriptsSupportedRun in WebKit's isolated world; messaging and sender metadata remain engine-owned. Crest's private native broker is not exposed to webpages.
Popups and extension pagesSupportedUse the extension's WebKit configuration and origin. Action popups remain browser surfaces; requested single-page popup windows can open as native Crest auxiliary windows.
Safari Web ExtensionsNative WebKit pathRun without the Chrome/Firefox preparation layer. Safari app discovery does not make the containing app's native handler portable.
Native companion extensionsConditionalOnly verified signed store identities can resolve external native hosts, and only when the extension requested and received nativeMessaging.
Unpacked extensionsDevelopment supportLoad through the shared compatibility layer, but cannot reach an external native companion.
Safari content blockers and legacy Safari App ExtensionsUnsupportedThese are different extension formats, not portable WebExtensions.

WebExtension API support

The route describes who owns the result:

  • Native keeps WebKit's implementation unchanged.
  • Native + patch preserves WebKit object identity while filling or normalizing a specific contract gap.
  • Emulated is implemented by Crest, with native broker access scoped to the extension's reviewed permissions.
  • Partial is useful but does not match every Chrome or Firefox semantic.
  • Unavailable is intentionally absent; Crest does not return false success.

Actions, runtime, and browser UI

APIChrome / FirefoxWebKit substrateCrest routeCurrent boundary
action, browserAction, pageActionNativeNativeNative + patchPopup lifecycle and user-settings shape normalization.
commandsNativeNativeNative + patchManifest command normalization.
contextMenus / menusNativeNativeNative + patchCrest registry and native webpage-menu presentation; contexts are normalized across Chrome and Firefox.
notificationsNativePartialEmulatedNative notifications plus create, update, clear, query, click, button, and close events.
windowsNativeNativeNative + patchTabs and primary windows are native adapters; a single-URL popup request can become an auxiliary Crest window.
offscreenChrome native / Firefox unavailableNew, conditional native APINativeUses WebKit's document implementation; Crest does not substitute a hidden page.
sidePanel / sidebarActionPlatform-specificPartialUnavailableCrest has no extension-owned sidebar surface yet.
omniboxNativeUnavailableUnavailableNo extension keyword surface yet.

Runtime, lifecycle, and state

APIChrome / FirefoxWebKit substrateCrest routeCurrent boundary
runtimeNativeNativeNative + patchAuthored manifest/base URL, update-check shape, and worker boundaries are normalized without replacing native messaging or Port objects.
extensionNativeNativeNative + patchView and background-page members are restricted to the processes where reference browsers expose them.
alarmsNativeNativeNative + patchMV3 listener and alarm delivery normalization.
idleNativeUnavailableEmulatedmacOS session/input state with query, interval, and transition events.
managementNativeUnavailableEmulated, partialgetSelf only; no cross-extension discovery or mutation.
storageNativeNativeNative + patchNative local, sync, session, and managed areas with cross-context/event normalization.
permissionsNativeNativeNative + patchInternal transport grants are hidden from extension-authored permission queries. Live optional grants for Crest-emulated APIs are not fully supported yet.
i18nNativeNativeNative + patchMessage lookup and empty-token normalization.

Tabs, navigation, and requests

APIChrome / FirefoxWebKit substrateCrest routeCurrent boundary
tabsNativeNativeNative + patchCrest tab/window adapters are authoritative; query/get/message results are normalized.
webNavigationNativePartialNative + patch, partialFrame queries and core lifecycle are native. Four standard events are presence-only until Crest has engine-backed dispatch.
webRequestNativeObserve-onlyNative + patch, partialRequest metadata and child-frame type are normalized. Blocking responses and credential-supplying authentication are unavailable.
declarativeNetRequestNativePartialNative, partialWebKit translates supported rules into content blocking; the translation is not lossless.
cookiesNativeNativeNativeConstrained by reviewed host permissions.
historyNativeUnavailableUnavailableNot implemented.
sessionsNativeUnavailableUnavailableNot implemented.
topSitesNativeUnavailableUnavailableNot implemented.

Page code, data, and platform services

APIChrome / FirefoxWebKit substrateCrest routeCurrent boundary
scriptingNativeNativeNative + patchExecution-world enum and member normalization; actual injection remains native.
userScriptsNativeUnavailableUnavailableDynamic user-script registration is not implemented.
domChrome/WebKit onlyNativeNativeExtension-page and content-script surface.
privacyNativeUnavailableEmulated, partialComplete group shape with conservative values reported as not_controllable; no false claim of changing system policy.
bookmarksNativeUnavailableUnavailableNot implemented.
downloadsNativeUnavailableUnavailableExtension-initiated downloads and vault export are not implemented.
identityChrome native / Firefox partialUnavailableUnavailableBrowser-specific OAuth redirect contract is not implemented.
devtoolsNativePartialNative, partialWebKit's subset only.

What this coverage means

Crest currently routes 36 namespace contracts through one executable matrix. Twenty-five are available in some form and eleven are intentionally unavailable. The strongest coverage is around the flows used by password managers, page modifiers, and extension popups: runtime messaging, storage, tabs, injection, actions, auxiliary windows, permissions, notifications, menus, and lifecycle.

The remaining gaps cluster around three areas: browser-owned data stores such as bookmarks/history/downloads; browser-chrome surfaces such as side panels and omnibox; and request interception semantics WebKit does not expose. Those gaps are documented instead of being replaced with extension-specific shims or successful no-ops.

For the implementation-level contract and pinned Chromium, Firefox, WebKit, and SDK revisions, see the technical API matrix. For package-specific native limits, continue with Direct build, App Store, and native companions.