Personalization does not require a monolith. Keep it lean:

  • Segment by a handful of signals (geo, language, returning vs. new).
  • Render core content statically; swap variants at the edge with a small JSON manifest.
  • Cache per segment, not per user, to keep costs predictable.

Quick setup

  • Publish a variants.json alongside your build with copy and links per segment.
  • Use an edge function to pick the segment and inject variant data as JSON in the HTML.
  • Hydrate only the minimal interactive bits—everything else stays static.
Edge personalization without blowing the budget