Static shell, streamed personalisation
What we did
Catalogue and content render statically at the edge; cart, stock and customer-specific pricing stream in afterwards.
Why
Nothing personal belongs in a cached document, and nothing shared should wait for a personal lookup. Splitting them means the first paint never blocks on an API call.
What it cost
Price changes propagate on revalidation rather than instantly. Flash-sale SKUs are excluded from static rendering, because being briefly wrong about a sale price is worse than being slightly slower.