
Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag storeI can see the issue you're running into! The prepare function in Sanity's preview configuration cannot be async and cannot make queries. The function needs to return synchronously, which is why your async function returning a Promise object isn't working.
The good news is that Sanity has a built-in solution for this exact scenario. You can use dot notation in the select object to access fields from referenced documents directly, without needing to make separate queries.
Here's how to fix your preview:
preview: {
select: {
title: 'title',
// Access the title from the first 3 tools/cards in your content array
tool0: 'content.0.tool.title',
tool1: 'content.1.tool.title',
tool2: 'content.2.tool.title',
card0: 'content.0.card.title',
card1: 'content.1.card.title',
card2: 'content.2.card.title'
},
prepare({ title, tool0, tool1, tool2, card0, card1, card2 }) {
// Filter out undefined values and combine
const items = [tool0, tool1, tool2, card0, card1, card2].filter(Boolean)
return {
title: title,
subtitle: items.length > 0 ? items.join(', ') : 'No items yet'
}
}
}This approach:
content.0, content.1, etc.) to access specific array itemsImportant limitation: You need to specify the exact number of items you want to preview upfront (I used 3 in the example). The select object can't dynamically loop through all array items, so you'll need to decide how many references you want to show in the subtitle.
If you have a mixed array of tools and cards, you might need to adjust the select paths based on your schema structure. For example, if your content array has objects with either a tool or card reference field, the above should work. If the structure is different, adjust the paths accordingly.
This is the standard Sanity way to handle reference previews - much cleaner than trying to fetch data in the prepare function!
Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.
Content operations
Content backend


The only platform powering content operations
By Industry


Tecovas strengthens their customer connections
Build and Share

Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag store