Web Architecture

Architecture for Speed: Building Sites That Feel Instant

Performance isn't a feature you add — it's a consequence of decisions you make at the architecture level. Here's how to get them right.

October 28, 20247 min readFeatured
performanceNext.jsweb architecture

Every millisecond of load time costs conversions. Google's research pegs mobile conversion rates dropping 20% for every second of delay past 3 seconds. Yet most web projects treat performance as something you optimize after the fact — a post-launch sprint, a GTmetrix embarrassment.

Performance isn't something you retrofit. It's a consequence of architectural decisions made at the start.

The Three Layers

Web performance bottlenecks cluster into three places:

1. Network — What travels over the wire

The most impactful lever most developers ignore: reducing what you send.

2. Render — What the browser does with it

The shift from client-side rendering to server components (React 18+, Next.js 13+) is the biggest architectural win in years.

Static pages don't need JavaScript to render. Most content sites should be 90%+ static, with islands of interactivity where needed.

The React Server Components model makes this precise: opt in to client-side JS with 'use client', rather than opting out with a build flag.

3. Perceived — What the user experiences

Sometimes the right move isn't making things faster — it's making them feel faster.

Techniques:

The first two layers affect real performance. This layer affects perceived performance — which is what determines whether users notice.

The Next.js Stack Decision

For new projects in 2024, the App Router is the clear choice. Here's my current default architecture:

app/
├── layout.tsx          ← global shell, fonts, metadata
├── page.tsx            ← homepage (static by default)
├── [dynamic]/
│   └── page.tsx        ← generateStaticParams for pre-rendering
└── api/
    └── route.ts        ← edge functions where needed

Key decisions:

The Audit Workflow

Before launching any site, I run through:

  1. Lighthouse in incognito — Clean baseline, no extensions
  2. WebPageTest with 3G throttling — How does it feel on a real mobile connection?
  3. Core Web Vitals in Search Console — Field data, not lab data
  4. Bundle AnalyzerANALYZE=true next build — what's actually in the JS?

Most performance problems are visible before launch if you look. The ones you find in production are the ones you chose not to look for earlier.

Build fast. It respects your users' time.

Apply

If this maps to a problem you're working on.

I work with $1M–$20M ARR founders whose digital investment isn't producing the return it should. Applications reviewed personally within 48 hours.

2 Diagnostic slots / month · 2–3 full engagements / quarter · 48h review