sentry-react-router-framework-sdk

安装量: 417
排名: #7954

安装

npx skills add https://github.com/getsentry/sentry-for-ai --skill sentry-react-router-framework-sdk

All Skills

SDK Setup React Router Framework SDK Sentry React Router Framework SDK Opinionated wizard that scans your React Router Framework project and guides you through complete Sentry setup across client and server entry points. Invoke This Skill When User asks to "add Sentry to React Router Framework" or "set up Sentry in React Router v7 framework mode" User wants to install or configure @sentry/react-router User uses React Router framework entry files ( entry.client.tsx , entry.server.tsx ) and wants tracing/error capture User asks about reactRouterTracingIntegration , sentryOnError , createSentryHandleRequest , or React Router wizard setup Important: This SDK is currently beta. For React Router non-framework/data/declarative mode (v5/v6/v7), use sentry-react-sdk with @sentry/react integrations instead. Phase 1: Detect Run these commands to understand the project before making any recommendations:

Detect React Router Framework indicators and versions

cat package.json | grep -E '"react-router"|"@react-router/"|"react-router-dev"|"react-router-serve"'

Detect Sentry package choice

cat package.json | grep -E '"@sentry/react-router"|"@sentry/react"|"@sentry/profiling-node"'

Check entry point visibility and server instrumentation files

ls entry.client.tsx entry.server.tsx instrument.server.mjs react-router.config.ts vite.config.ts 2

/dev/null

Check if React Router files are still hidden (framework mode helper command available)

cat package.json | grep -E '"reveal"|react-router'

Detect runtime startup scripts and import strategy

cat package.json | grep -E '"dev"|"start"|NODE_OPTIONS|--import'

Detect optional logging/profile-related dependencies

cat package.json | grep -E '"pino"|"winston"|"@sentry/profiling-node"'

Detect companion backend directories

