@doist/interaction-trace

中文文档
1.1.0发布于 2026/02/07MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 8839

一个用于跟踪从用户交互到下一张颜料(INP)和上一张长动画框(LoAF)的时间的性能监测库,其中包含声明的痕量签名和第三方报告.

中文使用文档
文档目录14 节
  1. 安装
  2. 使用量
  3. 初始化监视器
  4. 签名追踪
  5. 反应集成
  6. 配置
  7. 注册选项
  8. 记者界面
  9. 浏览器支持
  10. 已知的限制
  11. 键盘交互
  12. 发展
  13. 释放
  14. 许可证

@ doist/ 交互跟踪

npm version License: MIT Node.js

用于跟踪用户互动的性能监测库 互动到下一张图 (INP) 财务报告和审定财务报表 长动画框架( LOAF). 特征声明痕量签名和可插件报告.

安装

npm install @doist/interaction-trace

使用量

初始化监视器

import { initInteractionTraceMonitor } from '@doist/interaction-trace'

const cleanup = initInteractionTraceMonitor({
    reporter: (report) => {
        // Send to your analytics service
        console.log('Trace report:', report)
    },
    enrollment: {
        sampleRate: 10, // 10% of sessions
        isEnabled: () => {
            if (user.isInternal) return true    // force enable for internal users
            return undefined                     // everyone else: use sampleRate
        },
    },
    abortSignal: controller.signal, // Optional: auto-cleanup when aborted
})

// Or call cleanup() manually when done

签名追踪

微量测量从用户点击到浏览器完成所有视觉更新的时间. 追踪自动创建于 pointerup 事件-使用 signInteractionTrace() 以说明和提供有待追踪的细节.

import { signInteractionTrace } from '@doist/interaction-trace'

button.addEventListener('click', () => {
    signInteractionTrace('open modal', { modalId: 'settings' })
    openModal()
})

类型脚本

创建用于编译时间验证微量名称和细节的预型函数 :

import { signInteractionTrace } from '@doist/interaction-trace'

type MyTraces = {
    'open modal': { modalId: string }
    'submit form': { formId: string }
}

const signAppTrace = signInteractionTrace.withTypes<MyTraces>()

signAppTrace('open modal', { modalId: 'settings' })   // ✅ Works
signAppTrace('opne modal', { modalId: 'settings' })   // ❌ Error: typo caught
signAppTrace('open modal', { formId: 'x' })           // ❌ Error: wrong details

反应集成

import { useInteractionTrace } from '@doist/interaction-trace/react'

function SettingsModal() {
    useInteractionTrace('open modal', { modalId: 'settings' })
    return <div>...</div>
}

类型脚本

import { useInteractionTrace } from '@doist/interaction-trace/react'

type MyTraces = {
    'open modal': { modalId: string }
    'submit form': { formId: string }
}

const useAppTrace = useInteractionTrace.withTypes<MyTraces>()

function SettingsModal() {
    useAppTrace('open modal', { modalId: 'settings' })
    return <div>...</div>
}

配置

注册选项

选项类型说明
sampleRatenumber参加届会的百分比l(0-100)
persistKeystring入学状态的会话Storage密钥。 默认 : 'interaction-trace-enrolled'
isEnabled() => boolean | undefined覆盖函数 . true编号 :false 超过采样, undefined 推迟至 sampleRate

记者界面

记者收到 TraceReport 对象 :

type TraceReport = {
    id: string                        // Unique trace ID (crypto.randomUUID())
    duration: number                  // Total LoAF duration (ms)
    inp: number | undefined           // INP value if captured (ms)
    details: {
        name: string                  // Trace name from signInteractionTrace()
        [key: string]: unknown        // Additional details
    }
    device: {
        memoryGB: string              // Bucketed: "0.25-2", "3-7", "8-plus", or "unknown"
        cpuCores: string              // Bucketed: "1-8", "9-16", "17-plus"
    }
}

浏览器支持

长动画框架和事件时间API需要Chrome 123+. 在不支持的浏览器中,显示器默默无声——你的应用程序继续正常工作,只是没有微量收集.

已知的限制

键盘交互

此库只跟踪基于指针的交互( Q)pointerup 活动)。 键盘启动的交互(例如,按 Enter 键以提交窗体,Space to checkbox)不被捕获. INP 度量衡只会反映鼠标/触碰相互作用.

如果您的应用程序有显著的键盘用法,请在解释所收集的度量时考虑这一点.

发展

发展需要节点.js 22.18.0(见 .node-version) (中文(简体) ).

npm install
npm run build
npm test

释放

这个项目使用 请放行 自动释放。 提交合并为 main 与 fix: 触发补丁释放, feat: 引发轻微释放 feat!: 或者说 fix!: 触发主要释放.

当在 main,释放 - 请创建释放 PR。 将它合并到 npm 和 GitHub 套件 .

许可证

释放 MIT 许可证。 。 。 .

版本与发布记录

@doist/interaction-trace 共发布 2 个版本,首次发布于 2026/02/06;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.1.0latest2026/02/079 个月前
1.0.02026/02/069 个月前

关于 @doist/interaction-trace 的常见问题

@doist/interaction-trace 是什么?

一个用于跟踪从用户交互到下一张颜料(INP)和上一张长动画框(LoAF)的时间的性能监测库,其中包含声明的痕量签名和第三方报告.

如何安装 @doist/interaction-trace?

在项目目录运行 npm install @doist/interaction-trace,或使用 pnpm add / yarn add / bun add。

@doist/interaction-trace 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@doist/interaction-trace 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@doist/interaction-trace 可以商用吗?

@doist/interaction-trace 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@doist/interaction-trace 的下载量有多少?

根据 npm 官方下载统计,@doist/interaction-trace 在 2026/10/13 – 2026/11/11 这 30 天内被下载 8,839 次,日均约 295 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@doist/interaction-trace 还在维护吗?

最新版本 1.1.0 发布于 2026/02/07(9 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/02/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。