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.jsonalongside 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.