diff --git a/web/next.config.js b/web/next.config.js index 18ac3e1975..48acda42ed 100644 --- a/web/next.config.js +++ b/web/next.config.js @@ -1,3 +1,5 @@ +const { withSentryConfig } = require("@sentry/nextjs") + const withMDX = require('@next/mdx')({ extension: /\.mdx?$/, options: { @@ -29,6 +31,7 @@ const nextConfig = { // https://nextjs.org/docs/api-reference/next.config.js/ignoring-typescript-errors ignoreBuildErrors: true, }, + sentry: {}, async redirects() { return [ { @@ -40,4 +43,17 @@ const nextConfig = { }, } -module.exports = withMDX(nextConfig) +// https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup +const sentryWebpackPluginOptions = { + org: "perfectworld", + project: "javascript-nextjs", + silent: true, // Suppresses all logs + sourcemaps: { + assets: "./**", + ignore: ["./node_modules/**"], + }, + + // https://github.com/getsentry/sentry-webpack-plugin#options. +} + +module.exports = withMDX(withSentryConfig(nextConfig, sentryWebpackPluginOptions)) diff --git a/web/package.json b/web/package.json index e3dac25ecb..76158c7730 100644 --- a/web/package.json +++ b/web/package.json @@ -17,6 +17,7 @@ "@mdx-js/loader": "^2.3.0", "@mdx-js/react": "^2.3.0", "@next/mdx": "^13.2.4", + "@sentry/nextjs": "^7.53.1", "@tailwindcss/line-clamp": "^0.4.2", "@types/crypto-js": "^4.1.1", "@types/lodash-es": "^4.17.7", diff --git a/web/sentry.client.config.js b/web/sentry.client.config.js new file mode 100644 index 0000000000..2827b49a7b --- /dev/null +++ b/web/sentry.client.config.js @@ -0,0 +1,23 @@ +import * as Sentry from "@sentry/nextjs"; + +Sentry.init({ + dsn: "https://6bf48a450f054d749398c02a61bae343@o4505264807215104.ingest.sentry.io/4505264809115648", + // Replay may only be enabled for the client-side + integrations: [new Sentry.Replay()], + + // Set tracesSampleRate to 1.0 to capture 100% + // of transactions for performance monitoring. + // We recommend adjusting this value in production + tracesSampleRate: 1.0, + + // Capture Replay for 10% of all sessions, + // plus for 100% of sessions with an error + replaysSessionSampleRate: 0.1, + replaysOnErrorSampleRate: 1.0, + + // ... + + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}); \ No newline at end of file diff --git a/web/sentry.edge.config.js b/web/sentry.edge.config.js new file mode 100644 index 0000000000..d923d3fcd4 --- /dev/null +++ b/web/sentry.edge.config.js @@ -0,0 +1,16 @@ +import * as Sentry from "@sentry/nextjs"; + +Sentry.init({ + dsn: "https://6bf48a450f054d749398c02a61bae343@o4505264807215104.ingest.sentry.io/4505264809115648", + + // Set tracesSampleRate to 1.0 to capture 100% + // of transactions for performance monitoring. + // We recommend adjusting this value in production + tracesSampleRate: 1.0, + + // ... + + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps +}); \ No newline at end of file diff --git a/web/sentry.server.config.js b/web/sentry.server.config.js new file mode 100644 index 0000000000..78bee0116f --- /dev/null +++ b/web/sentry.server.config.js @@ -0,0 +1,10 @@ +import * as Sentry from "@sentry/nextjs"; + +Sentry.init({ + dsn: "https://6bf48a450f054d749398c02a61bae343@o4505264807215104.ingest.sentry.io/4505264809115648", + + // Set tracesSampleRate to 1.0 to capture 100% + // of transactions for performance monitoring. + // We recommend adjusting this value in production + tracesSampleRate: 1.0, +}); \ No newline at end of file