Technology · AI & analytics

Ship at the edge, measure at the user.

Vercel is where we host Next.js when speed, preview environments and a small operations surface matter more than owning the cluster. Edge functions, ISR and Core Web Vitals budgets, done properly.

VercelWhat we build with it
01Next.js front ends with ISR
02Edge middleware
03Preview environments per pull request
04Commerce and campaign surfaces
05AI-backed streaming interfaces
06Front-door for a private back-end
Usually runs with
  1. Vercel
  2. Next.js
  3. TypeScript
  4. Payload CMS
  5. PostgreSQL
  6. Redis
Why we use it

Built by the team behind Next.js.

Vercel is the platform built by the team behind Next.js, and it shows: server components, incremental static regeneration, image optimisation, edge middleware and preview deployments all work without configuration. For a product team, that means every pull request gets its own URL, every route can be cached exactly as long as the content allows, and the first byte arrives from a location near the user rather than from one region.

We use it for the surfaces where those properties are the product — marketing and commerce sites, customer portals, content-heavy applications built on Next.js and Payload. The performance budgets we set in our web application work are easier to hold when the platform is doing the caching and the CDN well by default.

When we don’t: the edge is a thin layer, not a place to run your business logic. Heavy back-ends, long-running jobs, stateful services and anything with strict data-residency rules run on Kubernetes in AWS, Azure or Google Cloud. Vercel sits in front of them; it does not replace them.

What we build with it

Six things we ship on Vercel.

01

Next.js front ends with ISR

Static where possible, regenerated on demand when content changes, server-rendered where it must be — per route, decided on purpose, documented in the repo.

02

Edge middleware

Geo-routing, locale detection, A/B allocation, bot filtering and auth checks that run before the request reaches an origin.

03

Preview environments per pull request

Every change gets a URL that product, design and QA can open — with a database branch behind it where the stack supports one, so previews are not sharing production data.

04

Commerce and campaign surfaces

High-traffic launch pages, retail campaign microsites and loyalty programme portals that must hold their Core Web Vitals under a spike.

05

AI-backed streaming interfaces

Assistant and search experiences that stream model responses through edge or serverless functions, with the models from our LLM practice behind a rate-limited API.

06

Front-door for a private back-end

Vercel serving the UI, with server actions and route handlers calling a private API in your cloud over a secure connection — a pattern suited to enterprise portals.

Fit

When to choose it.

Right fit

Choose Vercel when the application is Next.js and the value is in the front end; when the team is small and does not want to operate a CDN, a build farm and a preview system themselves; when global latency matters and a single-region origin is the bottleneck; and when the per-request pricing is cheaper than the platform engineers it replaces. It suits marketing sites, portals, storefronts, dashboards and content products.

Look elsewhere

Look elsewhere when data-residency or regulatory rules require every byte to stay inside a named region or your own network — a common constraint in banking and public sector, where we host the whole stack on your cloud. Look elsewhere too for heavy compute, long-running or stateful workloads, and for applications with very high sustained traffic where a self-managed CDN and Kubernetes become the cheaper bill. We model the cost both ways before recommending.

In practice

Edge middleware for locale and a feature flag.

middleware.tstypescript
import { geolocation, ipAddress } from '@vercel/functions'
export const config = { matcher: ['/((?!_next|api|assets).*)'] }
export function middleware(req: NextRequest) {
  const country = geolocation(req).country ?? 'TR'
  const locale = req.cookies.get('locale')?.value ?? (country === 'TR' ? 'tr' : 'en')
  // Rewrite, don’t redirect — the URL the user sees stays clean
  const url = req.nextUrl.clone()
  url.pathname = `/${locale}${url.pathname}`
  const res = NextResponse.rewrite(url)
+ res.headers.set('x-variant', bucket(ipAddress(req) ?? '', 'checkout-v2', 0.1))
  res.headers.set('Cache-Control', 'public, s-maxage=60, stale-while-revalidate=300')
  return res
}
Reference architecture

Vercel in front of a private back-end.

Edge
Vercel CDNEdge middlewareEdge & serverless functionsImage optimisation
Application
Next.js App RouterServer components & actionsISR / on-demand revalidation
Back-end (your cloud)
Private APIs on KubernetesPostgreSQLRedisPayload CMS
Operations
GitHub ActionsVercel Analytics & Speed InsightsSentryOpenTelemetry
Our standards

What the Vercel deployments we hand over have.

  • Core Web Vitals budgets per route — LCP, CLS and INP — checked with Lighthouse CI on every preview and by real-user monitoring after launch. A regression fails the build.
  • A written caching strategy. Each route states whether it is static, ISR with a revalidation window, or dynamic, and why. Nothing is cached by accident.
  • Edge functions kept thin. No database calls, no secrets beyond what the check needs, a stated latency budget and a test that proves it.
  • Environment discipline: production, preview and development variables separated, secrets kept out of the repo, and preview deployments protected from public crawling.
  • Security headers and CSP set in next.config, verified in CI, with a report-only period before enforcement.
  • Playwright end-to-end tests run against the preview URL of every pull request, not against localhost.
  • Cost visibility: function invocations, bandwidth and image transforms tracked regularly, at a rhythm agreed with you, with alerts before an unexpected bill.
  • An exit path documented. The Next.js application also builds as a standard container, so moving to your own cloud does not have to mean a rewrite.
Typical pairings

What usually ships alongside the code.

  • Next.js application with a route-by-route rendering and caching map
  • Vercel project configuration, domains, environments and access controls as code where possible
  • Edge middleware with tests and a stated latency budget
  • Lighthouse CI budgets and a real-user monitoring dashboard
  • Preview workflow: branch → preview URL → Playwright suite → promotion
  • Runbook covering rollback, cache purge, incident response and regular cost reviews, at a rhythm agreed with you
Usually runs with
VercelNext.jsTypeScriptPayload CMSPostgreSQLRedisSentryPlaywrightLighthouse CIGitHub Actions
FAQ

Frequently asked questions

Often for the public-facing site, rarely for the authenticated core. We keep personal and transactional data on your own cloud, use Vercel for the presentation layer, and document exactly what passes through the edge. Where regulation requires everything in-region, we self-host Next.js on Kubernetes instead — without rewriting the code.
Edge runs the small, fast decisions: routing, locale, headers, flags, auth checks against a token. Serverless functions handle rendering and API routes that need the full Node.js runtime. Heavy or long-running work goes to a queue and a worker on your cloud.
By deciding caching on purpose. Cost surprises often come from dynamic rendering that should have been ISR, or image transforms without limits. We set the strategy per route, cap image sizes, and review the usage dashboard regularly during the engagement, at a rhythm agreed with you.
Yes. We build Next.js applications so they also run as a container, and we keep platform-specific features — edge config, analytics, image optimisation — behind small adapters. The aim is that leaving is a hosting change, not a rewrite. See our Cloud Migration practice.
Yes, when it is part of the launch scope agreed with you. Domains and certificates are managed through Vercel or your existing DNS provider, cutover is rehearsed on a staging domain first, and the runbook records who owns what afterwards.
Related

Neighbouring stacks and the services that use them.

The front end fast, the back end where it belongs.

Tell us what you are shipping and who has to see it first. An engineer reads it and replies in writing with how we would approach it.

✓ No pitch deck✓ Reply from an AI-native engineer✓ Written follow-up