create_version** **tool: Simplified the response and added follow-up guidance for editing version documents with patch_document_from_json or patch_document_from_markdown.patch_document_from_json** **tool: Numeric array indices are now rejected, and patch execution has been simplified for more predictable behavior./token responses now include Cache-Control: no-store to prevent caching of OAuth tokens.This release improves syntax highlighting for GROQ queries and fixes multiple stability issues including autocompletion rendering, crashes from localized bundles, document ID copying, search focus loss, and reference editing problems.
Improved syntax highlighting of GROQ-queries in the Vision plugin.
extractSchema now returns a proper object type for object types without fields, instead of returning an unknown type. This affects consumers of the @sanity/schema extract API.items[0].value). Previously, defining an ordering like by: [{field: 'items[0].value', direction: 'asc'}] would crash the document list. Array index and _key-based access are both supported for single-member-type arrays.This release improves permission handling for the asset privacy toggle in the Media Library sidebar.
Fixed an issue where the public/private visibility toggle remained visually enabled for users with read-only access. The toggle now correctly renders in a disabled state and displays an “Insufficient permissions” tooltip when you don’t have write access to the asset.
This release updates the Collections UI to use a sidebar pattern for editing titles and descriptions, inline with Asset editing.
We've added a new Sanity Function type that lets you respond to changes in Live Content by means of sync tags.
You can now run functions whenever Live Content changes. This new function type extends the event-driven architecture already available for documents, giving you more control over your content workflow automation.
The primary use of this new function type is to invalidate third party caches fronting your Sanity Live Content.
Here's an example of defining a sync tag invalidate function:
import { defineBlueprint, defineSyncTagInvalidateFunction } from '@sanity/blueprints'
export default defineBlueprint({
resources: [
defineSyncTagInvalidateFunction({
name: 'bust-cache',
event: {
resource: {
type: 'dataset',
id: 'myProjectId.myDatasetName',
}
},
})
],
})
To get started, update to the latest @sanity/blueprints and @sanity/functions libraries using npm or pnpm, and ensure you're using the latest sanity CLI. The defineSyncTagInvalidateFunction helper requires @sanity/blueprints v0.15.2 or later and the syncTagInvalidateEventHandler runtime function helper requires @sanity/functions v1.3.0 or later.
For more information about Functions, see the Sanity Functions documentation.
This update introduces inline confirmation dialogs that let you review actions before the agent executes them. The Slack integration gains more concise responses and usability improvements, along with several bug fixes.
For larger bulk operations on search results, the agent pauses and asks for your confirmation before proceeding. An inline confirm/cancel dialog appears in the chat when the estimated cost exceeds 100 AI credits, giving you a chance to review what's about to happen.
This release fixes several issues including array fields disappearing when expanding panes, IDE autocomplete for field definitions, nested array rendering problems, and comment input flashing in Portable Text fields.
type property in defineField when used inside defineType’s fields array. Previously, autocomplete suggestions were only available when defineField was used standalone (thanks @codythatsme).disableActions).whoami** **tool: Check which user is currently authenticated and their authentication method.read_docs** **tool: Simplified the parameters so it now accepts url or path separately instead of a combined field. Also rejects non-Sanity URLs.list_sanity_rules** **tool: Fixed incorrect rule name prefixes shown in the quick reference.discard_drafts tool and reduced overall prompt size.This update includes a new feedback mechanism, assorted fixes, and improvements to the CLI.
You can now provide Sanity feedback directly from your studio by opening the “Help and Resources” menu and picking send feedback!
app.title from config in SDK app HTML title.--url flag and unattended mode support for sanity deploy.apiName over displayName to input validation.--help flag resolving singular topic aliases.--legacy-peer-deps from npm install during init.CommandList were not clickable on initial render if the mouse was already positioned over the list.allowRelative: true was ignored when the schema list excludes http.create_release** tool**: Create content releases to stage and publish groups of document changes together.list_releases** tool**: List content releases with filtering by state and pagination support.create_project** tool**: New projects now include the Figma Make CORS origin by default.add_cors_origin** tool**: The Figma Make CORS origin is now available as a recognized origin value.Here's a roundup of new and revamped documentation, plus a small improvement to the docs site itself.
GROQ behaves differently depending on where you run it. A new reference page documents which GROQ features are supported in each context. Use it to quickly check whether a specific operator, function, or pipeline feature is available in the context you're working in.
@sanity/clientThe @sanity/client documentation has been rewritten and moved from the package README into structured, searchable articles on the docs site. The new guides cover installation, configuration, and common operations like fetching, creating, and patching documents.
Next.js now has its own dedicated section in the docs, making it easier to find framework-specific guidance in one place. The App Router visual editing guide has also been refreshed to make it easier for you, and your AI coding agents, to set up Visual Editing.
A new system requirements page documents the minimum and recommended Node.js versions, supported browsers, and other environment requirements for running Sanity Studio.
New docs are available for Content Agent for Slack, the Content Agent API, and Dataset Embeddings. Check out the announcements for more details on these features.
When navigating the docs sidebar, links that take you to a page in a different part of the docs now include a visual indicator so you know you're about to leave the current section.
This update adds file uploads to the agent chat, persistent custom instructions, and the option to merge proposed changes into an existing release. Plus better context handling in long conversations and several bug fixes.
You can now upload images and files directly in the agent chat. Attach a file to the conversation and the agent can reference it when creating or updating content. Uploaded images display as thumbnails in the chat thread. Supported file types: PDF, TXT, JPEG, PNG, GIF, and WebP. The maximum file size is 32 MB.
Set persistent guidelines for how the agent writes and responds. Configure tone, language, style preferences, or any other instructions you want applied to every conversation.
Custom instructions are available at two levels:
Organization-level instructions apply to all users in the organization. User-level instructions apply to your conversations only.
When the agent proposes content changes, you can now merge them into an existing release instead of creating a new one. This makes it easier to group related changes together before publishing.
In case you missed it, we now offer a ways to interact with Content Agent through and HTTP API and a Slack integration. Check out the blog post for details on the Slack integration.
This release fixes critical issues with authentication persistence in Next.js, session management errors, and the @mention dropdown functionality, while also improving performance by reducing unnecessary API requests.
Session with sid (…) not found.sanity.studio.history-revision after editing documents.selectedAssets when opened via the browse flow, even when the field already has a value.@mention dropdown in comments might show “No users found” when any system.group document had members: null.renderDefault.debug** **command has an improved output format and can now be run outside a project.init has improve flags.start command. Use preview instead.sanity deploy.schema.json.--token flag.This release fixes a crash issue that could occur when importing from Sanity in the CLI and other Node-based tools.
This release adds control over where null values appear in sorted results and fixes issues with tag input display, file asset drag-and-drop menus, and datetime input number entry.
Sort orderings now supports a nulls option to control where null/undefined values appear in results.
Defaults are unchanged and still:
desc -> nulls firstasc -> nulls lastdefineType({
name: 'book',
type: 'document',
orderings: [
{
title: 'Publication year',
name: 'publicationYear',
by: [
{
field: 'publicationYear',
direction: 'desc',
nulls: 'last'
}
],
},
],
// ...
})
Note that overriding the default may have performance implications and negatively impact loading times for document types with lots of documents.
advancedVersionControl.enabled configuration to true. More details and documentation will be published as this tool matures.Sanity Connect syncs product information between Shopify and Sanity. We keep the Status in Shopify linked to the publishing state in Sanity.
Sanity Connect now handles Shopify's unlisted product status. Previously, unlisted products were unpublished and moved to a draft state in Sanity. This is how archived or draft products behave. Now, unlisted products are treated the same as active products and remain published in your Sanity dataset.
This applies to both real-time webhook syncs and bulk syncs.
This release fixes critical issues in the CLI related to deployed schema shapes, configuration path resolution, and MCP editor setup.
sanity debug outside of a project context would failreact+react-dom to latest versions on new installsThe Sanity CLI has undergone a big behind-the-scenes overhaul. If you were previously running the CLI package directly, you'll want to switch to using sanity for all commands. In addition, there are some new fixes and improvements.