import { withSentryConfig } from '@sentry/nextjs'; import type { NextConfig } from 'next'; import { withContentCollections } from '@content-collections/next'; import createMDX from '@next/mdx'; import { codecovNextJSWebpackPlugin } from '@codecov/nextjs-webpack-plugin'; const nextConfig: NextConfig = { experimental: { reactCompiler: true, mdxRs: true, webpackMemoryOptimizations: true, webpackBuildWorker: true, }, images: { remotePatterns: [ { protocol: 'https', hostname: 'img.clerk.com', }, { protocol: 'https', hostname: 'images.unsplash.com', }, ], }, async headers() { return [ { source: '/:path*', headers: [ { key: 'Document-Policy', value: 'js-profiling', }, ], }, ]; }, pageExtensions: ['ts', 'tsx', 'js', 'jsx', 'md', 'mdx'], compress: true, poweredByHeader: false, webpack: (config, options) => { config.plugins.push( codecovNextJSWebpackPlugin({ enableBundleAnalysis: true, bundleName: 'nextjs-webpack-bundle', uploadToken: process.env.CODECOV_TOKEN, webpack: options.webpack, }) ); return config; }, cacheHandler: process.env.NODE_ENV === 'production' ? require.resolve('./cache-handler.mjs') : undefined, }; const withMDX = createMDX({}); export default withContentCollections( withSentryConfig(withMDX(nextConfig), { // For all available options, see: // https://github.com/getsentry/sentry-webpack-plugin#options org: 'ahmadk953', project: 'tasko', // Only print logs for uploading source maps in CI silent: !process.env.CI, // For all available options, see: // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/ // Upload a larger set of source maps for prettier stack traces (increases build time) widenClientFileUpload: true, // Automatically annotate React components to show their full name in breadcrumbs and session replay reactComponentAnnotation: { enabled: true, }, // Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. // This can increase your server load as well as your hosting bill. // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client- // side errors will fail. tunnelRoute: '/monitoring', // Hides source maps from generated client bundles hideSourceMaps: true, // Automatically tree-shake Sentry logger statements to reduce bundle size disableLogger: true, // Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.) // See the following for more information: // https://docs.sentry.io/product/crons/ // https://vercel.com/docs/cron-jobs automaticVercelMonitors: true, }) );