feat: integrate Sentry browser error tracking

Initializes @sentry/browser early in main.ts with environment
detection (production/preview/development). Disabled on localhost
and Tauri desktop. Traces sampled at 10%.
This commit is contained in:
Elie Habib
2026-02-18 13:56:31 +04:00
parent 71a62e5bb4
commit 941475eb79
3 changed files with 92 additions and 2 deletions

80
package-lock.json generated
View File

@@ -1,18 +1,19 @@
{
"name": "world-monitor",
"version": "2.3.8",
"version": "2.3.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "world-monitor",
"version": "2.3.8",
"version": "2.3.9",
"dependencies": {
"@deck.gl/aggregation-layers": "^9.2.6",
"@deck.gl/core": "^9.2.6",
"@deck.gl/geo-layers": "^9.2.6",
"@deck.gl/layers": "^9.2.6",
"@deck.gl/mapbox": "^9.2.6",
"@sentry/browser": "^10.39.0",
"@upstash/redis": "^1.36.1",
"@vercel/analytics": "^1.6.1",
"@xenova/transformers": "^2.17.2",
@@ -3883,6 +3884,81 @@
"win32"
]
},
"node_modules/@sentry-internal/browser-utils": {
"version": "10.39.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.39.0.tgz",
"integrity": "sha512-W6WODonMGiI13Az5P7jd/m2lj/JpIyuVKg7wE4X+YdlMehLspAv6I7gRE4OBSumS14ZjdaYDpD/lwtnBwKAzcA==",
"license": "MIT",
"dependencies": {
"@sentry/core": "10.39.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@sentry-internal/feedback": {
"version": "10.39.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.39.0.tgz",
"integrity": "sha512-cRXmmDeOr5FzVsBNRLU4WDEuC3fhuD0XV362EWl4DI3XBGao8ukaueKcLIKic5WZx6uXimjWw/UJmDLgxeCqkg==",
"license": "MIT",
"dependencies": {
"@sentry/core": "10.39.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@sentry-internal/replay": {
"version": "10.39.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.39.0.tgz",
"integrity": "sha512-obZoYOrUfxIYBHkmtPpItRdE38VuzF1VIxSgZ8Mbtq/9UvCWh+eOaVWU2stN/cVu1KYuYX0nQwBvdN28L6y/JA==",
"license": "MIT",
"dependencies": {
"@sentry-internal/browser-utils": "10.39.0",
"@sentry/core": "10.39.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@sentry-internal/replay-canvas": {
"version": "10.39.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.39.0.tgz",
"integrity": "sha512-TTiX0XWCcqTqFGJjEZYObk93j/sJmXcqPzcu0cN2mIkKnnaHDY3w74SHZCshKqIr0AOQdt1HDNa36s3TCdt0Jw==",
"license": "MIT",
"dependencies": {
"@sentry-internal/replay": "10.39.0",
"@sentry/core": "10.39.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@sentry/browser": {
"version": "10.39.0",
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.39.0.tgz",
"integrity": "sha512-I50W/1PDJWyqgNrGufGhBYCmmO3Bb159nx2Ut2bKoVveTfgH/hLEtDyW0kHo8Fu454mW+ukyXfU4L4s+kB9aaw==",
"license": "MIT",
"dependencies": {
"@sentry-internal/browser-utils": "10.39.0",
"@sentry-internal/feedback": "10.39.0",
"@sentry-internal/replay": "10.39.0",
"@sentry-internal/replay-canvas": "10.39.0",
"@sentry/core": "10.39.0"
},
"engines": {
"node": ">=18"
}
},
"node_modules/@sentry/core": {
"version": "10.39.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.39.0.tgz",
"integrity": "sha512-xCLip2mBwCdRrvXHtVEULX0NffUTYZZBhEUGht0WFL+GNdNQ7gmBOGOczhZlrf2hgFFtDO0fs1xiP9bqq5orEQ==",
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/@sindresorhus/merge-streams": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",

View File

@@ -61,6 +61,7 @@
"@deck.gl/geo-layers": "^9.2.6",
"@deck.gl/layers": "^9.2.6",
"@deck.gl/mapbox": "^9.2.6",
"@sentry/browser": "^10.39.0",
"@upstash/redis": "^1.36.1",
"@vercel/analytics": "^1.6.1",
"@xenova/transformers": "^2.17.2",

View File

@@ -1,7 +1,20 @@
import './styles/main.css';
import 'maplibre-gl/dist/maplibre-gl.css';
import * as Sentry from '@sentry/browser';
import { inject } from '@vercel/analytics';
import { App } from './App';
// Initialize Sentry error tracking (early as possible)
Sentry.init({
dsn: 'https://afc9a1c85c6ba49f8464a43f8de74ccd@o4509927897890816.ingest.us.sentry.io/4510906342113280',
release: `worldmonitor@${__APP_VERSION__}`,
environment: location.hostname === 'worldmonitor.app' ? 'production'
: location.hostname.includes('vercel.app') ? 'preview'
: 'development',
enabled: !location.hostname.startsWith('localhost') && !('__TAURI_INTERNALS__' in window),
sendDefaultPii: true,
tracesSampleRate: 0.1,
});
import { debugInjectTestEvents, debugGetCells, getCellCount } from '@/services/geo-convergence';
import { initMetaTags } from '@/services/meta-tags';
import { installRuntimeFetchPatch } from '@/services/runtime';