Sanity gives the team full editorial control without ever touching code. Every section of every page is editable from the Sanity Studio — text, images, ordering, links, everything. But getting Sanity to work well with Next.js ISR required several deliberate decisions.
useCdn: false
We disabled Sanity's CDN layer entirely. The reason: when both Sanity's CDN cache and Next.js's ISR cache are active simultaneously, they stack on top of each other. A content update gets caught in Sanity's CDN cache first, then has to wait for Next.js ISR to revalidate as well — resulting in stale content that can take far longer than 60 seconds to surface on the live site. With useCdn: false, Sanity always returns fresh data from the API, and Next.js ISR is the single caching layer controlling freshness.
Singleton Documents
Pages like About, Contact, Navbar, Footer, and Home Hero each use a fixed document _id in Sanity — so there is always exactly one document per page, never more. In GROQ, we filter singletons by _id:
*[_type == "aboutPage" && _id == "aboutPage"][0]
This prevents a common Sanity pitfall: if an editor accidentally creates a duplicate document, a query using only _type can return the wrong one. Filtering by _id makes the query deterministic.
We enforce this in Sanity Studio using the Structure Tool plugin, which removes the Create New button for singleton document types — so editors cannot create duplicates even accidentally.
Drag-and-Drop Ordering — The Feature Webflow Does Not Have
This was one of the most impactful improvements for the team day-to-day. In Webflow CMS, there is no native drag-and-drop ordering for collection items. To control the display order of a portfolio or a list, teams are forced to use date fields, manual order numbers, or other workaround fields — and every reorder means editing multiple records one by one.
In Sanity, we integrated the @sanity/orderable-document-list plugin, which adds a drag handle to every work item in the Studio. The team simply drags items into the order they want. Under the hood, each item has an orderRank string field that the plugin manages automatically. The GROQ query sorts by orderRank asc — drag in Studio, see it reflected on the live site within 60 seconds. No number fields to update, no date manipulation, no developer required.