Architecture Maps

Vercel Architecture

Interactive architecture map of Vercel's deployment platform, edge network, serverless compute, and Next.js-optimized infrastructure — compiled from publicly available sources.

Public Sources Only Edge Network: 18+ Regions Framework: Next.js Updated: Mar 2026
01

Platform Overview

Vercel is a frontend cloud platform that combines a global edge network, serverless compute, and deep framework integration (primarily Next.js) to deliver instant deployments with zero-config CI/CD. The platform is optimized for the "build once, serve everywhere" model with intelligent caching at every layer.

18+
Edge Regions
<1s
Cold Start
35+
Frameworks
~3.5M
Developers
100+
PoPs
Platform Architecture Overview
graph TD
    subgraph Git["Git Integration"]
        GH["GitHub / GitLab / Bitbucket"]
    end

    subgraph Build["Build Pipeline"]
        CI["Vercel Build
(Turbo Remote Cache)"] FW["Framework Detection
(Build Adapters)"] end subgraph Compute["Compute Layer"] SF["Serverless Functions
(Node.js / Go / Python / Ruby)"] EF["Edge Functions
(V8 Isolates)"] MW["Middleware
(Edge Runtime)"] end subgraph Cache["Caching Layer"] ISR["ISR / DPR
(Stale-While-Revalidate)"] EC["Edge Cache
(CDN PoPs)"] end subgraph Storage["Storage & Data"] KV["Vercel KV
(Redis)"] PG["Vercel Postgres
(Neon)"] BLOB["Vercel Blob
(Object Store)"] ECONF["Edge Config
(Ultra-Low Latency)"] end subgraph Analytics["Observability"] AN["Web Analytics"] SP["Speed Insights"] LOG["Logs & Monitoring"] end GH --> CI CI --> FW FW --> SF FW --> EF FW --> EC EF --> MW MW --> EC MW --> SF EC --> ISR SF --> KV SF --> PG SF --> BLOB EF --> ECONF EF --> KV SF --> AN EC --> SP style GH fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style CI fill:#0e0e0e,stroke:#f5a623,color:#d4d4d4 style FW fill:#0e0e0e,stroke:#f5a623,color:#d4d4d4 style SF fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style EF fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style MW fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style ISR fill:#0e0e0e,stroke:#00b4d8,color:#d4d4d4 style EC fill:#0e0e0e,stroke:#00b4d8,color:#d4d4d4 style KV fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style PG fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style BLOB fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style ECONF fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style AN fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style SP fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style LOG fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4
Key Architectural Pattern

Vercel's architecture is built around the "Framework-Defined Infrastructure" concept. Next.js features like API routes, middleware, and ISR pages are automatically mapped to the right infrastructure primitives (serverless functions, edge functions, CDN cache rules) during the build step — no manual infrastructure configuration required.

02

Build Pipeline & CI/CD

Every git push triggers an immutable deployment. Vercel detects the framework, runs the build, splits output into static assets and compute functions, then atomically promotes the deployment to production. Preview deployments get unique URLs for every branch and PR.

Deployment Lifecycle
graph LR
    subgraph Trigger["Trigger"]
        PUSH["Git Push"]
        CLI["vercel deploy"]
        API["REST API"]
    end

    subgraph Detect["Detection"]
        FD["Framework
Detection"] end subgraph BuildStep["Build"] INSTALL["npm install
(Turbo Cache)"] COMPILE["Build
(next build)"] OPT["Output
Optimization"] end subgraph Output["Build Output"] STATIC["Static Assets
(.html, .js, .css)"] FUNCS["Serverless
Functions"] EFUNCS["Edge
Functions"] ROUTES["Route
Manifest"] end subgraph Deploy["Deployment"] PREVIEW["Preview URL
(branch-hash.vercel.app)"] PROD["Production
(custom domain)"] end PUSH --> FD CLI --> FD API --> FD FD --> INSTALL INSTALL --> COMPILE COMPILE --> OPT OPT --> STATIC OPT --> FUNCS OPT --> EFUNCS OPT --> ROUTES STATIC --> PREVIEW FUNCS --> PREVIEW EFUNCS --> PREVIEW ROUTES --> PREVIEW PREVIEW -.->|promote| PROD style PUSH fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style CLI fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style API fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style FD fill:#0e0e0e,stroke:#f5a623,color:#d4d4d4 style INSTALL fill:#0e0e0e,stroke:#f5a623,color:#d4d4d4 style COMPILE fill:#0e0e0e,stroke:#f5a623,color:#d4d4d4 style OPT fill:#0e0e0e,stroke:#f5a623,color:#d4d4d4 style STATIC fill:#0e0e0e,stroke:#00b4d8,color:#d4d4d4 style FUNCS fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style EFUNCS fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style ROUTES fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style PREVIEW fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style PROD fill:#0e0e0e,stroke:#00c853,color:#d4d4d4

Build System Components

Framework Detection

Automatic detection of 35+ frameworks (Next.js, Nuxt, SvelteKit, Remix, Astro, etc.) by analyzing package.json and project structure. Each framework has a build adapter.

Build

Turbo Remote Cache

Shared build cache across team members and CI. Hashes task inputs and stores outputs remotely. Can skip unchanged build steps, cutting build times by 40-80%.

Build

Build Output API

A file-system-based contract: `.vercel/output/` with `config.json`, `static/`, and `functions/`. Any framework can target this API for Vercel compatibility.

Build

Immutable Deployments

Every deployment is immutable and gets a unique URL. Production is an alias pointer that atomically switches between deployments. Instant rollback by repointing.

Build
Preview Deployments

Every git branch and pull request gets an automatic preview deployment with a unique URL (`[branch]-[hash]-[scope].vercel.app`). Comments are posted to the PR with the preview link, deployment status, and performance metrics. Preview URLs share the same infrastructure as production but are isolated at the routing layer.

03

Edge Network & CDN

Vercel's Edge Network is a global CDN with 100+ Points of Presence. It handles TLS termination, HTTP/3, automatic compression (Brotli/gzip), image optimization, and intelligent cache invalidation. Static assets are distributed globally; dynamic content is served from the nearest compute region.

Edge Network Request Routing
graph TD
    subgraph Client["Client"]
        USER["Browser / API Client"]
    end

    subgraph Edge["Edge PoP (Nearest)"]
        DNS["DNS Resolution
(Anycast)"] TLS["TLS 1.3
Termination"] MWE["Middleware
(Edge Runtime)"] CACHE["Edge Cache
(SWR Headers)"] end subgraph Origin["Compute Region"] SSR["SSR / API Routes
(Serverless)"] ISR2["ISR Revalidation
(Background)"] STATIC2["Static Assets
(Pre-built)"] end USER --> DNS DNS --> TLS TLS --> MWE MWE -->|cache hit| CACHE MWE -->|cache miss| SSR CACHE -->|stale| ISR2 ISR2 --> CACHE CACHE --> USER SSR --> CACHE STATIC2 --> CACHE style USER fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style DNS fill:#0e0e0e,stroke:#00b4d8,color:#d4d4d4 style TLS fill:#0e0e0e,stroke:#00b4d8,color:#d4d4d4 style MWE fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style CACHE fill:#0e0e0e,stroke:#00b4d8,color:#d4d4d4 style SSR fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style ISR2 fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style STATIC2 fill:#0e0e0e,stroke:#525252,color:#d4d4d4

Edge Capabilities

Image Optimization

Automatic format conversion (WebP/AVIF), resizing, and quality adjustment at the edge. Next.js `<Image>` component integrates natively. Cached per variant at each PoP.

Network

HTTP/3 & QUIC

Zero-RTT connection establishment, multiplexed streams without head-of-line blocking, and connection migration for mobile clients.

Network

Vercel Firewall

WAF with configurable rules, DDoS protection, IP allowlists/blocklists, rate limiting, and bot mitigation. Runs at the edge before compute.

Network

Smart Compression

Automatic Brotli and gzip compression with content-type awareness. Pre-compressed assets from build step are served directly without re-compression overhead.

Network
04

Serverless Functions

Serverless Functions run in isolated AWS Lambda-based containers, supporting Node.js, Go, Python, and Ruby. Each function is a separate deployment unit with its own memory, timeout, and region configuration. Next.js API routes and page server-side rendering automatically deploy as serverless functions.

Serverless Function Execution
graph TD
    subgraph Request["Incoming Request"]
        REQ["HTTP Request
(via Edge)"] end subgraph Router["Route Matching"] RM["Route Manifest
(vercel.json + framework)"] end subgraph Exec["Function Execution"] COLD["Cold Start
(init runtime)"] WARM["Warm Instance
(reuse)"] RUN["Execute Handler"] end subgraph Runtime["Supported Runtimes"] NODE["Node.js
(18.x / 20.x)"] GO["Go
(1.21+)"] PY["Python
(3.9+)"] RB["Ruby
(3.2+)"] end subgraph Limits["Resource Limits"] MEM["Memory: 128-3008 MB"] TIME["Timeout: 10-300s"] SIZE["Bundle: 50 MB (zip)"] end REQ --> RM RM --> COLD RM --> WARM COLD --> RUN WARM --> RUN RUN --> NODE RUN --> GO RUN --> PY RUN --> RB style REQ fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style RM fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style COLD fill:#0e0e0e,stroke:#f5a623,color:#d4d4d4 style WARM fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style RUN fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style NODE fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style GO fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style PY fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style RB fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style MEM fill:#0e0e0e,stroke:#525252,color:#737373 style TIME fill:#0e0e0e,stroke:#525252,color:#737373 style SIZE fill:#0e0e0e,stroke:#525252,color:#737373
Property Hobby Pro Enterprise
Execution Timeout 10 seconds 60 seconds (300 streaming) 900 seconds
Memory 1024 MB 3008 MB 3008 MB
Regions Washington, D.C. (iad1) Multi-region Custom regions
Concurrent Executions 10 1,000 Custom
05

Edge Functions

Edge Functions run on V8 isolates at the network edge, executing in the region closest to the user. They start in under 1ms (no cold start), support the Web Standard APIs (fetch, Request, Response, crypto), and are ideal for low-latency transformations, A/B testing, and geolocation-based routing.

Edge vs Serverless Execution Model
graph LR
    subgraph EdgeModel["Edge Functions"]
        EV8["V8 Isolate
(Web APIs)"] EMS["<1ms Start"] ERUN["Runs at Edge
(all PoPs)"] ELIM["Max 25s CPU
128 KB-4 MB"] end subgraph ServerlessModel["Serverless Functions"] SLM["Lambda Container
(Full Node.js)"] SMS["~250ms Cold Start"] SRUN["Runs in Region
(1-18 regions)"] SLIM["Max 300s
50 MB bundle"] end subgraph Tradeoffs["When to Use"] EDGE_USE["Auth checks
A/B tests
Redirects
Geolocation"] SL_USE["Database queries
Heavy computation
File processing
Third-party SDKs"] end EV8 --- EMS EMS --- ERUN ERUN --- ELIM SLM --- SMS SMS --- SRUN SRUN --- SLIM ELIM --> EDGE_USE SLIM --> SL_USE style EV8 fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style EMS fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style ERUN fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style ELIM fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style SLM fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style SMS fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style SRUN fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style SLIM fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style EDGE_USE fill:#0e0e0e,stroke:#7928ca,color:#a3a3a3 style SL_USE fill:#0e0e0e,stroke:#0070f3,color:#a3a3a3
Edge Runtime Constraints

Edge Functions use the Web Standard APIs, not Node.js APIs. This means no `fs`, `child_process`, or native modules. The `edge` runtime in Next.js pages/routes opts into this model. Libraries using Node.js-specific APIs won't work — but the tradeoff is near-zero latency and no cold starts.

V8 Isolates

Lightweight execution contexts within a shared V8 engine process. Memory-isolated but sharing the JIT compiler, enabling sub-millisecond startup without container overhead.

Edge

Web Standard APIs

fetch, Request, Response, Headers, URL, URLSearchParams, TextEncoder/Decoder, crypto.subtle, structuredClone, AbortController, ReadableStream.

Edge

Streaming Responses

Edge Functions can return streaming responses using ReadableStream, enabling partial page rendering and real-time data streaming without buffering.

Edge
06

Next.js Integration

Next.js is Vercel's primary framework and drives many platform features. The App Router, Server Components, Server Actions, and Partial Prerendering are co-developed with the platform. Vercel's build system understands Next.js output at a deep level, mapping each page type to the optimal infrastructure primitive.

Next.js Page Types to Infrastructure Mapping
graph TD
    subgraph Pages["Next.js Page Types"]
        SSG["Static Generation
(SSG)"] SSRP["Server-Side Render
(SSR)"] ISRP["Incremental Static
Regeneration (ISR)"] RSC["React Server
Components"] SA["Server Actions
(mutations)"] PPR["Partial
Prerendering"] end subgraph Infra["Vercel Infrastructure"] CDN2["CDN / Edge Cache
(static files)"] LAMBDA["Serverless Function
(dynamic render)"] CACHE2["ISR Cache
(stale-while-revalidate)"] STREAM["Streaming Response
(chunked)"] SHELL["Static Shell +
Dynamic Holes"] end SSG --> CDN2 SSRP --> LAMBDA ISRP --> CACHE2 RSC --> STREAM SA --> LAMBDA PPR --> SHELL CACHE2 --> LAMBDA SHELL --> CDN2 SHELL --> LAMBDA style SSG fill:#0e0e0e,stroke:#fafafa,color:#d4d4d4 style SSRP fill:#0e0e0e,stroke:#fafafa,color:#d4d4d4 style ISRP fill:#0e0e0e,stroke:#fafafa,color:#d4d4d4 style RSC fill:#0e0e0e,stroke:#fafafa,color:#d4d4d4 style SA fill:#0e0e0e,stroke:#fafafa,color:#d4d4d4 style PPR fill:#0e0e0e,stroke:#fafafa,color:#d4d4d4 style CDN2 fill:#0e0e0e,stroke:#00b4d8,color:#d4d4d4 style LAMBDA fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style CACHE2 fill:#0e0e0e,stroke:#00b4d8,color:#d4d4d4 style STREAM fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style SHELL fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4

Framework Features on Vercel

React Server Components

Components render on the server, sending only the HTML and a compact RSC payload to the client. Reduces client-side JavaScript and enables streaming with Suspense boundaries.

Framework

Server Actions

Functions marked with `'use server'` become HTTP endpoints automatically. Form submissions and mutations run server-side without manual API route creation.

Framework

Partial Prerendering (PPR)

A static shell is served instantly from CDN, with dynamic "holes" filled by streaming server-rendered content. Combines the speed of static with the freshness of dynamic.

Framework

App Router

File-system based routing with layouts, nested routes, loading states, error boundaries, and parallel routes. Each segment can independently choose static or dynamic rendering.

Framework
07

ISR & DPR Caching

Incremental Static Regeneration (ISR) serves cached pages instantly while revalidating in the background. Distributed Persistent Rendering (DPR) extends this with on-demand revalidation APIs. Together they enable static-speed delivery of frequently-changing content without full rebuilds.

ISR Request Lifecycle
sequenceDiagram
    participant User
    participant Edge as Edge Cache
    participant Lambda as Serverless Fn

    User->>Edge: GET /products/123
    alt Cache HIT (fresh)
        Edge-->>User: 200 Cached Page (instant)
    else Cache HIT (stale)
        Edge-->>User: 200 Stale Page (instant)
        Edge->>Lambda: Background Revalidation
        Lambda-->>Edge: Updated Page
        Note over Edge: Cache updated for next request
    else Cache MISS
        Edge->>Lambda: Render Page
        Lambda-->>Edge: Generated Page
        Edge-->>User: 200 Fresh Page
        Note over Edge: Cache populated
    end
                

Time-Based Revalidation

Set `revalidate: 60` to serve cached content for 60 seconds, then revalidate in the background on the next request. Users never wait for regeneration.

Cache

On-Demand Revalidation

`revalidatePath()` and `revalidateTag()` APIs let webhooks or CMS events trigger immediate cache invalidation for specific pages or data.

Cache

Data Cache

Next.js extends `fetch()` with caching options. `fetch(url, { next: { revalidate: 3600 } })` caches the response across requests, separate from page-level caching.

Cache
Cache Hierarchy

Vercel implements a multi-layer cache: (1) Browser cache via Cache-Control headers, (2) Edge PoP cache for static assets and ISR pages, (3) Regional cache shared across PoPs in the same region, (4) Data Cache for `fetch()` responses, and (5) Full Route Cache for pre-rendered pages. Each layer can be independently controlled.

08

Middleware

Middleware runs before every request at the edge, using the Edge Runtime (V8 isolates). It can rewrite URLs, redirect, set headers, read cookies, and implement authentication — all with zero cold starts. Defined in a single `middleware.ts` file at the project root.

Middleware in the Request Chain
graph LR
    subgraph Incoming["Incoming"]
        REQ2["HTTP Request"]
    end

    subgraph MW2["Middleware (Edge)"]
        READ["Read cookies,
headers, geo"] DECIDE["Route Logic
(matcher config)"] end subgraph Actions["Possible Actions"] REWRITE["Rewrite
(internal reroute)"] REDIR["Redirect
(301/302/307/308)"] HEADERS["Set Headers
(response modify)"] NEXT["NextResponse.next()
(pass through)"] end subgraph Dest["Destination"] PAGE["Static Page"] API2["API Route"] FN["Server Function"] end REQ2 --> READ READ --> DECIDE DECIDE --> REWRITE DECIDE --> REDIR DECIDE --> HEADERS DECIDE --> NEXT REWRITE --> PAGE REWRITE --> API2 REWRITE --> FN NEXT --> PAGE NEXT --> API2 NEXT --> FN style REQ2 fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style READ fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style DECIDE fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style REWRITE fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style REDIR fill:#0e0e0e,stroke:#f5a623,color:#d4d4d4 style HEADERS fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style NEXT fill:#0e0e0e,stroke:#525252,color:#d4d4d4 style PAGE fill:#0e0e0e,stroke:#00b4d8,color:#d4d4d4 style API2 fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style FN fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4

Geolocation Data

Middleware receives `request.geo` with country, region, city, latitude, longitude. Enables country-based redirects, currency selection, or content localization without external APIs.

Edge

Matcher Configuration

The `config.matcher` export controls which paths trigger middleware. Supports string patterns and regex. Excludes `_next/static`, `_next/image`, and `favicon.ico` by convention.

Edge

Feature Flags & A/B Testing

Combine Edge Config reads with cookie-based bucketing in middleware for near-zero-latency feature flags. Rewrite to different page variants without client-side flicker.

Edge
09

Storage & Database Connectors

Vercel provides four managed storage products, each backed by proven infrastructure partners. All are accessible from Serverless Functions and (with adapters) from Edge Functions. Connection pooling and edge-compatible drivers handle the serverless connection challenge.

Storage Product Architecture
graph TD
    subgraph App["Application Code"]
        SF2["Serverless
Functions"] EF2["Edge
Functions"] end subgraph Vercel_Storage["Vercel Storage"] KV2["Vercel KV
(Upstash Redis)"] PG2["Vercel Postgres
(Neon Serverless)"] BL["Vercel Blob
(Cloudflare R2)"] EC2["Edge Config
(Global JSON Store)"] end subgraph Features["Capabilities"] KVF["Key-Value / Sorted Sets
Sessions, Rate Limiting"] PGF["SQL / Transactions
Full Relational DB"] BLF["File Upload / CDN
Images, Videos, Docs"] ECF["Read-Only Config
Feature Flags, Redirects"] end SF2 --> KV2 SF2 --> PG2 SF2 --> BL SF2 --> EC2 EF2 --> KV2 EF2 --> EC2 KV2 --> KVF PG2 --> PGF BL --> BLF EC2 --> ECF style SF2 fill:#0e0e0e,stroke:#0070f3,color:#d4d4d4 style EF2 fill:#0e0e0e,stroke:#7928ca,color:#d4d4d4 style KV2 fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style PG2 fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style BL fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style EC2 fill:#0e0e0e,stroke:#00c853,color:#d4d4d4 style KVF fill:#0e0e0e,stroke:#525252,color:#a3a3a3 style PGF fill:#0e0e0e,stroke:#525252,color:#a3a3a3 style BLF fill:#0e0e0e,stroke:#525252,color:#a3a3a3 style ECF fill:#0e0e0e,stroke:#525252,color:#a3a3a3

Storage Products

Vercel KV (Redis)

Powered by Upstash. Durable Redis with REST API for edge compatibility. Supports strings, lists, sets, sorted sets, hashes. Per-request pricing, no persistent connections needed.

Storage

Vercel Postgres

Powered by Neon's serverless Postgres. Uses HTTP-based connection pooling (`@vercel/postgres` SDK) to handle serverless connection bursts. Full SQL with transactions.

Storage

Vercel Blob

Object storage for file uploads. Client-side multipart upload directly to storage, bypassing serverless function limits. CDN-backed reads with automatic cache headers.

Storage

Edge Config

Ultra-low-latency read-only JSON store. Data is replicated to every edge PoP, enabling sub-millisecond reads. Perfect for feature flags, redirects, A/B test configs.

Storage
Product Backed By Edge Compatible Use Case
Vercel KV Upstash Redis Yes (REST API) Sessions, rate limiting, leaderboards
Vercel Postgres Neon Yes (HTTP driver) Relational data, transactions
Vercel Blob Cloudflare R2 Read-only at edge File uploads, media assets
Edge Config Vercel native Yes (embedded) Feature flags, redirects
10

Analytics & Observability

Vercel provides integrated observability with Web Analytics (visitor metrics), Speed Insights (Core Web Vitals from real users), runtime logs, and deployment monitoring. All data is collected at the edge with minimal performance impact.

Observability Data Flow
graph LR
    subgraph Sources["Data Sources"]
        BROWSER["Browser
(RUM beacon)"] EDGE2["Edge Network
(access logs)"] FUNC["Function Runtime
(console.log)"] BUILD2["Build System
(build logs)"] end subgraph Pipeline["Collection"] BEACON["Analytics Beacon
(~1KB script)"] ACCESS["Request Logs
(structured JSON)"] RUNTIME["Runtime Logs
(stdout/stderr)"] end subgraph Products["Products"] WA["Web Analytics
(visitors, pageviews)"] SI["Speed Insights
(CWV: LCP, FID, CLS)"] LOGS2["Log Drains
(external export)"] end BROWSER --> BEACON EDGE2 --> ACCESS FUNC --> RUNTIME BUILD2 --> RUNTIME BEACON --> WA BEACON --> SI ACCESS --> LOGS2 RUNTIME --> LOGS2 style BROWSER fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style EDGE2 fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style FUNC fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style BUILD2 fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style BEACON fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style ACCESS fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style RUNTIME fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style WA fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style SI fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4 style LOGS2 fill:#0e0e0e,stroke:#ff0080,color:#d4d4d4

Web Analytics

Privacy-friendly (no cookies), tracks visitors, page views, referrers, countries, devices, and browsers. The beacon script is ~1KB and loads asynchronously.

Analytics

Speed Insights

Real User Monitoring (RUM) for Core Web Vitals: Largest Contentful Paint, First Input Delay, Cumulative Layout Shift, Time to First Byte, Interaction to Next Paint.

Analytics

Log Drains

Stream structured logs to external services (Datadog, Axiom, Sentry, custom webhooks). Covers build logs, edge access logs, and serverless function stdout/stderr.

Analytics

Conformance

Automated code analysis checking for performance, accessibility, and security best practices. Runs during CI and surfaces issues as PR comments with severity levels.

Analytics
11

End-to-End Data Flow

A complete request on Vercel traverses multiple layers: DNS resolution, TLS at the edge, middleware execution, cache lookup, optional serverless invocation, and response delivery. Each layer adds capabilities while maintaining sub-second response times.

Full Request Lifecycle
sequenceDiagram
    participant Client
    participant DNS
    participant Edge as Edge PoP
    participant MW as Middleware
    participant Cache
    participant Region as Compute Region
    participant DB as Storage

    Client->>DNS: Resolve domain
    DNS-->>Client: Edge PoP IP (Anycast)
    Client->>Edge: HTTPS Request
    Edge->>MW: Run Middleware
    MW-->>Edge: Rewrite / Headers / Next

    alt Static Asset
        Edge-->>Client: Serve from Edge Cache
    else ISR (cached)
        Cache-->>Client: Serve stale + revalidate
        Cache->>Region: Background revalidation
        Region->>DB: Fetch fresh data
        DB-->>Region: Data
        Region-->>Cache: Updated page
    else Dynamic (SSR)
        Edge->>Region: Forward to function
        Region->>DB: Query data
        DB-->>Region: Results
        Region-->>Edge: Rendered HTML (streaming)
        Edge-->>Client: Stream response
    end
                
Streaming Architecture

Vercel's infrastructure supports end-to-end streaming. React Server Components with Suspense boundaries allow the initial shell to be sent immediately while slower data fetches complete in parallel. The client progressively renders content as chunks arrive, reducing Time to First Byte and improving perceived performance.

12

Glossary & Acronyms

CDN Content Delivery Network
CI/CD Continuous Integration / Continuous Deployment
CLS Cumulative Layout Shift
CWV Core Web Vitals
DPR Distributed Persistent Rendering
FID First Input Delay
INP Interaction to Next Paint
ISR Incremental Static Regeneration
KV Key-Value (Store)
LCP Largest Contentful Paint
PoP Point of Presence
PPR Partial Prerendering
RSC React Server Components
RUM Real User Monitoring
SSG Static Site Generation
SSR Server-Side Rendering
SWR Stale-While-Revalidate
TLS Transport Layer Security
TTFB Time to First Byte
WAF Web Application Firewall
Diagram
100%
Scroll to zoom · Drag to pan