diff --git a/web/next.config.js b/web/next.config.js index 950ab2167..3b4c7bbd3 100644 --- a/web/next.config.js +++ b/web/next.config.js @@ -4,6 +4,9 @@ const env_version = process.env.DANSWER_VERSION; // version from env variable // Use env version if set & valid, otherwise default to package version const version = env_version || package_version; +// Always require withSentryConfig +const { withSentryConfig } = require("@sentry/nextjs"); + /** @type {import('next').NextConfig} */ const nextConfig = { output: "standalone", @@ -13,17 +16,29 @@ const nextConfig = { }, }; -const { withSentryConfig } = require("@sentry/nextjs"); - // Sentry configuration for error monitoring: // - Without SENTRY_AUTH_TOKEN and NEXT_PUBLIC_SENTRY_DSN: Sentry is completely disabled // - With both configured: Only unhandled errors are captured (no performance/session tracking) -module.exports = withSentryConfig(nextConfig, { + +// Determine if Sentry should be enabled +const sentryEnabled = Boolean( + process.env.SENTRY_AUTH_TOKEN && process.env.NEXT_PUBLIC_SENTRY_DSN +); + +// Sentry webpack plugin options +const sentryWebpackPluginOptions = { org: process.env.SENTRY_ORG || "danswer", project: process.env.SENTRY_PROJECT || "data-plane-web", authToken: process.env.SENTRY_AUTH_TOKEN, - silent: false, + silent: !sentryEnabled, // Silence output when Sentry is disabled + dryRun: !sentryEnabled, // Don't upload source maps when Sentry is disabled sourceMaps: { - skipUpload: !process.env.SENTRY_AUTH_TOKEN, + include: ["./.next"], + validate: false, + urlPrefix: "~/_next", + skip: !sentryEnabled, }, -}); +}; + +// Export the module with conditional Sentry configuration +module.exports = withSentryConfig(nextConfig, sentryWebpackPluginOptions);