feat(analytics): add extport provider - #2578
Open
rxliuli wants to merge 3 commits into
Open
Conversation
✅ Deploy Preview for creative-fairy-df92c4 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
rxliuli
added a commit
to rxliuli/extport
that referenced
this pull request
Aug 7, 2026
analytics-design.md still said "design settled, not scheduled" — Analytics has been live fleet-wide since 2026-08-05. Same for the wxt-plugin analytics:true option (built, packages/wxt/src/index.ts) and the "rides the next SDK wave" line (SDK 0.0.7 already shipped it). licensing.md said slice C's acceptance was "pending deploy" — it's been live and accepted for weeks; also closes out the README Phase 2 blurb forward-reference (the README no longer has one). safari-pipeline.md hedged "until this lands, getState() tracks macOS only" while its own later Verification section already confirmed both platforms work — getState() requires an explicit platform and queries each independently. Also updates the wxt-dev/wxt#2578 provider PR note to reflect its actual current state (open, not merged) instead of a vague future conditional.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Adds an extport provider, following the same shape as the Moderok provider.
extport is an open, self-hostable platform for browser-extension developers (publishing, licensing, and analytics across Chrome/Firefox/Edge/Safari; ELv2 platform, MIT SDK). Its analytics protocol is deliberately minimal: one anonymous ping per install per UTC day — installs, actives, and churn are all derived server-side, and there are no custom events by design (the README section tells users to pair PostHog/Umami if they need event tracking).
Implementation notes
analytics.track('__extport_ping')so the module'senabledconsent gate applies to it like any other event (same pattern as Moderok's lifecycle events).data_collectionconsent (technicalAndInteraction) by re-checkingpermissions.getAll()at ping time — revocation needs no listener, andpermissions.onAddedcatches a user turning the toggle on later the same day.event.user.idis reused as the install identifier — no provider-side id storage.Changes: provider file,
package.jsonexports entry,tsdown.config.tsentry, README TOC + section.I'm the author of extport and run it in production across the ~20 extensions I maintain — happy to adjust anything to fit the package's conventions.