sentry-svelte-sdk by getsentry/sentry-for-ai
npx skills add https://github.com/getsentry/sentry-for-ai --skill sentry-svelte-sdk一个经过精心设计的向导,它会扫描您的项目并指导您为 Svelte 和 SvelteKit 完成完整的 Sentry 设置。
@sentry/svelte、@sentry/sveltekit 或用于 Svelte 的 Sentry SDK注意: 下面的 SDK 版本和 API 反映了撰写本文时当前的 Sentry 文档(
@sentry/sveltekit≥10.8.0,SvelteKit ≥2.31.0)。在实施前,请务必对照 docs.sentry.io/platforms/javascript/guides/sveltekit/ 进行验证。
在提出任何建议之前,运行以下命令来了解项目:
# 检测框架类型
cat package.json | grep -E '"svelte"|"@sveltejs/kit"|"@sentry/svelte"|"@sentry/sveltekit"'
# 检查 SvelteKit 指标
ls svelte.config.js svelte.config.ts vite.config.ts vite.config.js 2>/dev/null
# 检查 SvelteKit 版本(决定使用哪种设置模式)
cat package.json | grep '"@sveltejs/kit"'
# 检查 Sentry 是否已安装
cat package.json | grep '"@sentry/'
# 检查现有的钩子文件
ls src/hooks.client.ts src/hooks.client.js src/hooks.server.ts src/hooks.server.js \
src/instrumentation.server.ts 2>/dev/null
# 检测日志库(Node 端)
cat package.json | grep -E '"pino"|"winston"|"consola"'
# 检测相邻目录中是否有后端(Go、Python、Ruby 等)
ls ../backend ../server ../api 2>/dev/null
cat ../go.mod ../requirements.txt ../Gemfile 2>/dev/null | head -3
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
需要确定的内容:
| 问题 | 影响 |
|---|---|
package.json 中有 @sveltejs/kit 吗? | SvelteKit 路径 vs. 普通 Svelte 路径 |
| SvelteKit ≥2.31.0 吗? | 现代(instrumentation.server.ts) vs. 旧版设置 |
@sentry/sveltekit 已经存在吗? | 跳过安装,直接进入功能配置 |
存在 vite.config.ts 吗? | 可通过 Vite 插件上传源映射 |
| 发现后端目录了吗? | 触发阶段 4 的跨链接建议 |
根据您的发现提出具体建议。不要提出开放式问题——直接给出方案:
推荐(核心覆盖范围):
可选(增强的可观测性):
Sentry.logger.* 进行结构化日志记录;当应用使用服务器端日志记录或需要日志到追踪的关联时推荐推荐逻辑:
| 功能 | 何时推荐... |
|---|---|
| 错误监控 | 始终 — 不可妥协的基线 |
| 追踪 | SvelteKit 始终推荐(客户端 + 服务器);普通 Svelte 在调用 API 时推荐 |
| 会话回放 | 面向用户的应用、登录流程或结账页面存在时 |
| 日志记录 | 应用已使用服务器端日志记录,或需要结构化日志搜索时 |
提议:“我建议设置错误监控 + 追踪 + 会话回放。您希望我也添加结构化日志记录吗?”
| 您的项目 | 包 | 设置复杂度 |
|---|---|---|
| SvelteKit (≥2.31.0) | @sentry/sveltekit | 需要创建/修改 5 个文件 |
| SvelteKit (<2.31.0) | @sentry/sveltekit | 3 个文件(在 hooks.server.ts 中初始化) |
普通 Svelte(无 @sveltejs/kit) | @sentry/svelte | 单个入口点 |
您需要自己运行此命令 — 向导会打开浏览器进行登录,并需要代理无法处理的交互式输入。请复制粘贴到您的终端:
npx @sentry/wizard@latest -i sveltekit它处理登录、组织/项目选择、SDK 安装、客户端/服务器钩子、Vite 插件配置、源映射上传,并添加一个
/sentry-example-page。完成后,请返回并跳转到验证部分。
如果用户跳过向导,请继续下面的选项 2(手动设置)。
步骤 1 — 安装
npm install @sentry/sveltekit --save
步骤 2 —svelte.config.js — 启用检测
import adapter from "@sveltejs/adapter-auto";
const config = {
kit: {
adapter: adapter(),
experimental: {
instrumentation: { server: true },
tracing: { server: true },
},
},
};
export default config;
步骤 3 —src/instrumentation.server.ts — 服务器端初始化(在启动时运行一次)
import * as Sentry from "@sentry/sveltekit";
Sentry.init({
dsn: process.env.SENTRY_DSN,
environment: process.env.SENTRY_ENVIRONMENT,
release: process.env.SENTRY_RELEASE,
sendDefaultPii: true,
tracesSampleRate: 1.0, // 在生产环境中降低到 0.1–0.2
enableLogs: true,
});
步骤 4 —src/hooks.client.ts — 客户端初始化
import * as Sentry from "@sentry/sveltekit";
Sentry.init({
dsn: import.meta.env.PUBLIC_SENTRY_DSN ?? import.meta.env.VITE_SENTRY_DSN,
environment: import.meta.env.MODE,
sendDefaultPii: true,
tracesSampleRate: 1.0,
integrations: [
Sentry.replayIntegration({
maskAllText: true,
blockAllMedia: true,
}),
],
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
enableLogs: true,
});
export const handleError = Sentry.handleErrorWithSentry();
步骤 5 —src/hooks.server.ts — 服务器钩子(现代设置中此处不进行初始化)
import * as Sentry from "@sentry/sveltekit";
import { sequence } from "@sveltejs/kit/hooks";
export const handleError = Sentry.handleErrorWithSentry();
// sentryHandle() 检测传入的请求并创建根跨度
export const handle = Sentry.sentryHandle();
// 如果您有其他 handle 函数,请使用 sequence() 组合:
// export const handle = sequence(Sentry.sentryHandle(), myAuthHandle);
步骤 6 —vite.config.ts — 源映射(需要 SENTRY_AUTH_TOKEN)
import { sveltekit } from "@sveltejs/kit/vite";
import { sentrySvelteKit } from "@sentry/sveltekit";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [
// sentrySvelteKit 必须在 sveltekit() 之前
sentrySvelteKit({
org: process.env.SENTRY_ORG,
project: process.env.SENTRY_PROJECT,
authToken: process.env.SENTRY_AUTH_TOKEN,
}),
sveltekit(),
],
});
添加到 .env(切勿提交):
SENTRY_AUTH_TOKEN=sntrys_...
SENTRY_ORG=my-org-slug
SENTRY_PROJECT=my-project-slug
@sentry/sveltekit <10.8.0)跳过 instrumentation.server.ts 和 svelte.config.js 的更改。相反,将 Sentry.init() 直接放在 hooks.server.ts 中:
// src/hooks.server.ts(旧版 — 初始化放在这里)
import * as Sentry from "@sentry/sveltekit";
Sentry.init({
dsn: process.env.SENTRY_DSN,
tracesSampleRate: 1.0,
enableLogs: true,
});
export const handleError = Sentry.handleErrorWithSentry();
export const handle = Sentry.sentryHandle();
hooks.client.ts 和 vite.config.ts 与现代路径相同。
安装:
npm install @sentry/svelte --save
在入口点(src/main.ts 或 src/main.js)挂载应用之前进行配置:
import * as Sentry from "@sentry/svelte";
import App from "./App.svelte";
Sentry.init({
dsn: import.meta.env.VITE_SENTRY_DSN,
environment: import.meta.env.MODE,
sendDefaultPii: true,
integrations: [
Sentry.browserTracingIntegration(),
Sentry.replayIntegration({
maskAllText: true,
blockAllMedia: true,
}),
],
tracesSampleRate: 1.0,
tracePropagationTargets: ["localhost", /^https:\/\/yourapi\.io/],
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
enableLogs: true,
});
const app = new App({ target: document.getElementById("app")! });
export default app;
可选:Svelte 组件追踪(自动注入追踪到所有组件):
// svelte.config.js
import { withSentryConfig } from "@sentry/svelte";
export default withSentryConfig(
{ compilerOptions: {} },
{ componentTracking: { trackComponents: true } }
);
逐个介绍功能。加载参考文件,按照其步骤操作,然后在继续之前进行验证:
| 功能 | 参考 | 何时加载... |
|---|---|---|
| 错误监控 | ${SKILL_ROOT}/references/error-monitoring.md | 始终(基线) |
| 追踪 | ${SKILL_ROOT}/references/tracing.md | 需要 API 调用 / 分布式追踪时 |
| 会话回放 | ${SKILL_ROOT}/references/session-replay.md | 面向用户的应用时 |
| 日志记录 | ${SKILL_ROOT}/references/logging.md | 需要结构化日志 / 日志到追踪关联时 |
对于每个功能:读取 ${SKILL_ROOT}/references/<功能>.md,严格按照步骤操作,验证其是否有效。
| 文件 | 用途 | 现代 | 旧版 |
|---|---|---|---|
src/instrumentation.server.ts | 服务器 Sentry.init() — 在启动时运行一次 | ✅ 必需 | ❌ |
src/hooks.client.ts | 客户端 Sentry.init() + handleError | ✅ 必需 | ✅ 必需 |
src/hooks.server.ts | handleError + sentryHandle()(无初始化) | ✅ 必需 | ✅ 初始化放在这里 |
svelte.config.js | 启用 experimental.instrumentation.server | ✅ 必需 | ❌ |
vite.config.ts | sentrySvelteKit() 插件用于源映射 | ✅ 推荐 | ✅ 推荐 |
.env | SENTRY_AUTH_TOKEN、SENTRY_ORG、SENTRY_PROJECT | ✅ 用于源映射 | ✅ 用于源映射 |
Sentry.init() 选项| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dsn | string | — | 必需。 使用环境变量;为空时 SDK 被禁用 |
environment | string | "production" | 例如:"staging"、"development" |
release | string | — | 例如:"my-app@1.2.3" 或 git SHA |
sendDefaultPii | boolean | false | 包含 IP 地址和请求头 |
tracesSampleRate | number | — | 0–1;开发环境用 1.0,生产环境用 0.1–0.2 |
tracesSampler | function | — | 按事务采样;覆盖 tracesSampleRate |
tracePropagationTargets | `(string | RegExp)[]` | — |
replaysSessionSampleRate | number | — | 记录所有会话的比例(仅客户端) |
replaysOnErrorSampleRate | number | — | 记录错误会话的比例(仅客户端) |
enableLogs | boolean | false | 启用 Sentry.logger.* API |
beforeSendLog | function | — | 在发送前过滤/修改日志 |
debug | boolean | false | 将详细的 SDK 输出到控制台 |
instrumentation.server.ts / hooks.server.ts)| 选项 | 类型 | 说明 |
|---|---|---|
serverName | string | 服务器事件上的主机名标签 |
includeLocalVariables | boolean | 将局部变量附加到堆栈帧 |
shutdownTimeout | number | 进程退出前刷新事件的毫秒数(默认值:2000) |
| 适配器 | 支持 |
|---|---|
@sveltejs/adapter-auto / adapter-vercel (Node) | ✅ 完全支持 |
@sveltejs/adapter-node | ✅ 完全支持 |
@sveltejs/adapter-cloudflare | ⚠️ 部分支持 — 需要额外设置 |
| Vercel Edge Runtime | ❌ 不支持 |
设置完成后,触发测试事件以确认 Sentry 正在接收数据:
<!-- src/routes/sentry-test/+page.svelte -->
<script>
import * as Sentry from "@sentry/sveltekit";
</script>
<button onclick={() => { throw new Error("Sentry 客户端测试"); }}>
测试客户端错误
</button>
<button onclick={() => Sentry.captureMessage("Sentry 测试消息", "info")}>
测试消息
</button>
// src/routes/sentry-test/+server.ts
export const GET = () => {
throw new Error("Sentry 服务器测试");
};
检查 Sentry 仪表板:
如果没有出现任何内容,请在 Sentry.init() 中设置 debug: true,并检查浏览器/服务器控制台中的 SDK 输出。
完成 Svelte/SvelteKit 设置后,检查是否存在缺少 Sentry 覆盖的配套后端:
# 在相邻目录中查找后端
ls ../backend ../server ../api ../go ../python 2>/dev/null
cat ../go.mod 2>/dev/null | head -3
cat ../requirements.txt ../pyproject.toml 2>/dev/null | head -3
cat ../Gemfile 2>/dev/null | head -3
如果存在未配置 Sentry 的后端,建议使用匹配的技能:
| 检测到的后端 | 建议技能 |
|---|---|
Go (go.mod) | sentry-go-sdk |
Python (requirements.txt, pyproject.toml) | sentry-python-sdk |
Ruby (Gemfile) | sentry-ruby-sdk |
| Node.js (Express, Fastify 等) | 使用 @sentry/node — 参见 docs.sentry.io/platforms/javascript/guides/express/ |
| 问题 | 解决方案 |
|---|---|
| 事件未出现 | 设置 debug: true,检查 DSN,打开浏览器控制台查看 SDK 错误 |
| 源映射不工作 | 运行 npm run build(不是 dev),验证 SENTRY_AUTH_TOKEN 已设置 |
| 服务器错误未捕获 | 确保从 hooks.server.ts 导出了 handleErrorWithSentry() |
| 客户端错误未捕获 | 确保从 hooks.client.ts 导出了 handleErrorWithSentry() |
| 会话回放未记录 | 确认 replayIntegration() 仅在客户端初始化中(绝不在服务器端) |
sentryHandle() + 其他 handle 无法组合 | 使用 sequence(Sentry.sentryHandle(), myHandle) 包装 |
| 广告拦截器阻止事件 | 设置 tunnel: "/sentry-tunnel" 并添加服务器端中继端点 |
| SvelteKit 检测未激活 | 确认 svelte.config.js 中 experimental.instrumentation.server: true |
| Cloudflare 适配器问题 | 查阅 docs.sentry.io/platforms/javascript/guides/sveltekit/ 获取适配器特定说明 |
wrapLoadWithSentry / wrapServerLoadWithSentry 错误 | 这些是旧版包装器 — 移除它们;在 ≥10.8.0 版本中,sentryHandle() 会自动检测 load 函数 |
每周安装量
152
仓库
GitHub 星标数
82
首次出现
2026年3月1日
安全审计
安装于
gemini-cli151
codex151
cursor151
amp150
cline150
github-copilot150
All Skills > SDK Setup > Svelte SDK
Opinionated wizard that scans your project and guides you through complete Sentry setup for Svelte and SvelteKit.
@sentry/svelte, @sentry/sveltekit, or Sentry SDK for SvelteNote: SDK versions and APIs below reflect current Sentry docs at time of writing (
@sentry/sveltekit≥10.8.0, SvelteKit ≥2.31.0). Always verify against docs.sentry.io/platforms/javascript/guides/sveltekit/ before implementing.
Run these commands to understand the project before making any recommendations:
# Detect framework type
cat package.json | grep -E '"svelte"|"@sveltejs/kit"|"@sentry/svelte"|"@sentry/sveltekit"'
# Check for SvelteKit indicators
ls svelte.config.js svelte.config.ts vite.config.ts vite.config.js 2>/dev/null
# Check SvelteKit version (determines which setup pattern to use)
cat package.json | grep '"@sveltejs/kit"'
# Check if Sentry is already installed
cat package.json | grep '"@sentry/'
# Check existing hook files
ls src/hooks.client.ts src/hooks.client.js src/hooks.server.ts src/hooks.server.js \
src/instrumentation.server.ts 2>/dev/null
# Detect logging libraries (Node side)
cat package.json | grep -E '"pino"|"winston"|"consola"'
# Detect if there's a backend (Go, Python, Ruby, etc.) in adjacent directories
ls ../backend ../server ../api 2>/dev/null
cat ../go.mod ../requirements.txt ../Gemfile 2>/dev/null | head -3
What to determine:
| Question | Impact |
|---|---|
@sveltejs/kit in package.json? | SvelteKit path vs. plain Svelte path |
| SvelteKit ≥2.31.0? | Modern (instrumentation.server.ts) vs. legacy setup |
@sentry/sveltekit already present? | Skip install, go straight to feature config |
vite.config.ts present? | Source map upload via Vite plugin available |
| Backend directory found? | Trigger Phase 4 cross-link suggestion |
Present a concrete recommendation based on what you found. Don't ask open-ended questions — lead with a proposal:
Recommended (core coverage):
Optional (enhanced observability):
Sentry.logger.*; recommend when app uses server-side logging or needs log-to-trace correlationRecommendation logic:
| Feature | Recommend when... |
|---|---|
| Error Monitoring | Always — non-negotiable baseline |
| Tracing | Always for SvelteKit (client + server); for plain Svelte when calling APIs |
| Session Replay | User-facing app, login flows, or checkout pages present |
| Logging | App already uses server-side logging, or structured log search is needed |
Propose: "I recommend setting up Error Monitoring + Tracing + Session Replay. Want me to also add structured Logging?"
| Your project | Package | Setup complexity |
|---|---|---|
| SvelteKit (≥2.31.0) | @sentry/sveltekit | 5 files to create/modify |
| SvelteKit (<2.31.0) | @sentry/sveltekit | 3 files (init in hooks.server.ts) |
Plain Svelte (no @sveltejs/kit) | @sentry/svelte | Single entry point |
You need to run this yourself — the wizard opens a browser for login and requires interactive input that the agent can't handle. Copy-paste into your terminal:
npx @sentry/wizard@latest -i sveltekitIt handles login, org/project selection, SDK installation, client/server hooks, Vite plugin config, source map upload, and adds a
/sentry-example-page.Once it finishes, come back and skip toVerification.
If the user skips the wizard, proceed with Option 2 (Manual Setup) below.
Step 1 — Install
npm install @sentry/sveltekit --save
Step 2 —svelte.config.js — Enable instrumentation
import adapter from "@sveltejs/adapter-auto";
const config = {
kit: {
adapter: adapter(),
experimental: {
instrumentation: { server: true },
tracing: { server: true },
},
},
};
export default config;
Step 3 —src/instrumentation.server.ts — Server-side init (runs once at startup)
import * as Sentry from "@sentry/sveltekit";
Sentry.init({
dsn: process.env.SENTRY_DSN,
environment: process.env.SENTRY_ENVIRONMENT,
release: process.env.SENTRY_RELEASE,
sendDefaultPii: true,
tracesSampleRate: 1.0, // lower to 0.1–0.2 in production
enableLogs: true,
});
Step 4 —src/hooks.client.ts — Client-side init
import * as Sentry from "@sentry/sveltekit";
Sentry.init({
dsn: import.meta.env.PUBLIC_SENTRY_DSN ?? import.meta.env.VITE_SENTRY_DSN,
environment: import.meta.env.MODE,
sendDefaultPii: true,
tracesSampleRate: 1.0,
integrations: [
Sentry.replayIntegration({
maskAllText: true,
blockAllMedia: true,
}),
],
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
enableLogs: true,
});
export const handleError = Sentry.handleErrorWithSentry();
Step 5 —src/hooks.server.ts — Server hooks (no init here in modern setup)
import * as Sentry from "@sentry/sveltekit";
import { sequence } from "@sveltejs/kit/hooks";
export const handleError = Sentry.handleErrorWithSentry();
// sentryHandle() instruments incoming requests and creates root spans
export const handle = Sentry.sentryHandle();
// If you have other handle functions, compose with sequence():
// export const handle = sequence(Sentry.sentryHandle(), myAuthHandle);
Step 6 —vite.config.ts — Source maps (requires SENTRY_AUTH_TOKEN)
import { sveltekit } from "@sveltejs/kit/vite";
import { sentrySvelteKit } from "@sentry/sveltekit";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [
// sentrySvelteKit MUST come before sveltekit()
sentrySvelteKit({
org: process.env.SENTRY_ORG,
project: process.env.SENTRY_PROJECT,
authToken: process.env.SENTRY_AUTH_TOKEN,
}),
sveltekit(),
],
});
Add to .env (never commit):
SENTRY_AUTH_TOKEN=sntrys_...
SENTRY_ORG=my-org-slug
SENTRY_PROJECT=my-project-slug
@sentry/sveltekit <10.8.0)Skip instrumentation.server.ts and svelte.config.js changes. Instead, put Sentry.init() directly in hooks.server.ts:
// src/hooks.server.ts (legacy — init goes here)
import * as Sentry from "@sentry/sveltekit";
Sentry.init({
dsn: process.env.SENTRY_DSN,
tracesSampleRate: 1.0,
enableLogs: true,
});
export const handleError = Sentry.handleErrorWithSentry();
export const handle = Sentry.sentryHandle();
hooks.client.ts and vite.config.ts are identical to the modern path.
Install:
npm install @sentry/svelte --save
Configure in entry point (src/main.ts or src/main.js) before mounting the app:
import * as Sentry from "@sentry/svelte";
import App from "./App.svelte";
Sentry.init({
dsn: import.meta.env.VITE_SENTRY_DSN,
environment: import.meta.env.MODE,
sendDefaultPii: true,
integrations: [
Sentry.browserTracingIntegration(),
Sentry.replayIntegration({
maskAllText: true,
blockAllMedia: true,
}),
],
tracesSampleRate: 1.0,
tracePropagationTargets: ["localhost", /^https:\/\/yourapi\.io/],
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
enableLogs: true,
});
const app = new App({ target: document.getElementById("app")! });
export default app;
Optional: Svelte component tracking (auto-injects tracking into all components):
// svelte.config.js
import { withSentryConfig } from "@sentry/svelte";
export default withSentryConfig(
{ compilerOptions: {} },
{ componentTracking: { trackComponents: true } }
);
Walk through features one at a time. Load the reference file, follow its steps, then verify before moving on:
| Feature | Reference | Load when... |
|---|---|---|
| Error Monitoring | ${SKILL_ROOT}/references/error-monitoring.md | Always (baseline) |
| Tracing | ${SKILL_ROOT}/references/tracing.md | API calls / distributed tracing needed |
| Session Replay | ${SKILL_ROOT}/references/session-replay.md | User-facing app |
| Logging | ${SKILL_ROOT}/references/logging.md | Structured logs / log-to-trace correlation |
For each feature: Read ${SKILL_ROOT}/references/<feature>.md, follow steps exactly, verify it works.
| File | Purpose | Modern | Legacy |
|---|---|---|---|
src/instrumentation.server.ts | Server Sentry.init() — runs once at startup | ✅ Required | ❌ |
src/hooks.client.ts | Client Sentry.init() + handleError | ✅ Required | ✅ Required |
src/hooks.server.ts | + (no init) |
Sentry.init() Options| Option | Type | Default | Notes |
|---|---|---|---|
dsn | string | — | Required. Use env var; SDK is disabled when empty |
environment | string | "production" | e.g., "staging", "development" |
instrumentation.server.ts / hooks.server.ts)| Option | Type | Notes |
|---|---|---|
serverName | string | Hostname tag on server events |
includeLocalVariables | boolean | Attach local vars to stack frames |
shutdownTimeout | number | ms to flush events before process exit (default: 2000) |
| Adapter | Support |
|---|---|
@sveltejs/adapter-auto / adapter-vercel (Node) | ✅ Full |
@sveltejs/adapter-node | ✅ Full |
@sveltejs/adapter-cloudflare | ⚠️ Partial — requires extra setup |
| Vercel Edge Runtime | ❌ Not supported |
After setup, trigger test events to confirm Sentry is receiving data:
<!-- src/routes/sentry-test/+page.svelte -->
<script>
import * as Sentry from "@sentry/sveltekit";
</script>
<button onclick={() => { throw new Error("Sentry client test"); }}>
Test Client Error
</button>
<button onclick={() => Sentry.captureMessage("Sentry test message", "info")}>
Test Message
</button>
// src/routes/sentry-test/+server.ts
export const GET = () => {
throw new Error("Sentry server test");
};
Check the Sentry dashboard:
If nothing appears, set debug: true in Sentry.init() and check the browser/server console for SDK output.
After completing Svelte/SvelteKit setup, check for a companion backend missing Sentry coverage:
# Look for backend in adjacent directories
ls ../backend ../server ../api ../go ../python 2>/dev/null
cat ../go.mod 2>/dev/null | head -3
cat ../requirements.txt ../pyproject.toml 2>/dev/null | head -3
cat ../Gemfile 2>/dev/null | head -3
If a backend exists without Sentry configured, suggest the matching skill:
| Backend detected | Suggest skill |
|---|---|
Go (go.mod) | sentry-go-sdk |
Python (requirements.txt, pyproject.toml) | sentry-python-sdk |
Ruby (Gemfile) | sentry-ruby-sdk |
| Node.js (Express, Fastify, etc.) | Use @sentry/node — see |
| Issue | Solution |
|---|---|
| Events not appearing | Set debug: true, check DSN, open browser console for SDK errors |
| Source maps not working | Run npm run build (not dev), verify SENTRY_AUTH_TOKEN is set |
| Server errors not captured | Ensure handleErrorWithSentry() is exported from hooks.server.ts |
| Client errors not captured | Ensure handleErrorWithSentry() is exported from |
Weekly Installs
152
Repository
GitHub Stars
82
First Seen
Mar 1, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
gemini-cli151
codex151
cursor151
amp150
cline150
github-copilot150
Dogfood - Vercel Labs 自动化 Web 应用探索与问题报告工具
17,400 周安装
handleErrorsentryHandle()| ✅ Required |
| ✅ Init goes here |
svelte.config.js | Enable experimental.instrumentation.server | ✅ Required | ❌ |
vite.config.ts | sentrySvelteKit() plugin for source maps | ✅ Recommended | ✅ Recommended |
.env | SENTRY_AUTH_TOKEN, SENTRY_ORG, SENTRY_PROJECT | ✅ For source maps | ✅ For source maps |
release | string | — | e.g., "my-app@1.2.3" or git SHA |
sendDefaultPii | boolean | false | Includes IP addresses and request headers |
tracesSampleRate | number | — | 0–1; use 1.0 in dev, 0.1–0.2 in prod |
tracesSampler | function | — | Per-transaction sampling; overrides tracesSampleRate |
tracePropagationTargets | `(string | RegExp)[]` | — |
replaysSessionSampleRate | number | — | Fraction of all sessions recorded (client only) |
replaysOnErrorSampleRate | number | — | Fraction of error sessions recorded (client only) |
enableLogs | boolean | false | Enable Sentry.logger.* API |
beforeSendLog | function | — | Filter/modify logs before send |
debug | boolean | false | Verbose SDK output to console |
hooks.client.ts| Session replay not recording | Confirm replayIntegration() is in client init only (never server) |
sentryHandle() + other handles not composing | Wrap with sequence(Sentry.sentryHandle(), myHandle) |
| Ad-blocker blocking events | Set tunnel: "/sentry-tunnel" and add a server-side relay endpoint |
| SvelteKit instrumentation not activating | Confirm experimental.instrumentation.server: true in svelte.config.js |
| Cloudflare adapter issues | Consult docs.sentry.io/platforms/javascript/guides/sveltekit/ for adapter-specific notes |
wrapLoadWithSentry / wrapServerLoadWithSentry errors | These are legacy wrappers — remove them; sentryHandle() instruments load functions automatically in ≥10.8.0 |