Problem
Client-side errors are invisible. A wallet connection that fails for a specific
browser or extension version, or a dashboard that throws on an edge-case data
shape, will simply be experienced as "the site is broken" with no signal
reaching anyone who could fix it.
What to do
- Integrate Sentry or an equivalent, capturing client and server errors with
source maps uploaded at build time — a minified stack trace is not
actionable.
- Wire it into the
error.tsx and global-error.tsx boundaries.
- Scrub aggressively before sending: no wallet addresses, no request bodies, no
anything that identifies a user. This is a privacy-forward product and the
error tracker must not become the leak.
- Tag events with release version and commit SHA so a regression is traceable
to a deploy.
- Alert on error-rate spikes rather than individual events.
Acceptance criteria
Notes
Write the scrubbing test as an assertion that a known address string never
appears in a captured payload. It is the only form of this that stays true as
the codebase changes.
Problem
Client-side errors are invisible. A wallet connection that fails for a specific
browser or extension version, or a dashboard that throws on an edge-case data
shape, will simply be experienced as "the site is broken" with no signal
reaching anyone who could fix it.
What to do
source maps uploaded at build time — a minified stack trace is not
actionable.
error.tsxandglobal-error.tsxboundaries.anything that identifies a user. This is a privacy-forward product and the
error tracker must not become the leak.
to a deploy.
Acceptance criteria
Notes
Write the scrubbing test as an assertion that a known address string never
appears in a captured payload. It is the only form of this that stays true as
the codebase changes.