用途:为任意 React 或 React Native 应用建立可移植、框架无关的现场侧可观测性系统,回答“真实用户在做什么、体验如何”。它是 frontend-lighthouse 技能(实验室合成门禁)的现场补充,位于 services/analytics/ 模块。
主要能力:一是类型化事件词汇表,事件名以常量加联合类型定义,禁止内联字符串,编译期拒绝拼写错误;二是尽力而为、非阻塞的提供方扇出,track() 逐个调用适配器并各自 try/catch,某个提供方缺失或抛错不会影响调用方与其他提供方;三是单一入口且 SSR 安全,通过 useAnalytics() 上下文钩子访问,在提供方外或服务端自动降级为空操作;四是真实用户 LCP/INP/CLS 等现场指标经同一扇出上报;五是同意门控,未选择加入前不发送任何事件、指标或含 PII 的错误报告。
使用方式:创建 constants/analytics.ts 定义事件分类,services/analytics/ 下放置 track、adapters、consent、web-vitals,并提供 AnalyticsProvider 在根布局挂载;被追踪的叶子组件用薄客户端组件包裹。新增事件时先加常量再调用 track(ANALYTICS_EVENTS.NEW_ONE, props)。Firebase 适配器分 Web 与 React Native 两个文件,共享 logEvent 契约,按文件扩展名或 Platform.OS 解析。
适用场景:Next.js、React + Vite/Remix、Expo/React Native 等;可对接 Firebase、GA4、Microsoft Clarity、PostHog、OpenPanel、Sentry 等提供方。
限制:资料未提供具体安装命令、收费与价格信息;需自行实现同意状态持久化与 PII 清洗;错误边界应按路由/段放置,仅上报非预期错误。