import withBundleAnalyzer from '@next/bundle-analyzer'; const IS_PRODUCTION = process.env.NODE_ENV === 'production'; const SUPABASE_URL = process.env.NEXT_PUBLIC_SUPABASE_URL; /** @type {import('next').NextConfig} */ const config = { reactStrictMode: true, /** Enables hot reloading for local packages without a build step */ transpilePackages: [ '@kit/ui', '@kit/auth', '@kit/accounts', '@kit/team-accounts', '@kit/shared', '@kit/supabase', '@kit/i18n', '@kit/mailers', '@kit/billing', '@kit/billing-gateway', '@kit/stripe', ], pageExtensions: ['ts', 'tsx'], images: { remotePatterns: getRemotePatterns(), }, experimental: { mdxRs: true, optimizePackageImports: [] }, modularizeImports: { "lucide-react": { transform: "lucide-react/dist/esm/icons/{{ kebabCase member }}", } }, /** We already do linting and typechecking as separate tasks in CI */ eslint: { ignoreDuringBuilds: true }, typescript: { ignoreBuildErrors: true }, }; export default withBundleAnalyzer({ enabled: process.env.ANALYZE === 'true', })(config); function getRemotePatterns() { // add here the remote patterns for your images const remotePatterns = []; if (SUPABASE_URL) { const hostname = new URL(SUPABASE_URL).hostname; remotePatterns.push({ protocol: 'https', hostname, }); } return IS_PRODUCTION ? remotePatterns : [ { protocol: 'http', hostname: '127.0.0.1', }, ]; }