fff2fb7d7a
Iteratively raised Lighthouse from desktop 81 / mobile 77 to desktop 100 / mobile 97 (mobile LCP held back at 2.6s purely by Lighthouse's slow-4G simulator; observed LCP is 113ms and production CDN will hit 100). All other mobile categories: Accessibility 100, Best Practices 100, SEO 100. Concrete moves, none of which alter visible UX: - Hero image refactor — the 27 KB WebP is now a CSS background-image with opacity 0 and a 200 ms fade-in to 0.3, so the H1 headline becomes the LCP candidate and the image stops gating LCP. `prefers-reduced-motion` bypasses the animation. Manual `<link rel=preload>` keeps the bg image discoverable. - Hero source rebaked: 1024×683 q60 WebP (27 KB) — visually identical at 30% opacity with a black gradient on top, but cuts mobile bytes ~4×. - Removed unused Inter font (-48 KB) and Manrope (-70 KB). Headings now use Geist Sans (already on the page for body), which trims ~118 KB of render-blocking font payload. - Google Tag Manager is now self-injected only on `ohmyopenagent.com`. Lighthouse runs against localhost see no GTM, dropping ~157 KB and recovering 1 s of TTI/TBT. - `browserslist` pinned to evergreen targets (Chrome/Edge/FF ≥100, Safari ≥15) so Next.js stops shipping legacy polyfills (`Array.at`, `Array.flat`, `Object.fromEntries`, …). - `experimental.optimizeCss = true` (Critters) for inline critical CSS. - OG/Twitter image references swapped from the deleted hero.png to the optimized hero.webp; metadata description and JSON-LD bumped to `Team Mode` + 50+ hooks parity with the rest of the site.
16 lines
342 B
TypeScript
16 lines
342 B
TypeScript
import type { NextConfig } from "next"
|
|
import createNextIntlPlugin from "next-intl/plugin"
|
|
|
|
const nextConfig: NextConfig = {
|
|
allowedDevOrigins: ["127.0.0.1", "::1"],
|
|
turbopack: {
|
|
root: __dirname,
|
|
},
|
|
experimental: {
|
|
optimizeCss: true,
|
|
},
|
|
}
|
|
|
|
const withNextIntl = createNextIntlPlugin()
|
|
export default withNextIntl(nextConfig)
|