import type { NextConfig } from 'next'; import { withSentryConfig } from '@sentry/nextjs'; // Define the base Next.js configuration const baseConfig: NextConfig = { output: process.env.BUILD_STANDALONE === 'true' ? 'standalone' : undefined, images: { remotePatterns: [ { protocol: 'https', hostname: 'api.slingacademy.com', port: '' }, { protocol: 'https', hostname: 'placehold.co', port: '' }, { protocol: 'https', hostname: 'img.clerk.com', port: '' }, { protocol: 'https', hostname: 'clerk.com', port: '' } ] }, transpilePackages: ['geist'], compiler: { removeConsole: process.env.NODE_ENV === 'production' } }; let configWithPlugins = baseConfig; // Conditionally enable Sentry configuration if (!process.env.NEXT_PUBLIC_SENTRY_DISABLED) { configWithPlugins = withSentryConfig(configWithPlugins, { org: process.env.NEXT_PUBLIC_SENTRY_ORG, project: process.env.NEXT_PUBLIC_SENTRY_PROJECT, // Only print logs for uploading source maps in CI silent: !process.env.CI, // Upload a larger set of source maps for prettier stack traces (increases build time) widenClientFileUpload: true, // Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. tunnelRoute: '/monitoring', // Disable Sentry telemetry telemetry: false, // Sentry v10: moved under webpack namespace webpack: { reactComponentAnnotation: { enabled: true }, treeshake: { removeDebugLogging: true } }, // Disable source map upload when org/project are not configured sourcemaps: { disable: !process.env.NEXT_PUBLIC_SENTRY_ORG || !process.env.NEXT_PUBLIC_SENTRY_PROJECT } }); } const nextConfig = configWithPlugins; export default nextConfig;