Say that the app has analytics, because it does - #143
Merged
Conversation
The privacy policy said, in the section whose job is to be precise: "No analytics, and no analytics SDK ... There is no product-analytics or session-recording SDK in the app or on this website." The cookie policy said the app contains none, and added that if it ever changed, the section would say so before it did. apps/mobile has shipped posthog-react-native since early September, wired up in src/lib/analytics.ts with a closed event union and property sanitisation. The section that promised to speak first never spoke. What is actually true, and now what the policy says: PostHog on its EU cloud receives screen names, five funnel events and the LangX user id. Session replay is off, geo-IP resolution is off, and the keys that would carry a message body, an email address, a name or a handle are refused when the app is built rather than filtered after. It is on by default and off in Settings → Privacy → Share usage data. This website still has no analytics of any kind, which is why the cookie policy's answer splits in two. The claim also lived outside the policies. "No ads, no trackers" on the homepage and in the feature list is the sentence an ordinary reader turns into "nothing watches what I do", and that is no longer true; both now say "no ads, nothing sold", which is. The v2 announcement post keeps its original sentence with a dated note under it rather than being quietly edited — it was true when it was published, and rewriting it would hide that this happened. PRODUCT.md carried the claim too, and is the file other work reads before writing copy. It now says the opposite and points at langx/docs/store/privacy-data-safety.md, which was written from the code and had this right all along. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
This changes legal text. It should be read, not merged on CI going green.
The privacy policy said, in the section whose whole job is to be precise:
The cookie policy said the app contains none, and added:
apps/mobilehas shippedposthog-react-native ^4.67.0since early September, wired up insrc/lib/analytics.tswith a closed event union and property sanitisation. The section that promised to speak first never spoke.What is actually true, and what the policy now says
PostHog, on its EU cloud, receives screen names, five funnel events (
message_sent,onboarding_completed,paywall_viewed,purchase_started,purchase_finished) and the LangX user id.enableSessionReplay: false)disableGeoip: true)FORBIDDEN_PROPERTY_KEYS)To be fair to what was built: this is a careful integration, and
langx/docs/store/privacy-data-safety.mddocumented it correctly from the code all along. What went wrong is that the website's policies were never updated to match.What changed
PrivacyPolicy.svelteCookiePolicy.svelteStory.svelte,features.tsPRODUCT.mdWorth deciding separately
The fix here is to the pages. The other available fix is to the app — if analytics-on-by-default is not what you want, this PR does not settle that, it just stops the site saying something untrue while you decide.
npm run lint,npm run check(0 errors) and the build all pass.🤖 Generated with Claude Code