@supernathaniel/runtime-browser
v0.3.1
Published
Browser instrumentation (fetch/XHR/PerformanceObserver/interaction/navigation) for @fp runtimes
Readme
@supernathaniel/runtime-browser
浏览器采集层:把浏览器运行时行为变成 RuntimeEvent。依赖 runtime-core,不含任何 React 知识。
提供什么
- 采集插件(
createBrowserPlugins(flags)一键全开,或按需单建):createNetworkPlugin:fetch / XHR 补丁,产出network:start/network:end。 支持 URL 分类(NetworkPluginOptions,string 子串或 RegExp 匹配):ignoreUrls:命中即完全不采集(不发事件、不占 trace 在途)——HMR/sockjs 等开发期噪声;streamingUrls:命中照常采集且事件带streaming: true标记,但不占 trace 在途名额—— SSE/流式接口/长轮询等长连接,trace 不再被长连接挂到maxTraceAgeMs强制截断,靠真实活动静默收尾;
createPerformancePlugin:PerformanceObserver(paint / lcp / longtask / resource 等);createInteractionPlugin:点击等交互(只记 tag/class,不记文本);createNavigationPlugin:导航与路由(history 补丁),产出navigation:*/route:change。
- 生命周期冲刷:
createLifecycleFlushPlugin——pagehide/ 页面隐藏时用sendSync(sendBeacon / keepalive)冲刷,保住卸载前的最后一批。 - 信封 sender:
createBrowserSender({ url, meta, ... })——批次包装为 P4 信封(appKey/sessionId/timeOrigin/sdkDiagnostics),默认 gzip(CompressionStream),beacon 兜底;meta必填。 - 远端采样配置:
fetchSamplingConfig()——拉取 perfmgmt 下发的采样策略,失败保留静态配置。 - 基础设施:
createPerformanceClock()、detectBrowserCapabilities()、sanitizeUrl()。
红线
- 隐私:URL 一律经
sanitizeUrl剥除 query/hash;不采集 header / body / 表单值 / 文本内容; - 降级:每个浏览器接缝(EventTarget / fetch / XHR / PerformanceObserver / history / window)都可注入,能力缺失 = 不安装该插件,永不向宿主抛异常;
- 所有全局补丁必须在
destroy()中恢复。
谁依赖它
sdk(门面组装)。宿主应用不直接使用本包。
