What are Profiles?
A profile is an isolated browsing environment with its own:Browsing Data
Separate history, cookies, cache, and local storage
Extensions
Independent extension installations and configurations
Settings
Profile-specific preferences and customizations
Spaces
Each profile can have multiple Spaces for organizing tabs
Creating Profiles
Flow Browser automatically creates a “Main” profile on first launch. You can create additional profiles through the Settings interface.Profile Architecture
Profiles are managed by theProfilesController located at src/main/controllers/profiles-controller/index.ts:23.
Profile Data Structure
Each profile stores:File System Storage
Profiles are stored in theProfiles/ directory within Flow’s data directory. Each profile gets:
- A unique directory containing Chromium profile data
- Isolated cache, cookies, and local storage
- Separate extension installations
- Individual browsing history
The profile directory name serves as the profile ID. The default profile uses the ID
"main".Managing Profiles
Profile Operations
Update Profile Name
Update Profile Name
Profile names can be updated at any time through the Settings interface. The profile data is managed through a cached controller that emits events when profiles are updated.
Delete Profile
Delete Profile
Deleting a profile removes all associated data including:
- All Spaces within the profile
- Chromium profile data (history, cookies, cache)
- Installed extensions
- Profile settings
Switch Between Profiles
Switch Between Profiles
While profiles themselves don’t have a direct “switch” mechanism in the UI, Spaces belong to profiles. You switch contexts by selecting a Space from a different profile.
Profile Events
The profile system emits events that other parts of the application can listen to:| Event | Description |
|---|---|
profile-created | Fired when a new profile is created |
profile-updated | Fired when profile data changes |
profile-deleted | Fired when a profile is removed |
requested-all-profiles | Fired when all profiles have been loaded into cache |
Default Profile
The"main" profile is created automatically during first launch at src/main/controllers/profiles-controller/index.ts:183:
Use Cases
Work vs Personal
Keep work browsing completely separate from personal accounts and history
Testing
Create a clean profile for testing websites or extensions
Multiple Accounts
Manage different accounts for the same service simultaneously
Privacy
Create temporary profiles for sensitive browsing that can be deleted
Technical Details
Caching Strategy
The ProfilesController implements an intelligent caching system atsrc/main/controllers/profiles-controller/index.ts:24-77:
- Profile data is cached in memory after first access
- Cache is invalidated when profiles are deleted
- Cache is reconciled (merged) when profiles are updated
- Lazy loading: profiles are only read from disk when requested
Validation
Profile IDs are validated to prevent directory traversal attacks:Related Features
- Spaces - Organize tabs within a profile
- Extensions - Extensions are installed per-profile
- Privacy - Each profile has isolated privacy settings