@1mn/react

中文文档
0.4.0发布于 2026/07/06MITTypeScriptESM + CJS零依赖近 30 天下载 2.6万

1mn SDK的回放装订——嵌入式产品分析,会话回放,错误跟踪,用户管理,以及客户反馈(PostHog/Sentry-like). 自足:npm安装+,无片段.

中文使用文档
文档目录14 节
  1. 安装
  2. 快速启动
  3. 自定义事件
  4. 客户反馈
  5. Next.js (App路由器) (英语)
  6. 反应路由器 7 / Remix / TanStack Start (SSR)
  7. API 密码
  8. <OnemnProvider apiKey host? user? >
  9. useOnemn()
  10. <FeedbackWidget />
  11. useFeedback()
  12. getOnemn()
  13. 隐私
  14. 许可证

@ 1mn/ 反应

反应约束 1分钟 SDK——内置 产品分析、误差跟踪、, 用户管理 (postHog/ Sentry-like) 用于您的 React 或 Next.js app.

自足:它捆绑了SDK核心,所以 npm install +一个提供者是您需要的。 没有 片段,没有脚本标签.

  • 📈 分析 ——自动页面视图(包括SPA导航),会话,网络要害,以及自定义事件.
  • 👥 用户管理 ——识别您的登录用户(使用电子邮件),并在您1mn的仪表板上观看.
  • 🐛 错误 ——未发现例外和未处理的拒绝自动捕获并分组.
  • 💬 反馈 ——一来一来 <FeedbackWidget> (或无头钩),将客户反馈作为门票存档.
  • 🎬 会话重放 – 从您的仪表盘中选择每个键入;记录器(rrweb)懒惰的负载只用于被采样的会话,所以它永远不会触及到这个捆绑的大小. 默认关闭; 输入被掩盖 .
  • QQ~9 KB,零运行时间依赖,SSR安全.

安装

npm install @1mn/react

快速启动

将您的应用程序包装一次 OnemnProvider 并传递公用钥匙1mn_pk_…从 用户 选项卡 在您的1mn仪表板)加上您的登录用户:

import { OnemnProvider } from "@1mn/react";

export default function App({ children, user }) {
  return (
    <OnemnProvider apiKey="1mn_pk_xxx" user={user}>
      {children}
    </OnemnProvider>
  );
}

就是这样——网页视图,网络动态,错误自动被捕获 user 已确认 (与 email编号 :name) 凡所设. 何时 user 变成 null SDK重装.

自定义事件

import { useOnemn } from "@1mn/react";

function CheckoutButton() {
  const onemn = useOnemn();
  return (
    <button onClick={() => onemn.capture("checkout_started", { plan: "pro" })}>
      Upgrade
    </button>
  );
}

客户反馈

收集一个组件的应用反馈。 在部件中放入浮动发射器+模式:

import { FeedbackWidget } from "@1mn/react";

<FeedbackWidget />;

或从自己的按钮驱动模式( 无发射装置) :

import { useState } from "react";
import { FeedbackWidget } from "@1mn/react";

function Sidebar() {
  const [open, setOpen] = useState(false);
  return (
    <>
      <button onClick={() => setOpen(true)}>Feedback</button>
      <FeedbackWidget launcher={false} open={open} onOpenChange={setOpen} />
    </>
  );
}