ls
..
/backend
..
/server
..
/api
2
>
/dev/null
cat
..
/go.mod
..
/requirements.txt
..
/Gemfile
..
/pom.xml
2
>
/dev/null
|
head
-3
What to determine:
Question
Impact
@sentry/react-router
already installed?
Skip install and move to feature setup
Framework entry files exposed?
Need
npx react-router reveal
before manual config
Using
@sentry/react
instead?
This is likely non-framework routing; redirect to
sentry-react-sdk
react-router.config.ts
+ Vite config present?
Source map upload and build-end hook setup path
NODE_OPTIONS --import
available?
Preferred server instrumentation startup path
@sentry/profiling-node
desired/available?
Enable server profiling integration
Backend directory found?
Trigger Phase 4 cross-link suggestion
Phase 2: Recommend
Present a concrete recommendation based on what you found. Do not ask open-ended questions — lead with a proposal:
Recommended (core coverage):
Error Monitoring
— always; captures client and server errors with framework hooks
Tracing
— recommended baseline in framework apps with client/server request flow
Session Replay
— recommended for user-facing applications
Optional (enhanced observability):
Profiling
— server-side profiling with
@sentry/profiling-node
Logs
— structured
Sentry.logger.*
ingestion and correlation
User Feedback
— in-app feedback widget/reporting flows
Recommendation logic:
Feature
Recommend when...
Error Monitoring
Always
— non-negotiable baseline
Tracing
Usually yes
in framework apps; route and request timing is high-value
Session Replay
User-facing product or difficult UX debugging
Profiling
Server performance investigations needed; Node runtime compatibility verified
Logs
Team wants log-search and trace correlation in Sentry
User Feedback
Product/support teams need direct in-app issue reports
Propose:
"I recommend Error Monitoring + Tracing + Session Replay first. Want me to also enable Profiling, Logs, and User Feedback?"
Phase 3: Guide
Option 1: Wizard (Recommended)
You need to run this yourself
— the wizard is interactive and may require browser login:
npx @sentry/wizard@latest
-i
reactRouter
It installs
@sentry/react-router
, exposes React Router entry files, creates instrumentation files, updates root error handling, configures source map upload, and adds verification examples.
Once it finishes, continue at
Verification
.
If the user skips wizard setup, continue with manual setup below.
Option 2: Manual Setup
Install packages
npm
install
@sentry/react-router
--save
If profiling is needed:
npm
install
@sentry/profiling-node
--save
Expose framework entry files
npx react-router reveal
Configure client in
entry.client.tsx
import
*
as
Sentry
from
"@sentry/react-router"
;
import
{
startTransition
,
StrictMode
}
from
"react"
;
import
{
hydrateRoot
}
from
"react-dom/client"
;
import
{
HydratedRouter
}
from
"react-router/dom"
;
Sentry
.
init
(
{
dsn
:
"PUBLICDSN_"
,
sendDefaultPii
:
true
,
integrations
:
[
Sentry
.
reactRouterTracingIntegration
(
)
,
Sentry
.
replayIntegration
(
)
,
Sentry
.
feedbackIntegration
(
{
colorScheme
:
"system"
}
)
,
]
,
enableLogs
:
true
,
tracesSampleRate
:
1.0
,
tracePropagationTargets
:
[
/
^
\/
/
,
/
^
https:
\/
\/
yourserver
.
io
\/
api
/
]
,
replaysSessionSampleRate
:
0.1
,
replaysOnErrorSampleRate
:
1.0
,
}
)
;
startTransition
(
(
)
=>
{
hydrateRoot
(
document
,
<
StrictMode
>
<
HydratedRouter
onError
=
{
Sentry
.
sentryOnError
}
/>
</
StrictMode
>
,
)
;
}
)
;
Configure server in
instrument.server.mjs
import
*
as
Sentry
from
"@sentry/react-router"
;
import
{
nodeProfilingIntegration
}
from
"@sentry/profiling-node"
;
Sentry
.
init
(
{
dsn
:
"PUBLICDSN_"
,
sendDefaultPii
:
true
,
enableLogs
:
true
,
integrations
:
[
nodeProfilingIntegration
(
)
]
,
tracesSampleRate
:
1.0
,
profileSessionSampleRate
:
1.0
,
}
)
;
Wrap server handlers in
entry.server.tsx
import
*
as
Sentry
from
"@sentry/react-router"
;
import
{
createReadableStreamFromReadable
}
from
"@react-router/node"
;
import
{
renderToPipeableStream
}
from
"react-dom/server"
;
import
{
ServerRouter
}
from
"react-router"
;
const
handleRequest
=
Sentry
.
createSentryHandleRequest
(
{
ServerRouter
,
renderToPipeableStream
,
createReadableStreamFromReadable
,
}
)
;
export
default
handleRequest
;
export
const
handleError
=
Sentry
.
createSentryHandleError
(
{
logErrors
:
false
,
}
)
;
For custom server logic, use
wrapSentryHandleRequest
,
getMetaTagTransformer
, and manual
Sentry.captureException
in your custom
handleError
.
Load server instrumentation on startup
Prefer
NODE_OPTIONS --import
:
{
"scripts"
:
{
"dev"
:
"NODE_OPTIONS='--import ./instrument.server.mjs' react-router dev"
,
"start"
:
"NODE_OPTIONS='--import ./instrument.server.mjs' react-router-serve ./build/server/index.js"
}
}
Fallback for platforms where runtime flags are restricted:
import
"./instrument.server.mjs"
;
This direct-import method can result in incomplete auto-instrumentation compared to
--import
.
Configure source maps
vite.config.ts
:
import
{
reactRouter
}
from
"@react-router/dev/vite"
;
import
{
sentryReactRouter
,
type
SentryReactRouterBuildOptions
,
}
from
"@sentry/react-router"
;
import
{
defineConfig
}
from
"vite"
;
const
sentryConfig
:
SentryReactRouterBuildOptions
=
{
org
:
"ORGSLUG_"
,
project
:
"PROJECTSLUG_"
,
authToken
:
process
.
env
.
SENTRY_AUTH_TOKEN
,
}
;
export
default
defineConfig
(
(
config
)
=>
{
return
{
plugins
:
[
reactRouter
(
)
,
sentryReactRouter
(
sentryConfig
,
config
)
]
,
}
;
}
)
;
react-router.config.ts
:
import
type
{
Config
}
from
"@react-router/dev/config"
;
import
{
sentryOnBuildEnd
}
from
"@sentry/react-router"
;
export
default
{
ssr
:
true
,
buildEnd
:
async
(
{
viteConfig
,
reactRouterConfig
,
buildManifest
}
)
=>
{
await
sentryOnBuildEnd
(
{
viteConfig
,
reactRouterConfig
,
buildManifest
}
)
;
}
,
}
satisfies Config
;
For Each Agreed Feature
Walk through features one at a time. Load the reference file, follow steps exactly, and verify before moving on:
Feature
Reference
Load when...
Error Monitoring
${SKILL_ROOT}/references/error-monitoring.md
Always
Tracing
${SKILL_ROOT}/references/tracing.md
Route/request performance visibility needed
Profiling
${SKILL_ROOT}/references/profiling.md
Server performance analysis needed
Session Replay
${SKILL_ROOT}/references/session-replay.md
User-facing app
Logs
${SKILL_ROOT}/references/logging.md
Structured logs/correlation needed
User Feedback
${SKILL_ROOT}/references/user-feedback.md
In-app feedback flows needed
Framework Features
${SKILL_ROOT}/references/react-router-framework-features.md
Entry files, wrappers, source maps, startup import strategy
For each feature:
Read ${SKILL_ROOT}/references/.md
, follow steps exactly, verify it works.
Configuration Reference
Key
Sentry.init()
options
Option
Type
Default
Notes
dsn
string
Required; SDK disabled when empty
sendDefaultPii
boolean
false
Includes headers/IP-derived user context
integrations
Integration[]
SDK defaults
Add tracing/replay/feedback/profiling integrations
enableLogs
boolean
false
Enables
Sentry.logger.*
ingestion
tracesSampleRate
number
Usually
1.0
in testing, lower in production
tracePropagationTargets
`(string
RegExp)[]`
SDK defaults
replaysSessionSampleRate
number
Fraction of all sessions recorded
replaysOnErrorSampleRate
number
Fraction of error sessions recorded
profileSessionSampleRate
number
Fraction of transactions profiled (server profiling)
tunnel
string
Optional ad-blocker bypass endpoint
debug
boolean
false
Verbose SDK diagnostics
Framework-specific APIs
API
Purpose
reactRouterTracingIntegration()
Client-side tracing integration for framework mode
sentryOnError
Hooks into React Router
HydratedRouter
error reporting
createSentryHandleRequest(...)
Server request wrapper for framework entry server
createSentryHandleError(...)
Server error handler wrapper
wrapServerLoader(...)
/
wrapServerAction(...)
Manual wrapping for server loaders/actions
sentryReactRouter(...)
Vite plugin for source maps/build integration
sentryOnBuildEnd(...)
React Router build-end hook for source map processing
Verification
Wizard-generated path
If wizard examples were generated, open
/sentry-example-page
and trigger test actions.
Manual error test
export
async
function
loader
(
)
{
throw
new
Error
(
"My first Sentry error!"
)
;
}
Manual tracing test
import
*
as
Sentry
from
"@sentry/react-router"
;
export
async
function
loader
(
)
{
return
Sentry
.
startSpan
(
{
op
:
"test"
,
name
:
"My First Test Transaction"
}
,
(
)
=>
{
throw
new
Error
(
"My first Sentry error!"
)
;
}
,
)
;
}
Logs test
Sentry
.
logger
.
info
(
"User example action completed"
)
;
Sentry
.
logger
.
warn
(
"Slow operation detected"
,
{
operation
:
"data_fetch"
,
duration
:
3500
}
)
;
Sentry
.
logger
.
error
(
"Validation failed"
,
{
field
:
"email"
,
reason
:
"Invalid email"
}
)
;
Confirm in Sentry:
Issues
errors appear
Traces
transaction/span data appears
Profiles
profiles appear when profiling enabled
Replays
replay entries appear when enabled
Logs
log events appear when
enableLogs: true
User Feedback
submissions appear when feedback enabled Phase 4: Cross-Link After completing React Router Framework setup: Check whether the app is actually non-framework routing (v5/v6/v7 data/declarative with @sentry/react ). If yes, redirect to sentry-react-sdk for non-framework routing integrations. Then check companion backend coverage: ls .. /backend .. /server .. /api .. /go .. /python 2

