Extension Support
Flow Browser uses Electron’s extension APIs to provide Chrome Web Store extension compatibility:Per-Profile
Extensions are installed separately for each profile
Manifest V2 & V3
Support for both Manifest V2 and V3 extensions
Extension Management
Enable, disable, pin, and uninstall extensions
Permissions
Review extension permissions before installation
Managing Extensions
Extensions are managed through the Settings interface. Each profile maintains its own set of installed extensions.Extension Data Structure
When you access extensions in the renderer, you receive this data structure:Extension Operations
The extension system provides several IPC handlers for managing extensions:Get All Extensions
Get All Extensions
Retrieve all extensions installed in the current profile:Implementation at
src/main/ipc/app/extensions.ts:102-110.Enable/Disable Extension
Enable/Disable Extension
Toggle an extension on or off:This calls
extensionsManager.setExtensionDisabled() at src/main/ipc/app/extensions.ts:114-125.Pin/Unpin Extension
Pin/Unpin Extension
Pin an extension to show it in the browser toolbar:Implementation at
src/main/ipc/app/extensions.ts:168-180.Uninstall Extension
Uninstall Extension
Remove an extension from the profile:Shows a confirmation dialog before uninstalling at
src/main/ipc/app/extensions.ts:129-164.Extension Manager
Each loaded profile has its ownExtensionManager instance managed by the LoadedProfilesController. The extension manager handles:
- Loading extensions from disk
- Managing extension state (enabled/disabled/pinned)
- Registering extensions with Electron’s extension APIs
- Handling extension updates
Extension Icons
Extension icons are served via a custom protocol:Manifest String Localization
Extensions can use locale strings in their manifests. Flow Browser automatically translates these:src/main/ipc/app/extensions.ts:17-24.
Permission Warnings
When extensions request permissions, Flow Browser displays human-readable warnings:Extension Events
The extension system emits events when extensions change:Tab Integration
Extensions are integrated with the tab system. When tabs are created or updated:src/main/controllers/tabs-controller/tab.ts:331-397.
Extension Storage Location
Extensions are stored within each profile’s directory:Extension Installation
Extension installation from the Chrome Web Store is handled through Electron’s built-in extension APIs. The exact installation flow depends on the
ExtensionManager implementation.Uninstallation Confirmation
When uninstalling an extension, Flow Browser shows a native confirmation dialog:src/main/ipc/app/extensions.ts:152-163.
Extension Size Calculation
The extension system calculates the total size of installed extensions:Current Profile Detection
Extension operations automatically detect the current profile from the window’s Space:src/main/ipc/app/extensions.ts:89-100.
Best Practices
Review Permissions
Always review what permissions an extension requests before installing
Use Per-Profile
Install extensions only in profiles where you need them
Keep Updated
Regularly update extensions for security and features
Minimize Extensions
Only install extensions you actively use to reduce memory usage
Troubleshooting
Extension Not Loading
Extension Not Loading
If an extension isn’t loading:
- Check if it’s enabled in Settings
- Verify the extension is compatible with your Electron/Chromium version
- Check the console for error messages
- Try uninstalling and reinstalling the extension
Extension Permissions
Extension Permissions
If an extension requests unexpected permissions:
- Review the permission warnings before approving
- Research the extension’s reputation
- Consider alternative extensions with fewer permissions
- Contact the extension developer for clarification