Luxury brands do not compete on volume of information — they compete on restraint, rhythm, and perceived quality. A website must feel expensive before a visitor reads a single line of copy.
Next.js 15, released in October 2024, brings React 19 RC support, stable Turbopack for development, and a redesigned async Request API that eliminates the waterfall patterns that kill premium first impressions.
Core Web Vitals: the non-negotiable baseline
Google's Core Web Vitals define three user experience signals used in search ranking. For Largest Contentful Paint (LCP) the "Good" threshold is ≤ 2.5 s; for Cumulative Layout Shift (CLS) it is ≤ 0.1; and for Interaction to Next Paint (INP) it is ≤ 200 ms. Luxury sites should aim for the top of the "Good" range — LCP under 1.2 s and CLS near zero.
According to the 2024 Web Almanac by HTTP Archive, the median mobile LCP across all websites is 3.4 s. A site at 1.1 s outperforms roughly 90 % of competitors before a visitor notices the design.
Start with design tokens, not pages
Define a small palette in CSS custom properties: one deep background (e.g. #0B0B0D), one warm gold accent, two ink opacities for hierarchy. Lock typography to a display serif (Playfair Display, Cormorant Garamond) and a neutral sans. Every component references variables — never hard-coded hex values in JSX.
Next.js ships next/font which downloads Google Fonts at build time, inlines a size-adjusted fallback, and eliminates layout shift on font load. This alone closes a common CLS gap on editorial sites.
Image pipeline: AVIF first
The next/image component added AVIF support in Next.js 13 and the format is now default-enabled. AVIF achieves roughly 50 % smaller file sizes than JPEG at equivalent visual quality, according to Netflix's 2018 codec study that helped popularise the format.
Configure formats: ["image/avif", "image/webp"] in next.config and use priority on above-the-fold images to avoid lazy-load LCP penalties.
Content architecture for bilingual brands
Pair next-intl (v3, released 2024) with locale-prefixed routes (/en, /th). Static-generate both locales so Thai and English pages load equally fast in Bangkok and Singapore. Keep marketing copy in JSON message files; keep long-form articles in typed data modules.
The next-intl library passes messages to the client tree via NextIntlClientProvider, enabling shared translations between server and client components with zero duplication.
Performance is part of the brand identity
Run Lighthouse in CI — GitHub Actions with the official Lighthouse CI action works well. Treat a regression from 98 to 91 as a release blocker the same way you would treat a broken checkout flow.
For animation, limit to CSS transitions and Web Animations API on the main thread; move heavy GSAP timelines to CSS transforms only (translateX, scale, opacity) to avoid compositor layer promotion and layout thrashing.
References & Credits
- 1Next.js 15 Release Notes — Official Next.js 15 announcement with React 19 RC, Turbopack stable, and async Request API details
- 2Google Core Web Vitals — web.dev — Defines LCP ≤ 2.5 s, CLS ≤ 0.1, and INP ≤ 200 ms thresholds
- 3Web Almanac 2024 by HTTP Archive — Reports median mobile LCP of 3.4 s across all websites
- 4next/font Documentation — Build-time font download and CLS elimination technique
- 5next/image AVIF Support — Default AVIF + WebP format configuration
- 6next-intl Documentation — Locale routing and server/client translation architecture
Share or explore more insights
Talk to our team