Sanity Studio v5.3.0: Enhanced object dialog is opt out + multiple bug fixes and improvements

The new enhanced object dialog is now opt-out

The improved dialog, which was first introduced as an opt-in beta in October 2025, becomes the new default view, with an option to disable if needed. In order to opt out, you will need to go to your sanity.config.ts and change the following:

// ...
beta: {
form: {
// add a property enhancedObjectDialog and set it to false
enhancedObjectDialog: {
enabled: false,
},
},
},
})

Access sort order in preview components

Preview components can now access the current sort order via viewOptions in their prepare() function.

// ...rest of schema
preview: {
prepare(value, viewOptions) {
const sortedByDate = viewOptions?.ordering?.some(o => o.field === 'publishedAt')
return {
title: value.title,
subtitle: sortedByDate ? value.publishedAt : value.author
}
}
}

🐛 Notable bugfixes

Improves the warning message when trying to delete a document that has versions within scheduled releases

Allows all @sanity/client ClientOptions in getCliClient

In Presentation/Visual Editing, when an options.title is not passed to the plugin configuration, the page title will be "Presentation"

A warning will now appear to flag content releases that have missed their intended publish date

Updates function examples that trigger on create and update events where a specific field is required to change (on update) or be set (on create)

Fixes an issue where function recipes wouldn't trigger on first document publish

Fixes an issue where unpublished scheduled drafts would not be visible in document lists within structure tool

Fixes datetime timezone preference storage for fields inside nested arrays

Dataset imports with large numbers of assets no longer fail with EBADF errors

Other Improvements

Cleaner package exports: Published packages now have cleaner exports fields in their package.json. This condition has been removed from published packages, making the exports less verbose and avoiding any potential confusion or unintended behavior.

Fewer "Duplicate context" warnings in monorepos: The Vite config generated by sanity dev and sanity build now uses resolve.dedupe instead of resolve.alias for deduplication. ‘This should significantly reduce "Duplicate context" warnings that users have experienced in monorepo setups, including:

Note: react and react-dom were added because @vitejs/plugin-react removed them from the default dedupe behavior in v5.0.0.

No more Babel deoptimization warnings: The issue where sanity build would sometimes log [BABEL] Note: The code generator has deoptimised the styling of [file] as it exceeds the max of 500KB has been resolved by setting generatorOpts: {compact: true} in the babel config when React Compiler is enabled.

Adds support for configuring the Sanity MCP server for additional AI code editors:

Zed

OpenCode

VS Code Insiders

Users can now run sanity mcp configure (or sanity init) and these editors will be detected automatically if installed. The command now supports: Cursor, VS Code, VS Code Insiders, Claude Code, Zed, and OpenCode.

schema extract now gives more helpful error messages about errors in the Studio schema configuration.

Private assets are now selectable when using the Media Library plugin.

Reduces the size of generated TS by using an ArrayOf util type for inline object array members.

Deprecate unstable_use hooks in favor of useUnstable version of them.

Adds support for new Media Library image thumbHash property.