Error tracking for small teams and their coding agents
Know within a minute when something breaks. Open it on the line that threw, or hand it to your agent.
Ten founding teams get it set up by the founder on a call and the $99 plan free for a year. The offer
Impact, last 14 days
36 events14 users36 sessions
- 12s beforereport_viewed/app/reports/revenue
- 1m 35s beforesearch_performed/app/reports
- 3m 10s beforedashboard_viewed/app/dashboards
- 4m 20s beforelog_in/login
Where it happens
Releaseweb@2.36.0100%
- web@2.36.0100% · 36
Environmentproduction100%
- production100% · 36
BrowserChrome 154.0.0.075% +2
- Chrome 154.0.0.075% · 27
- Edge 154.0.0.017% · 6
- Chrome 153.0.0.08% · 3
OSMac OS X 10.15.761% +1
- Mac OS X 10.15.761% · 22
- Windows 10.039% · 14
Page/app/reports/revenue100%
- /app/reports/revenue100% · 36
UserRobin Garcia14% +9
- Robin Garcia14% · 5
- user_608611% · 4
- user_70408% · 3
- user_62448% · 3
- user_89168% · 3
- user_97508% · 3
- user_83488% · 3
- Morgan Cohen8% · 3
- user_27166% · 2
- Riley Brown6% · 2
Tagarea=reports100%
- area=reports100% · 36
Cannot read properties of undefined (reading 'currencyCode')
- When
- User
- user_2716
- Client
- Chrome 154.0.0.0
- Environment
- production
- Release
- web@2.36.0
const formatters = new Map<string, Intl.NumberFormat>();/** Money in a report is shown in the currency the workspace bills in. */export function formatMoney(cents: number, workspace: Workspace): string {// Set during onboarding, so every workspace has one.const currency = workspace.billing.currencyCode;const key = `${workspace.locale}:${currency}`;let formatter = formatters.get(key);if (!formatter) {formatter = new Intl.NumberFormat(workspace.locale, { style: 'currency', currency });- RevenueSummarysrc/reports/RevenueSummary.tsx:19:13
Keep the Sentry SDK you already have
Vinktar reads what the Sentry SDKs send. Change the DSN, deploy, and your errors land here.
Tested with the Sentry SDKs for JavaScript, Node.js, Next.js, Python, Laravel and Symfony. A Bugsnag SDK moves the same way, with one endpoint setting. How to switch from Sentry.
Starting fresh? Install the Vinktar SDK for the browser, Node.js or PHP, or ask your coding agent to do it.
# .env
SENTRY_DSN=https://<your-key>@in.vinktar.com/<project-id>See what happened before the crash
Every error keeps the half hour before it: the clicks, the requests, the events you track. Stop asking users what they were doing.
- 17:47:45ui.click a.nav-reports[href="/app/reports/revenue"]
- 17:47:46navigation /app/reports → /app/reports/revenue
- 17:47:47xhr GET /api/workspaces/currentstatus=200 duration_ms=50
- 17:47:48xhr GET /api/reports/revenue?period=2026-09status=200 duration_ms=151
- 17:47:59Error captured
Alerts worth leaving on
A new error, a regression or a spike reaches you in Slack or by email within a minute. Noise from browser extensions and crawlers is dropped before it is stored, and never counts against your plan.
Mute anything else per project or per environment.
Built-in filters
Noise every browser produces, dropped before it is stored or counted.
Known browser messages
Script errors with no detail and ResizeObserver loops; the SDK skips these too. 64 filtered this week, free.
Browser extensions
Errors whose every stack frame is inside a browser extension. 38 filtered this week, free.
Browser noise
Ad blockers, wallet extensions, in-app webviews and tag managers nobody can fix. 141 filtered this week, free.
Crawlers
Errors seen by Googlebot, Bingbot, Lighthouse, headless Chrome and the like. 17 filtered this week, free.
Product analytics on the same users
Trends, funnels, retention and SQL over the same people your errors come from. One SDK to install and one bill to pay.
Sign-ups
386
−15.4%New subscriptions
89
+34.8%Reports viewed
Activation
Your coding agent can read it too
Connect Claude Code, Cursor or Codex over MCP. It pulls the issue, the stack trace and what the user did before into the session where the fix gets written.
Every call is logged for you, and it cannot delete your events or errors. Vinktar runs no model, so there is nothing extra to pay for. Connect your agent.
claude mcp add --transport http vinktar "https://mcp.vinktar.com/mcp?login"Issue 164 · project web
Title: TypeError: Cannot read properties of undefined (reading 'currencyCode')
Status: unresolved · first seen in web@2.36.0 (production)
In the window: 36 occurrences · 14 users · 36 sessions
By browser: Chrome 154 (27), Edge 154 (6), Chrome 153 (3)
By URL: /app/reports/revenue (36)
Stack trace (crash first):
at formatMoney (src/reports/format.ts:8:37)
at RevenueSummary (src/reports/RevenueSummary.tsx:19:13)
What this user did in the 30 minutes before it (newest first):
report_viewed /app/reports/revenue
search_performed /app/reports
dashboard_viewed /app/dashboards
log_in /loginThe same bill every month
Free covers 50,000 errors and 1,000,000 events a month. Paid plans start at $29. If a bug gets stuck in a retry loop overnight, Vinktar keeps counting and stops charging after 1,000 repeats of the same error in an hour.
| Plan | A month | Errors | Events | History |
|---|---|---|---|---|
| Free | $0 | 50,000 | 1,000,000 | 30 days |
| Starter | $29 | 50,000 | 1,000,000 | 1 year |
| Pro | $99 | 500,000 | 5,000,000 | 1 year |
| Business | $499 | 5,000,000 | 25,000,000 | 2 years |
Seats and projects are unlimited on every plan, and you never get an overage invoice. Your data is stored in Helsinki, Finland. See pricing.
Questions
Do I have to change my code?
Not if you use a Sentry or Bugsnag SDK: change the DSN or the endpoint and you are done. Starting fresh, add the Vinktar SDK for the browser, Node.js or PHP, or ask your coding agent to set it up.
What happens if I go over my plan?
Nothing is charged. You get an email at 80% and again at 100%. Vinktar keeps accepting data up to twice your plan, then pauses until next month or until you upgrade.
Where is my data stored?
In Helsinki, Finland. Where your data lives has the details.
Can I try it without installing anything?
Yes. The live demo is a real workspace with data in it, and the free plan needs no card.
What does Vinktar not do?
Session replay, tracing and mobile crash reporting. If you need those, Sentry is the better choice. For feature flags and experiments, look at PostHog.
Who is behind Vinktar?
A small team in Europe. Write to john@vinktar.com and someone who built it answers.
Start catching errors today
Or let the founder set it up with you: the first ten teams get the $99 plan free for a year. Ten founding teams