/dev/null cat .. /go.mod .. /requirements.txt .. /pyproject.toml .. /Gemfile .. /pom.xml 2

/dev/null | head -5 Backend detected Suggest skill Go sentry-go-sdk Python sentry-python-sdk Ruby sentry-ruby-sdk Node backend services sentry-node-sdk Java services Use @sentry/java docs Troubleshooting Issue Solution entry.client.tsx / entry.server.tsx missing Run npx react-router reveal first Client errors missing Ensure HydratedRouter includes onError={Sentry.sentryOnError} Server errors missing Use createSentryHandleRequest and createSentryHandleError wrappers Custom server handlers bypass Sentry Use wrapSentryHandleRequest and manual captureException in custom handleError Source maps not uploaded Verify sentryReactRouter plugin config and sentryOnBuildEnd hook SENTRY_AUTH_TOKEN undefined in Vite config Load env vars in config or use .env.sentry-build-plugin Incomplete server auto-instrumentation Prefer NODE_OPTIONS='--import ./instrument.server.mjs' startup Profiling data missing Confirm @sentry/profiling-node installed and nodeProfilingIntegration enabled Running unsupported Node auto-instrumentation version Use instrumentation API/manual wrappers as documented Non-framework app configured with @sentry/react-router Switch to sentry-react-sdk + @sentry/react for v5/v6/v7 non-framework routes

返回排行榜