
Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag storeI can see your issue! This is a common problem when migrating to Sanity Studio v3. The issue is related to how fields with options.list are handled in preview configurations.
When you have a string field with options.list (like your jobTitle field), there's a specific behavior in how the preview select works. According to the Sanity documentation on previewing from predefined string lists, when you use a prepare() function with fields that have predefined lists, Sanity passes the value (not the title) to the prepare() function.
However, if you're seeing undefined, it's likely because of how you're handling the selection in your prepare() function.
Solution 1: Simplify your preview (recommended)
Your prepare() function is unnecessarily complex. Try this simpler version:
preview: {
select: {
title: 'name',
subtitle: 'jobTitle',
media: 'authorImage'
}
}Remove the prepare() function entirely. Sanity will automatically handle the display correctly, showing the title from your options list.
Solution 2: If you need the prepare function
If the simplified version doesn't work, add some debugging:
preview: {
select: {
title: 'name',
jobTitle: 'jobTitle',
media: 'authorImage'
},
prepare(selection) {
console.log('Preview selection:', selection)
const { title, jobTitle, media } = selection
return {
title: title,
subtitle: jobTitle,
media: media
}
}
}The Object.assign() you're using is redundant and could be causing issues.
Solution 3: Handle existing documents
If you have existing author documents created before the update, they might need to be re-saved:
This forces Sanity to re-process the document with the current schema.
Solution 4: Update for Studio v3 compatibility
Also note that in Studio v3, the inputComponent property has been renamed. Your slug field should use:
{
name: 'slug',
title: 'Slug',
type: 'slug',
components: {
input: SlugInput // changed from inputComponent
},
// ... rest of options
}Make sure your sanity-plugin-better-slug is updated to a v3-compatible version.
The preview system in Studio v3 has stricter handling of field selections. When you use Object.assign({}, selection, {...}), it can sometimes interfere with how Sanity internally processes the preview values, especially for fields with predefined lists.
Try Solution 1 first—removing the prepare() function entirely should resolve your issue in most cases. The jobTitle value will display correctly as the subtitle without any custom logic needed.
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