你更喜欢自己的UI? 使用无头钩( 或 useOnemn().feedback:

import { useFeedback } from "@1mn/react";

const { send } = useFeedback();
send("Love the new dashboard!");

每一份划界案都发出a $feedback 活动。 在你的1mn仪表板中,这些被归档为 反馈 罚单 在你积压的 分解—— 他们从来没有触发一个自主的代理 运行自己.

Next.js (App路由器) (英语)

OnemnProvider 是客户部分——将其变成 "use client" 边界(例如a) providers.tsx 包起来 children 在您的根布局中。 这是SSR安全:没有运行直到 浏览器水合物. <FeedbackWidget> 也是客户部分.

反应路由器 7 / Remix / TanStack Start (SSR)

OnemnProvider - 安全无虞 普通模块 在您的根路径中( 例如) . app/root.tsx包着你的 <Outlet />数字 :

// app/root.tsx — a normal module, NOT a *.client.tsx file
import { OnemnProvider } from "@1mn/react";
import { useSession } from "./lib/auth-client";

export default function App() {
  const { data: session } = useSession();
  return (
    <OnemnProvider apiKey="1mn_pk_xxx" user={session?.user}>
      <Outlet />
    </OnemnProvider>
  );
}

⚠️ 别放 OnemnProvider (或周围的包装) *.client.tsx 归档和渲染 在SSR树上. 反应路由器 7, Remix 和 Vite 空 *.client.* 服务器构建中的模块, 因此导入是 undefined 在SSR和React中弹出 <undefined> —— 说 HTTP 500 每架 路线. OnemnProvider 不需要只为客户;它已经是SSR安全了.

狦 user/会话钩是只客户(它生活在 *.client.* 模块,或为 undefined 打开 服务器,保留 OnemnProvider 安全无虞的安保部 将识别电话传到一个小孩身上 后加护卫useOnemn().identify(...) 内置 a useEffect)————别让 仅限整个供应商客户端。 把它接入后,确认现场还在返回 200没有 500。 。 。 .

API 密码

<OnemnProvider apiKey host? user? >

Prop类型页:1
apiKeystring您的公用钥匙( Y)1mn_pk_…。必须.
hoststring入涅槃出处. 默认为 1mn 收藏器 .
user{ id, email?, name? } | null已签名的用户 。 当它有电子邮件时被确认.

useOnemn()

回返 { capture, identify, reset, set, feedback, optOut, optIn }. 互为稳定; SSR-安全(服务器上和init前没有操作).

  • capture(event, properties?) ——定制事件.
  • identify(id, set?, setOnce?) - 通常不需要,如果你通过了 user 到供养.
  • set(properties) ——更新人物属性而无需重新识别.
  • feedback(message, properties?) ——发送应用反馈/支持信息.
  • reset() 明确身份(日志);当 user 清除.
  • optOut() 编号 : optIn() ——停止/恢复发送.

<FeedbackWidget />

滴入回馈发射装置+模式. 所有道具可选 :

Prop类型页:1
launcherboolean显示浮动发射器按钮 。 默认 true。 。 。 .
openboolean控制开放状态。 放弃失控.
onOpenChange(open: boolean) => void打开/关闭回调.
labelstring发射机文字. 默认 "Feedback"。 。 。 .
titlestring摩多头. 默认 "Send feedback"。 。 。 .
descriptionstring子文为标题下.
placeholderstring文本区占位符 .
position"bottom-right" | "bottom-left"发射口 默认 "bottom-right"。 。 。 .
accentColorstring主按钮/ 发射器颜色 .
propertiesRecord<string, unknown>额外道具合并为 $feedback 活动.
onSubmit(message: string) => void在成功发送后被召唤.

useFeedback()

回返 { send(message, properties?) } 用于构建自己的反馈 UI.

getOnemn()

现场客户端(或 null ,用于非组件代码.

隐私

默认情况下, SDK 捕捉到没有 DOM 内容( 没有自动捕捉) 和没有 IP 衍生的地理和船只 optOut()。 。 。 . 会话重放 只有一个例外,而且 关闭,除非你启用它 您的钥匙 在1mn仪表板中:当操作时,它记录了抽样部分会话的DOM/交互通过 rrweb,默认情况下隐藏文本输入(添加) onemn-block 编号 : onemn-mask )),以隐藏区域. optOut() 也停止录音。 您是终端用户数据的数据控制器—— 如果您启用的话 重新播放,告诉访客(欧盟/英国/CA同意).

许可证

麻省理工学院——见 自由主义。 。 。 .

版本与发布记录

@1mn/react 共发布 4 个版本,首次发布于 2026/06/12;过去 12 个月发布了 4 个版本。

版本发布日期距今
0.4.0latest2026/07/064 个月前
0.3.02026/06/164 个月前
0.2.02026/06/144 个月前
0.1.02026/06/124 个月前

关于 @1mn/react 的常见问题

@1mn/react 是什么?

1mn SDK的回放装订——嵌入式产品分析,会话回放,错误跟踪,用户管理,以及客户反馈(PostHog/Sentry-like). 自足:npm安装+,无片段.

如何安装 @1mn/react?

在项目目录运行 npm install @1mn/react,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=17.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@1mn/react 支持 TypeScript 吗?

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

@1mn/react 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@1mn/react 可以商用吗?

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

@1mn/react 的下载量有多少?

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

@1mn/react 还在维护吗?

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