Control browser state isolation during development with managed, persistent, or custom profiles.
Keep browser sessions isolated or persistent based on your workflow. Extension.js launches browsers with profile-aware defaults so you can choose clean runs, reusable state, or an explicit local profile path.
Profile mode is selected in this order:
profile path (if provided)persistProfile: trueEXTENSION_USE_SYSTEM_PROFILE=true| Config / option | What it does |
|---|---|
browser.<target>.profile |
Uses an explicit profile directory for that browser target. |
commands.dev.profile |
Uses an explicit profile only for dev. |
commands.start.profile |
Uses an explicit profile only for start. |
commands.preview.profile |
Uses an explicit profile only for preview. |
browser.<target>.persistProfile |
Reuses managed profile state between runs for a target. |
commands.<name>.persistProfile |
Reuses managed profile state in a command-specific context. |
--profile=/abs/path |
CLI override for explicit profile path. |
EXTENSION_USE_SYSTEM_PROFILE=true |
Uses the OS/browser system profile instead of managed profiles. |
| Mode | How to enable | Typical use |
|---|---|---|
| Managed ephemeral | default | clean runs with isolated state |
| Managed persistent | persistProfile: true |
iterative debugging with stable browser state |
| Explicit custom profile | profile: "/abs/path" or --profile=/abs/path |
reuse an existing profile |
| System profile | EXTENSION_USE_SYSTEM_PROFILE=true |
launch with OS/browser default profile |
Managed profiles are created under:
dist/extension-js/profiles/<browser>-profile/<...>Persistent mode uses:
dist/extension-js/profiles/<browser>-profile/devextension.config.*You can also scope profile defaults by command:
Use an explicit profile path directly:
Works similarly with start and preview.
dev) is reused across runs.EXTENSION_TMP_PROFILE_MAX_AGE_HOURS).persistProfile for long-lived debug sessions: Keep auth/session/devtools state between runs.