Headless CMS
A content system such as Sanity or Contentful, so your marketing team can edit pages and posts without a developer, while the front end stays custom.
Capability 02 · Front-ends
We build front-ends from tested, reusable components, render as much as possible on the server, and measure the result with the same public tools Google uses.
§01Components
Buttons, cards, forms and navigation are built once in React and Tailwind CSS, typed with TypeScript, and reused everywhere.
type ProductCardProps = {
name: string;
price: number;
href: string;
};
export function ProductCard({ name, price, href }: ProductCardProps) {
return (
<Link href={href} className="card">
<h3>{name}</h3>
<p>{formatPrice(price)}</p>
</Link>
);
}§02Rendering
Next.js lets each page, and each part of a page, choose how it is rendered. Choosing well is most of the work of a fast site: the less code a phone has to download and run, the sooner the page is usable.
Static
HTML built ahead of time and served from a cache
Marketing pages, guides and documentation
Cached, then refreshed
Static HTML that is rebuilt on a schedule or when content changes
Product catalogues, blog posts and pricing
Server-rendered
HTML built on the server for each request
Accounts, carts and anything personal or live
Client components
Interactive parts that run in the browser
Filters, forms and configurators, only where interaction needs it
§03Measured, not claimed
When we rebuilt the Great Lakes Additive store in Next.js, its PageSpeed Insights score went from 41 to 98 on mobile and from 51 to 100 on desktop. The main content now appears in 2.4 seconds on a phone, down from 20.7.
Google's thresholds for a good page
§04Content & data
The front-end does not have to live inside the system that stores your content. Keeping them separate lets the interface stay fast and custom while editors keep a tool they know.
A content system such as Sanity or Contentful, so your marketing team can edit pages and posts without a developer, while the front end stays custom.
A custom Node.js back end for orders, accounts and business rules, sharing TypeScript types with the front end.
Custom architecture & APIsPayments, search, maps and shipping behind small typed wrappers, so one provider can be swapped without touching every page.
§05Further reading
Next season starts here
Send us your website address. We will run Google's tests with you, show where the time goes, and tell you what is worth fixing.