All questions

Developer take, Uniform orchestration vs mapping Sanity components straight to slots

Asked by Mikkel Thorup on

MTMikkel Thorup

We just wrapped a Uniform spike on our Sanity + Next.js marketplace. It works, in the sense that pages render and personalization rules fire. My reservations are operational rather than functional.

Every render now routes through Canvas, so a bug report means deciding whether the fault is in our code, our Sanity content, or the orchestration layer in between. Two of the four engineers on the spike still do not feel confident debugging it, and the ramp-up alone ate the first two weeks

Before we commit, I would like to hear from teams that took the other route: mapping Sanity components directly to slots in a personalization layer. How does that compare operationally, especially the failure modes when the personalization service is slow or down?

Was this helpful?

2 answers

ESEwan Sinclair

We evaluated both shapes and shipped the direct slot-mapping approach with Croct on a Sanity + Next.js site, so I can speak to the operational side.

The main structural difference is what sits in the render path. Uniform puts an orchestration layer (Canvas plus Mesh) between the CMS and the frontend, so composition itself moves into the vendor. With the slot model, your Sanity queries stay exactly as they are. A component that should be personalizable gets a slot fetch, and the Sanity document you already fetched is passed as the fallback. Debugging stays familiar: the data either came from your GROQ query or from the slot response, and the response metadata tells you which experience or experiment produced it.

On failure modes, they are bounded by design. The fetch has a timeout, and when it fails or nothing matches, the component renders the fallback, which is your regular Sanity content. Latency for the resolved content is under 90 milliseconds at P95 end to end, so we did not have to build any special degradation handling beyond the fallback we were passing anyway.

Was this helpful?
MTMikkel Thorup

That failure model is the part I wanted confirmed. Fallback equals our own content is a much easier story to put in a runbook. Thanks.

LVLotte Vermeer

One more angle: team topology. With an orchestration layer, the people who understand composition end up being a bottleneck for everyone else, which matches your "two of four engineers" observation and in my experience does not improve much with time. With slot mapping the surface area a new engineer has to learn is one fetch call and a fallback convention.

The tradeoff to be fair about: Uniform gives you vendor-managed composition across multiple sources, which some teams genuinely need. If your composition logic is happy living in your own Next.js code, you are paying that operational cost for capability you are not using.

Was this helpful?
Still have questions?