import { withSentryConfig } from "@sentry/nextjs"; import { format } from "@formkit/tempo"; import nextBundleAnalyzer from "@next/bundle-analyzer"; import type { NextConfig } from "next"; const nextConfig: NextConfig = { experimental: { webpackMemoryOptimizations: true, optimizePackageImports: ["@ssr/common", "@radix-ui/react-icons", "chart.js", "react-chartjs-2"], }, images: { unoptimized: true, remotePatterns: [ { protocol: "https", hostname: "cdn.scoresaber.com", port: "", pathname: "/**", }, ], }, env: { HOSTNAME: "0.0.0.0", NEXT_PUBLIC_BUILD_ID: process.env.GIT_REV || "dev", NEXT_PUBLIC_BUILD_TIME: new Date().toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric", timeZoneName: "short", }), NEXT_PUBLIC_BUILD_TIME_SHORT: format(new Date(), { date: "short", time: "short", }), }, }; const withBundleAnalyzer = nextBundleAnalyzer({ enabled: process.env.ANALYZE === "true", }); export default withSentryConfig(withBundleAnalyzer(nextConfig), { // For all available options, see: // https://github.com/getsentry/sentry-webpack-plugin#options org: "fascinatedcc", project: "scoresaber-reloaded", // 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, });