Skip to content
®
All storiesEngineering10 min read

Our Next.js performance playbook for 2026

Noah Castell

Noah Castell

Lead Developer · 04 Aug 2026

Cache components, partial prefetching, image pipelines and the habits that keep our launches under one second.

Our Next.js performance playbook for 2026

Rich, animated websites have a reputation for being slow. Ours have a median Largest Contentful Paint under a second, and it's not because of one clever trick — it's a handful of boring habits applied every time.

Start static, stay static

With Cache Components, the default is a prerendered static shell that streams dynamic parts in. We design pages so almost everything lives in that shell: content from the CMS is cached, and only genuinely personal data is fetched at request time.

  • Prerender every marketing route at build time.
  • Use generateStaticParams for every content collection.
  • Keep client components at the leaves of the tree.
  • Lazy-load anything below the fold that ships JavaScript.

Images do the heavy lifting

Images are usually the LCP element, so they get the most care: AVIF first, correct sizes attributes, the hero preloaded and nothing else. A single wrong sizes value can ship a 2,400px image to a phone.

Performance budgets aren't a constraint on creativity. They're the brief.

Animate the cheap properties

Transforms and opacity only, wherever possible. Scroll-linked animation runs off a single requestAnimationFrame loop shared by smooth scrolling and ScrollTrigger, so we never fight the browser for frames.

Keep reading

More from the studio