Viewing installed extensions
All installed extensions appear in Settings → Extensions. For each extension, you can see:- Extension name - Display name from the manifest
- Version - Current version number
- Manifest version - MV2 or MV3
- Description - What the extension does
- Enabled state - Whether the extension is currently active
- Install date - When you installed the extension
Enabling and disabling extensions
Disable an extension
Disabling an extension temporarily stops it without removing it:
When you disable an extension:
- The extension is unloaded from WKWebExtensionController
- Its background worker is terminated
- Content scripts stop injecting into new pages
- Toolbar buttons are removed
- Extension storage remains intact (your data is preserved)
Disabling an extension doesn’t delete its data. When you re-enable it, all settings and stored data are restored.
Enable a disabled extension
When you enable an extension:
- The extension is loaded into WKWebExtensionController
- Its background worker starts immediately
- Content scripts begin injecting into matching pages
- Toolbar buttons reappear
- Stored data and settings are restored
Removing extensions
Uninstalling an extension permanently removes it and deletes all its data:
Uninstalling removes:
- Extension files from
~/Library/Application Support/Nook/Extensions/{extension-id}/ - Database record from the SwiftData persistence layer
- All extension storage (localStorage, IndexedDB, cookies)
- Toolbar buttons and UI elements
- Permission grants
Extension state persistence
Nook remembers which extensions are enabled across app restarts:- Enabled extensions load automatically when you launch Nook
- Disabled extensions remain disabled until you manually enable them
- Extension settings persist in
~/Library/Application Support/Nook/
How extensions load on startup
- Database query - Nook fetches all
ExtensionEntityrecords from SwiftData - Manifest validation - Each extension’s
manifest.jsonis validated and patched - Parallel parsing - Extension resources are loaded concurrently for speed
- Sequential registration - Extensions are registered with WKWebExtensionController
- Background workers start - Service workers and background pages launch
- Ready state - Extensions become available to web pages
Per-profile extension behavior
Installation scope
Extensions are installed globally - when you install an extension, it’s available in all profiles.Storage isolation
Extension storage is isolated per profile:- Each profile has its own
WKWebsiteDataStore - Extension cookies, localStorage, and IndexedDB are separate per profile
- You can use the same extension with different accounts in different profiles
This means you can install Bitwarden once and use it with your personal vault in one profile and your work vault in another profile.
Debugging extensions
Enable Web Inspector
For troubleshooting extensions, enable Web Inspector:Popup console
Nook includes a specialized console for debugging extension popups:- Shows navigation events and page loads
- Displays available extension APIs
- Logs JavaScript errors
- Shows permission grants and denials
Extension updates
Currently, Nook does not automatically update extensions. To update an extension:- Uninstall the old version
- Download the new version
- Install the updated extension
Automatic extension updates may be added in a future version of Nook.