Skip to main content
Profiles in Flow Browser provide complete browsing isolation, allowing you to separate different contexts like work, personal browsing, or testing environments. Each profile maintains its own history, cookies, extensions, and settings.

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.
1

Open Settings

Press Cmd/Ctrl + , or use the application menu to open Settings
2

Navigate to Profiles

Click on the Profiles section in the sidebar
3

Create New Profile

Click the “Create Profile” button and enter a name
4

Start Browsing

Your new profile is created with a default Space and ready to use

Profile Architecture

Profiles are managed by the ProfilesController located at src/main/controllers/profiles-controller/index.ts:23.

Profile Data Structure

Each profile stores:
interface ProfileData {
  name: string;        // Display name of the profile
  createdAt: number;   // Timestamp when created
}

File System Storage

Profiles are stored in the Profiles/ 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

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.
// src/main/controllers/profiles-controller/index.ts:112
public async update(profileId: string, profileData: Partial<ProfileData>)
Deleting a profile removes all associated data including:
  • All Spaces within the profile
  • Chromium profile data (history, cookies, cache)
  • Installed extensions
  • Profile settings
Profile deletion is permanent and cannot be undone. All browsing data will be lost.
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:
EventDescription
profile-createdFired when a new profile is created
profile-updatedFired when profile data changes
profile-deletedFired when a profile is removed
requested-all-profilesFired 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:
queueMicrotask(() => profilesController._setupInitialProfile());
This ensures users always have at least one profile to work with.

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 at src/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:
// Only alphanumeric, underscore, and hyphen allowed
if (!/^[a-zA-Z0-9_-]+$/.test(profileId)) {
  return { success: false };
}
  • Spaces - Organize tabs within a profile
  • Extensions - Extensions are installed per-profile
  • Privacy - Each profile has isolated privacy settings

Build docs developers (and LLMs) love