Verification Checklist
Confirm Sentry is fully operational before shipping to production — every item matters.
Before you ship any project to production, run through this checklist. Every item here represents something that, if missed, will silently reduce Sentry's effectiveness — you'll think it's working when it isn't.
This checklist takes about 10 minutes the first time. After doing it once, most items become habits and take 2 minutes to confirm.
Account & Project
- Sentry account created at sentry.io — you can log in successfully
- Organisation slug noted — found in Settings → Organisation → "Organisation Slug". Write it here:
_______________ - Sentry project created for this specific app — not reusing a project from another app
- Platform selected correctly — React for Vite apps, Next.js for Next.js apps, React Native for mobile
- Project slug noted — found in Settings → Projects → click your project → "Project Slug". Write it here:
_______________ - Alert rule active — Settings → Alerts → at least one rule that emails you on new issues
DSN Configuration
- DSN copied from Sentry — Settings → Projects → Client Keys (DSN)
- DSN added to
.env—VITE_SENTRY_DSN=https://...(Vite projects) orNEXT_PUBLIC_SENTRY_DSN=https://...(Next.js projects) -
.envis in.gitignore— the DSN must never be committed to GitHub as a hardcoded value in the env file (it can be in code viaimport.meta.env.VITE_SENTRY_DSN) - DSN added to Vercel — Settings → Environment Variables in your Vercel project, with Environment set to "Production"
- DSN saved to VaultMate — under this project's entry, category "API Key", title "Sentry DSN"
SDK Installation
-
@sentry/reactinstalled — checkpackage.jsonfor"@sentry/react"in dependencies -
src/lib/instrument.tscreated — withSentry.init()configured correctly -
enabled: import.meta.env.PROD— Sentry only runs in production, not development -
instrument.tsis the first import inmain.tsx— before React, before anything else. Openmain.tsxand verify line 1 isimport './lib/instrument' -
Sentry.setUser()called after login — in your auth context or auth state handler -
Sentry.setUser(null)called after logout — clears user context so errors aren't attributed to the wrong person
Live Error Capture Test
This is the critical test. Do not skip it.
- Test error thrown in a production build — temporarily added
throw new Error("Test Sentry error")to a component, rannpm run build && npm run preview(or deployed to Vercel preview URL) - Error appears in Sentry Issues within 60 seconds — go to your Sentry project → Issues tab and confirm the test error is visible
- Test error removed and production redeployed — the test
throwline has been deleted, a clean build deployed
If the test error doesn't appear after 2 minutes: Open the browser DevTools → Network tab → reload the page → look for a request to *.ingest.sentry.io. If there's no request at all, instrument.ts is not being loaded — check the import order in main.tsx. If the request exists but returns an error, the DSN is wrong — double-check it against your Sentry project settings.
User Context
- Log into your app in a browser
- Trigger the test error again (or trigger a real error)
- Check the Sentry issue — open the issue detail and look for "User" in the right panel. It should show your email address or user ID, not "Anonymous"
- If user shows as Anonymous: check that
Sentry.setUser()is being called after the login completes, and that the call happens after Sentry has initialised (i.e.,instrument.tswas already loaded)
Source Maps (Complete the Auth Tokens section first)
-
@sentry/vite-plugininstalled — checkpackage.json -
.env.sentry-build-plugincreated withSENTRY_ORG,SENTRY_PROJECT,SENTRY_AUTH_TOKEN -
.env.sentry-build-pluginin.gitignore— this file contains an auth token and must never be committed -
vite.config.tsupdated —build.sourcemap: "hidden"andsentryVitePlugin()added - Production build run —
npm run buildcompleted without errors - Build output confirms upload — terminal shows Sentry plugin messages confirming source maps were uploaded and deleted from
dist/ - Stack trace shows readable code — open any Sentry issue captured after this build. The stack trace should show file names like
src/components/FeePaymentForm.tsx:112, not minified names
Auth Tokens
- Source Maps Token created in Sentry — Settings → Auth Tokens, with permissions
project:releasesandorg:read - Source Maps Token saved to VaultMate — title "Sentry Auth Token — Source Maps", category "API Key"
- Source Maps Token added as GitHub Secret — repository → Settings → Secrets →
SENTRY_AUTH_TOKEN - Read Token created in Sentry — separate token with permissions
event:readandproject:read - Read Token saved to VaultMate — title "Sentry Read Token — Admin Dashboard", category "API Key"
- Read Token added as Supabase secret —
supabase secrets set SENTRY_READ_TOKEN=sntrys_...
Final Confirmation
When every item above is checked, answer these three questions:
1. If your app crashes at 3am tonight, will you know about it? Yes — if the alert rule is active and your email is the action target.
2. When you open the Sentry issue tomorrow morning, will you know which file and line caused the crash? Yes — if source maps are configured and the Vite plugin uploaded them during the build.
3. Will you know which user was affected?
Yes — if Sentry.setUser() is called after login with the user's ID and email.
If the answer to all three is yes, Sentry is fully operational. Ship with confidence.
What to Do When an Error Arrives
Once Sentry is live, you'll receive email alerts for new errors. Here is the process to handle them efficiently:
Open the Sentry email
The email contains a direct link to the issue. Click it — don't navigate to Sentry manually.
Read the breadcrumbs first
Before looking at code, scroll to the Breadcrumbs section. Understand what the user was doing. Can you reproduce it? What screen were they on? What did they click?
Read the stack trace
With source maps, you'll see the exact file and line. Open that file in VS Code.
Check the tags
Look at browser, OS, device, and user email. Is this browser-specific? User-specific? A pattern across many users?
Reproduce it locally
Using the breadcrumbs as a script: navigate to the same page, perform the same actions. Confirm you can reproduce the error in your dev environment.
Fix, test, deploy
Fix the bug. Test the fix locally. Deploy. Sentry will automatically link the fix to the release that resolves the issue.
Mark resolved in Sentry
Open the issue → click Resolve. If the same bug reappears after your fix, Sentry will reopen it automatically and notify you.
The goal is zero unresolved P0 issues. Not zero errors total — some noise is inevitable from browser extensions and third-party scripts. But any error originating from your own code (src/) that affects real users should be resolved within 24 hours. Sentry is the system that makes this possible. Without it, you wouldn't know the error existed.