Configuration API
Improved document sync notification, Copying Document URL, and more
v3.56.0
✨ Highlights
Improved document sync notification
Fixes an issue where the syncing document notification would sometimes remain on the screen indefinitely, even after the document was no longer visible. The toast is now dismissible, improving the user experience when working with synchronized documents.

Copy document URL to clipboard
A new feature has been added to the document pane. It allows users to easily copy the current document's URL to their clipboard, making document sharing with colleagues and collaborators more convenient.

Ending the "Array Tree Editing" beta
Thank you to everyone who participated in the "Array Tree Editing" beta. Based on your feedback, we are ending this experiment as we continue to explore better ways to navigate nested structured.
This means that the beta.treeArrayEditing
in the Studio configuration and treeArrayEditing
option for the array schema type are now deprecated.
🐛 Notable bugfixes
- Optimized rendering in Presence: We’ve optimized how presence changes are handled, reducing unnecessary re-renders in the Studio. This enhancement improves overall performance when multiple users are working on the same document.
- Respect for
--no-auto-updates
flag in CLI: Fixed an issue where the CLI would not respect the--no-auto-updates
flag, ensuring that this configuration setting now behaves as expected. - Improved feedback when extracting schema: The schema extraction process now outputs the file path, providing clearer feedback and making it easier to locate the saved schema.
- Constrain size for date picker popover: Added a prop to constrain the size of the date picker popover in the
DateTimeInput
UI component, providing more control over its appearance, especially in modal contexts.
Install or upgrade Sanity Studio
To initiate a new Sanity Studio project or upgrade an existing one, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.
If you are updating from a version earlier than 3.37.0, you should also check out this article to ensure your dependencies are up to date.
Upgraded and refreshed Studio UI
v3.23.0
This update significantly upgrades the Sanity Studio user interface (UI) and Sanity UI. The goal here is to align it with what you expect for modern tooling and reduce elements where possible to make it easier and smoother. We also wanted to bring more consistency in styling and interactivity.

At a high level, we have:
- Updated the navigation bar with fewer visual elements
- Reduced visual noise in document lists and made it easier to discern between documents and folders
- Made typography, line heights, and styling more consistent
- Updated color themes to add more vibrancy where interactive elements need to stand out
- Cleaned up the document form and added a large title to make it easier for editors to discern where they are
- Made dates human readable (exact date time accessible on hover)
- Added simple animations to improve how it feels to use the Studio
- Removed the
components.studio.logo
API to more clearly signpost what workspace you are in (you can still add custom logos with workspace icons) - Done the groundwork to simplify branding and theming the Studio
- Updated Sanity UI with new studio-specific UI components and better support for the new localization features
Upgrading to the new UI
To install this upgrade (v3.23.0
) run:
npm install sanity@latest
If you have used Sanity UI (@sanity/ui
) for Studio customization, you should install the beta of the new major release, too.
npm install @sanity/ui@beta
Test it out
We have worked hard to identify edge cases, but this update might break with customizations, and plugins that use and haven't updated their Sanity UI dependency might look a bit out of place. We recommend you test out the upgrade on a branch and preview deployment.
If this upgrade for some reason doesn't work with your current Studio, you can downgrade to v3.22.0
(and minor patch releases for it). Edit package.json
and run npm install
:
{
//...rest of package.json
"dependencies": {
"sanity": "^3.22.x"
}
}
If you have to do this, tell us what doesn't work for you in an issue on GitHub.
Tell your team!
This upgrade changes how the Studio feels and looks; in some cases, it moves affordances that your content team might have used to. We think this upgrade improves the editorial experience, but it is still good to inform your team that this change is coming. And use that opportunity to teach them about keyboard shortcuts like cmd + K
/ ctrl + K
to open the search bar.
Plugin maintainers
If you are a plugin maintainer and want to support this upgrade, then you can add ^2.0.0-beta
to the peer-dependency range of @sanity/ui
:
{
//...rest of package.json
"peerDependencies": {
"@sanity/ui": "^1.0 || ^2.0.0-beta"
}
}
This will make it stay compatible with future stable/non-beta releases of @sanity/ui@2.x
.
Migration and deprecations
This release deprecates some parts of the Studio Customization Framework.
Custom Studio logo component
The studio.components.logo
are no longer rendered. For custom logos, use the icon
property in the workspace configuration instead:
// sanity.config.ts
import {defineConfig} from 'sanity'
import {RobotIcon, RocketIcon} from '@sanity/icons'
import {deskTool} from 'sanity/desk'
import {schemaTypes} from './schemas'
export default defineConfig({
projectId: '<projectId>',
dataset: 'production',
name: 'Production',
title: 'Default Workspace',
icon: RobotIcon,
plugins: [deskTool()],
schema: {
types: schemaTypes,
},
})
Tool icon
Tool icons are no longer rendered; only the tool name is used in the navigation bar. There is no workaround for this.
Menu item group title
The Structure Builder API has allowed for a menu group title to be set. This is no longer displayed.
Improvements and bugfixes
v3.15.0
Installation and upgrading
To initiate a new Studio without installing the CLI globally:
npm create sanity@latest
To upgrade a v3 Studio, run this command in its folder:
npm install sanity@latest
✨ Highlights
- Adds new
token
login method for rare cases when the more secure cookie approach is not viable/wanted - Enables specifying authentication options using an object instead of
createAuthStore()
- Adds new
is_defined
filter to GraphQL APIs, mirroring thedefined()
function in GROQ. GraphQL APIs will have to be re-deployed to enable the new filter.
🐛 Notable bugfixes
- Improves performance when fetching projects list as part of the
sanity init
CLI command - Fixes an issue that would give intermittent validation errors for valid string values when using a regex with global flag
- Fixes an issue where references to undeclared document types would never load
- Improves error UIs for reference values
- Improves the changes pane to show path line and change indicator correctly for the following field types:
- Array of strings (
array
of typestring
) - Array of tags (
array
of typestring
withlayout: 'tags'
) - Array of strings (
array
of typestring
withoptions.list
) - Array of emails (
array
of typeemail
)
- Array of strings (