From 061015cccad07ecb161395e01fd24d25cee01e40 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Tue, 22 Oct 2024 21:14:40 +0200 Subject: [PATCH] feat(app): add sentry capture --- .gitea/workflows/main.yaml | 1 + apps/app/package.json | 2 ++ apps/app/src/main.tsx | 16 ++++++++++++++++ apps/app/vite.config.ts | 15 ++++++++++++++- bun.lockb | Bin 487304 -> 502384 bytes 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/main.yaml b/.gitea/workflows/main.yaml index 4ae029d..ab01848 100644 --- a/.gitea/workflows/main.yaml +++ b/.gitea/workflows/main.yaml @@ -30,6 +30,7 @@ jobs: env: NODE_ENV: production VITE_CLERK_PUBLISHABLE_KEY: ${{ vars.CLERK_KEY }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - name: Set docker chmod (temp solution) run: sudo chmod 666 /var/run/docker.sock diff --git a/apps/app/package.json b/apps/app/package.json index e3ae267..fc95bdb 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -15,6 +15,8 @@ "@clerk/clerk-react": "^5.9.4", "@hookform/resolvers": "^3.9.0", "@mdxeditor/editor": "^3.14.0", + "@sentry/react": "^8.35.0", + "@sentry/vite-plugin": "^2.22.6", "@tailwindcss/typography": "^0.5.15", "@tanstack/react-query": "^5.59.0", "@tanstack/react-router": "^1.58.15", diff --git a/apps/app/src/main.tsx b/apps/app/src/main.tsx index 7cfe2da..e183a76 100644 --- a/apps/app/src/main.tsx +++ b/apps/app/src/main.tsx @@ -4,6 +4,7 @@ import { TooltipProvider, } from '@boring.tools/ui' import { ClerkProvider } from '@clerk/clerk-react' +import * as Sentry from '@sentry/react' import { RouterProvider, createRouter } from '@tanstack/react-router' import { StrictMode } from 'react' import ReactDOM from 'react-dom/client' @@ -12,6 +13,21 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query' // Import the generated route tree import { routeTree } from './routeTree.gen' +Sentry.init({ + dsn: 'https://eee8b9e634a9ae0812518003d0512897@o4508167321354240.ingest.de.sentry.io/4508167916290128', + integrations: [ + Sentry.browserTracingIntegration(), + Sentry.replayIntegration(), + ], + // Tracing + tracesSampleRate: 1.0, // Capture 100% of the transactions + // Set 'tracePropagationTargets' to control for which URLs distributed tracing should be enabled + tracePropagationTargets: ['localhost', /^https:\/\/yourserver\.io\/api/], + // Session Replay + replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production. + replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur. +}) + // Create a new router instance const router = createRouter({ routeTree }) diff --git a/apps/app/vite.config.ts b/apps/app/vite.config.ts index 190798d..aa59ec1 100644 --- a/apps/app/vite.config.ts +++ b/apps/app/vite.config.ts @@ -1,3 +1,4 @@ +import { sentryVitePlugin } from '@sentry/vite-plugin' import { TanStackRouterVite } from '@tanstack/router-plugin/vite' import react from '@vitejs/plugin-react' import { defineConfig } from 'vite' @@ -7,6 +8,18 @@ export default defineConfig({ build: { outDir: '../../build/app', emptyOutDir: true, + sourcemap: true, }, - plugins: [TanStackRouterVite(), react()], + plugins: [ + TanStackRouterVite(), + react(), + sentryVitePlugin({ + org: 'boringtools', + project: 'app', + authToken: process.env.SENTRY_AUTH_TOKEN, + sourcemaps: { + filesToDeleteAfterUpload: '**/*.map.*', + }, + }), + ], }) diff --git a/bun.lockb b/bun.lockb index 978d1b4b31e9cc6f10e4159349bc9fb18e59fcbf..7e07b188bc01b1d754afcd3bf92c9c2fc0392195 100755 GIT binary patch delta 35670 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 A>;M1&