Telemetry and privacy
Extension.js collects minimal, anonymous telemetry from CLI and build workflows so the framework can improve without turning projects into tracking surfaces.
The privacy bar is strict by design:
- Telemetry is coarse, aggregate-friendly, and product-focused
- Source code and project contents are never collected
- Extension.js telemetry should stay below the invasiveness users typically accept from web framework telemetry such as Next.js/Vercel usage data
- Users can disable telemetry for any command with
--no-telemetry
What Extension.js collects
Extension.js CLI/build telemetry is limited to high-level workflow data such as:
- command lifecycle (
cli_boot,cli_command_start,cli_command_finish) - browser target counts and multi-browser usage
- privacy-safe manifest counts and manifest surface buckets
- coarse project-shape signals like package manager, framework family, TypeScript usage, monorepo usage, and broad ecosystem booleans such as
has_next_dependency - build output summaries like asset counts, bytes, warnings/errors, and zip intent
These signals help answer product questions such as:
- Are users only experimenting locally, or are they repeatedly producing release artifacts?
- How common are multi-browser release flows?
- Are CI-style and machine-readable workflows becoming common?
Workflow cohorts for dashboards
Extension.js also emits a normalized workflow_profile event to make aggregate reporting easier in tools such as PostHog.
Each run is assigned one cohort:
local_onlyfor local iteration without strong release or automation signalsshippingfor release-oriented behavior such as production commands, zip artifacts, or multi-browser buildsautomation_heavyfor machine-oriented behavior such as--wait,--no-browser, or machine-readable output
The event includes only coarse fields such as:
workflow_cohorthas_shipping_intenthas_automation_intentshipping_signal_countautomation_signal_countprimary_workflow_signalpackage_managerframework_primaryhas_next_dependencyhas_turbo_dependency
What Extension.js never collects
The CLI/build telemetry contract explicitly excludes:
- source code, manifest contents, HTML output, or package.json contents
- repo names, Git remotes, GitHub org/user names, branch names, commit SHAs, or preview URLs
- raw dependency lists or raw permission lists
- file paths, local URLs, environment variable values, or any personal data
- IP addresses in telemetry payloads
Public telemetry vs product analytics
For Extension.js itself, telemetry is the public, privacy-safe layer described in repository TELEMETRY.md.
That contract is intentionally narrower than product-side operational analytics you might use in hosted products. If a field could identify a specific repository, user, or company, it does not belong in Extension.js CLI telemetry.
Opt out
Use --no-telemetry on any command:
Best practices
- Keep telemetry fields coarse: booleans, enums, and buckets beat freeform strings.
- Separate framework telemetry from hosted-product analytics contracts.
- Document every field publicly before expanding collection.
- Treat privacy regressions as product regressions.
Next steps
- Review Global flags for
--no-telemetry. - Use Build and Dev for release and automation workflows.
- Read the repository-level
TELEMETRY.mdcontract for the exact event list.
