What are extensions?
Extensions are small programs that add functionality to your browser. They can modify web pages, interact with browser features, and provide custom tools accessible from the toolbar. In Nook, extensions run using the same underlying technology as Safari extensions, with enhanced compatibility for Chrome-style extensions.Extension compatibility
Supported extension types
Nook supports multiple extension formats:- Chrome/Chromium extensions - ZIP archives or unpacked directories containing a
manifest.jsonfile - Safari Web Extensions -
.appexbundles or.appbundles containing extension plugins - Manifest V2 and V3 - Both modern (MV3) and legacy (MV2) manifest versions work
Nook automatically converts Safari extension IDs to work with WKWebExtension, maintaining compatibility with extensions that use
externally_connectable features.Extension features
Supported extension capabilities include:- Content scripts - Inject JavaScript into web pages (ISOLATED or MAIN world)
- Background service workers - Run persistent background tasks (MV3)
- Background pages - Legacy persistent background scripts (MV2)
- Action popups - Display UI when clicking extension toolbar buttons
- Options pages - Provide settings interfaces in separate windows
- Web accessible resources - Serve extension files to web pages
- Native messaging - Communicate with native applications
Use cases
Password managers
Extensions like Bitwarden and 1Password integrate directly into web forms, providing autofill capabilities and secure password storage.Developer tools
Extensions can add debugging panels, modify network requests, or inject development utilities into every page you visit.Content modification
Ad blockers, dark mode enforcers, and reading enhancers modify page content and appearance to improve your browsing experience.Tab and window management
Extensions can organize, search, and manipulate your tabs and windows through the browser’s extension APIs.System requirements
The extension system provides:- Profile isolation - Extension storage and state are isolated per profile
- Web Inspector - Debug extension background pages and popups
- Permission controls - Manage what extensions can access
- Automatic updates - Extensions notify when updates are available
Technical architecture
Nook’s extension implementation:- WKWebExtensionController manages all installed extensions
- Shared process pool enables communication between content scripts and background workers
- Profile-specific data stores isolate extension storage per browsing profile
- Bridge scripts provide compatibility with externally_connectable extensions
Extensions are installed globally but their storage (cookies, localStorage, IndexedDB) is isolated per profile. This means you can use the same extension with different accounts in different profiles.