Scaling multi-brand e-commerce with composability
Tata Digital integrates 20+ brands to launch their SuperApp, Tata Neu, in 4 months with Sanity—overcoming the challenges of content diversity and siloed stacks.
Early Access
Combine High-Frequency CDN with Live Content API to delight your audiences with live digital experiences. No specialized infrastructure and no dedicated engineering teams required.
Stop making your users hit refresh to get your latest products, promotions, news stories, or any other content. Scale with confidence to frequent content updates, high traffic, and millions of users
Sanity Live provides an API for subscribing to changes and receiving notifications when documents are created, updated, or deleted. Thus you no longer need dedicated infrastructure or specialized engineering teams to deliver live digital experiences.
// Subscribe to live updates const subscription = client.live.events().subscribe( (event) => { if (event.type === 'message' && event.tags.some((tag) => syncTags.includes(tag))) { /* If any of the event tags match our stored syncTags, refetch the data, update our local cache and sync tags and "re-render" it.*/ render(event.id) } if (event.type === 'restart') { // A restart event is sent when the `lastLiveEventId` we've been given earlier is no longer usable render() } })
Thanks to our content-as-data architecture, the Sanity CDN is content-aware and is able to only refresh the content elements that change and only do so exactly when they change. The CDN also keeps track of each content update and makes that info available to the API thus allowing our customers to create live experiences for their users.
Get started with a free Sanity instance or contact our sales team for a personalized demo.
// Subscribe to live updates
const subscription = client.live.events().subscribe(
(event) => {
if (event.type === 'message' && event.tags.some((tag) => syncTags.includes(tag))) {
/* If any of the event tags match our stored syncTags,
refetch the data, update our local cache and sync tags and "re-render" it.*/
render(event.id)
}
if (event.type === 'restart') {
// A restart event is sent when the `lastLiveEventId` we've been given earlier is no longer usable
render()
}
})