---
name: Sanity Changelog
slug: sanity-changelog
type: feed
source_url: https://www.sanity.io/changelog
organization: Sanity
organization_slug: sanity
total_releases: 55
latest_version: 2.17.1
latest_date: 2026-04-17
last_updated: 2026-04-19
tracking_since: 2026-01-22
canonical: https://releases.sh/sanity/sanity-changelog
organization_url: https://releases.sh/sanity
---

<Release version="2.17.1" date="April 17, 2026" published="2026-04-17T22:03:06.000Z" url="https://www.sanity.io/docs/changelog/680eec2d-5b8f-4337-8ada-a96263cd9306">
## MCP server v2.17.1: create_version improvements and patch fixes

## Improvements

- `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`.

## Fixes

- `patch_document_from_json`** **tool: Numeric array indices are now rejected, and patch execution has been simplified for more predictable behavior.
- Authentication: `/token` responses now include `Cache-Control: no-store` to prevent caching of OAuth tokens.
</Release>

<Release version="5.21.0" date="April 15, 2026" published="2026-04-15T14:35:44.567Z" url="https://www.sanity.io/docs/changelog/studio-NS4yMC4w">
## Sanity Studio v5.21.0: GROQ improvements to Vision plugin and assorted bugfixes

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.

## Vision tool improvements

Improved syntax highlighting of GROQ-queries in the Vision plugin.

## 🐛 Notable bugfixes and improvements

- Fixed a issue where autocompletion for reference picker wouldn’t render correctly in some situations.
- Fixes an issue where some localized bundles would cause the studio to crash.
- Fixed an issue where “Copy document ID” on live edit document types copied the draft ID instead of the published ID.
- Fixes an issue where typing in the release document search would cause the input to lose focus when no results matched.
- `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.
- In multi-workspace studios, changing the document list sort order in one workspace no longer crashes another workspace whose schema lacks the sorted field. The studio falls back to sorting by last edited. Invalid sort orderings appear disabled in the menu and log a console warning.
- Fixes an issue preventing referenced document from being edited when opened from an object in popover mode.
- Custom sort orderings now support array index access in field paths (e.g., `items[0].value`). Previously, defining an ordering like `by: [{field: &#x27;items[0].value&#x27;, direction: &#x27;asc&#x27;}]` would crash the document list. Array index and `_key`-based access are both supported for single-member-type arrays.
- The incoming references inspector now shows a loading indicator while fetching data instead of briefly displaying “No incoming references found.”
</Release>

<Release date="April 15, 2026" published="2026-04-15T14:34:00.000Z" url="https://www.sanity.io/docs/changelog/apiChange-ml-happy-birds-ask">
## Media Library: Visibility toggle bugfix

This release improves permission handling for the asset privacy toggle in the Media Library sidebar.

## Notable bugfixes

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.
</Release>

<Release date="April 13, 2026" published="2026-04-13T18:20:38.493Z" url="https://www.sanity.io/docs/changelog/apiChange-ml-wacky-foxes-say">
## Media Library: New sidebar pattern in collections interface

This release updates the Collections UI to use a sidebar pattern for editing titles and descriptions, inline with Asset editing. 

![An editing panel showing an image preview of a modern building, with fields for “Title” (set to “Architecture”) and “Description,” along with creation and update dates and a save button at the bottom.](https://cdn.sanity.io/images/3do82whm/next/8f1b3289e38ba105d9f1b8163d8c0a51fb19923d-772x1652.png)
</Release>

<Release date="April 13, 2026" published="2026-04-13T16:30:11.631Z" url="https://www.sanity.io/docs/changelog/7a491dd1-67e8-41e0-9a89-eb9704055dc6">
## Functions: New Function Type: Sync Tag Invalidate Functions

We&#x27;ve added a new Sanity Function type that lets you respond to changes in Live Content by means of sync tags.

## ✨ Highlights

### React to changing Live Content

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&#x27;s an example of defining a [sync tag invalidate function](https://www.sanity.io/docs/functions/sync-tag-function-quickstart):

```
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&#x27;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](https://www.sanity.io/docs/functions/functions-introduction).
</Release>

<Release date="April 7, 2026" published="2026-04-07T22:25:22.592Z" url="https://www.sanity.io/docs/changelog/5c5ebe6c-2b09-46cf-b7df-10ca1aaa351f">
## Content Agent: Inline confirmation dialogs, Slack improvements, and bug fixes

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.

## Inline confirmation dialogs

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&#x27;s about to happen.

## Additional features

- **Slack - more concise responses**: The Slack agent now gives shorter, more focused answers.
- **Slack - display names in suggestions**: Suggestion dropdowns in the Slack integration now show real names instead of IDs.

## Notable bug fixes and improvements

- Fixed a crash that could occur when switching between the proposed changes tab and Studio navigation.
- Resolved an issue where agent responses could show duplicate or stacked content in the chat.
- Single questions without follow-up no longer retain context from previous conversations.
- The Slack integration now correctly displays error messages instead of failing silently.
- Canceling an agent response while it&#x27;s still generating no longer produces error messages.
</Release>

<Release version="5.20.0" date="April 7, 2026" published="2026-04-07T11:53:53.270Z" url="https://www.sanity.io/docs/changelog/studio-NS4xOS4w">
## Sanity Studio v5.20.0: Fixes array field visibility, comment input flashing, and fallback media for unpublished documents

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.

## 🐛 Notable bugfixes and improvements

- Fixes IDE autocomplete for the `type` property in `defineField` when used inside `defineType`’s `fields` array. Previously, autocomplete suggestions were only available when `defineField` was used standalone (thanks [@codythatsme](https://github.com/codythatsme)).
- Fixes issue where array item previews would render incorrectly when the array was deeply nested inside another array using grid layout.
- Fixes issue causing the comment input to flash when authoring a comment inside a Portable Text field.
- Fixes issue causing fallback media to be displayed when a field references a document with no published version.
- Fixes an issue where array fields could disappear after expanding their containing pane, if the array field had its **Add item** button disabled (e.g. via `disableActions`).
</Release>

<Release version="2.17.0" date="April 3, 2026" published="2026-04-03T22:54:41.672Z" url="https://www.sanity.io/docs/changelog/8c095b96-d8ec-464d-8dc8-1248127ff97e">
## MCP server v2.17.0: New whoami tool, read_docs improvements, and bug fixes

## New Features

- `whoami`** **tool: Check which user is currently authenticated and their authentication method.

## Improvements

- `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.
- System prompt: Improved instructions for the `discard_drafts` tool and reduced overall prompt size.
</Release>

<Release version="5.19.0" date="April 1, 2026" published="2026-04-01T10:15:27.272Z" url="https://www.sanity.io/docs/changelog/studio-NS4xOC4w">
## Sanity Studio v5.19.0: New Sanity feedback option inside the studio and assorted bug fixes

This update includes a new feedback mechanism, assorted fixes, and improvements to the CLI.

## You can now send feedback to Sanity directly from Studio

![The new ](https://media.releases.sh/cdn-cgi/image/width=1200,quality=80,format=auto/sources/sanity-changelog/a0b6d5bdf44b0877.png)
You can now provide Sanity feedback directly from your studio by opening the “Help and Resources” menu and picking send feedback!

## 🐛 Notable bugfixes and improvements

- CLI: Use `app.title` from config in SDK app HTML title.
- CLI: Add `--url` flag and unattended mode support for `sanity deploy`.
- CLI: Fix dataset alias passing `apiName` over `displayName` to input validation.
- CLI: Fix `--help` flag resolving singular topic aliases.
- CLI: Prompt for dataset when not provided during import.
- CLI: Non-interactive login now shows actionable error messages.
- CLI: Remove `--legacy-peer-deps` from npm install during init.
- Fixes an issue where document list items in `CommandList` were not clickable on initial render if the mouse was already positioned over the list.
- Fixes an issue where tasks could be created in the original dataset instead of the add-on dataset when both the document and the task were open at the same time.
- Fixes an issue where zero width whitespace characters at the end of strings would cause Visual Editing overlays to fail to show in Presentation Tool.
- Fixes an issue where publishing anonymous versions (like those created by Content Agent) when a draft also exists would cause the draft to publish instead.
- Fixes an issue where icons that were provided with initial value templates were not being shown in template pickers in the Studio.
- When pasting into a document, read-only fields are now preserved instead of being overwritten.
- Fixes an issue where `allowRelative: true` was ignored when the schema list excludes `http.`
- Fixes issue that could cause duplicating large content releases to time out.
</Release>

<Release version="2.16.0" date="March 31, 2026" published="2026-03-31T12:00:00.000Z" url="https://www.sanity.io/docs/changelog/18768932-2676-4550-b70d-b6f5de0a0221">
## MCP server v2.16.0: Content Releases tools and Figma Make CORS support

## New features

- `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.

## Improvements

- `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.
</Release>

<Release date="March 30, 2026" published="2026-03-30T16:08:41.210Z" url="https://www.sanity.io/docs/changelog/21ab5259-a705-443f-b3ba-c63284819de8">
## Sanity Docs: New docs for GROQ support, Sanity client, Next.js, system requirements, and content agents

Here&#x27;s a roundup of new and revamped documentation, plus a small improvement to the docs site itself.

## New and updated docs

### GROQ feature support reference

GROQ behaves differently depending on where you run it. [A new reference page](https://www.sanity.io/docs/content-lake/groq-feature-support-by-context) 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&#x27;re working in.

### Getting started with `@sanity/client`

The [@sanity/client documentation](https://www.sanity.io/docs/apis-and-sdks/js-client-getting-started) 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.

### New Next.js section and updated guides

Next.js now has its own [dedicated section in the docs](https://www.sanity.io/docs/nextjs/introduction), making it easier to find framework-specific guidance in one place. The [App Router visual editing guide](https://www.sanity.io/docs/visual-editing/visual-editing-with-next-js-app-router) has also been refreshed to make it easier for you, and your AI coding agents, to set up Visual Editing.

### Studio system requirements

A [new system requirements page](https://www.sanity.io/docs/studio/system-requirements) documents the minimum and recommended Node.js versions, supported browsers, and other environment requirements for running Sanity Studio.

### The Content Agent ecosystem grows

New docs are available for [Content Agent for Slack](https://www.sanity.io/docs/content-agent/content-agent-for-slack), the [Content Agent API](https://www.sanity.io/docs/apis-and-sdks/content-agent-api), and [Dataset Embeddings](https://www.sanity.io/docs/content-lake/dataset-embeddings). Check out the [announcements](https://www.sanity.io/blog/content-agent-meet-slack) for more details on these features.

## Docs platform improvements

### Cross-section link affordances

![Screenshot of docs sidebar showing sub-section names](https://media.releases.sh/cdn-cgi/image/width=1200,quality=80,format=auto/sources/sanity-changelog/c99389021bae7e24.png)
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&#x27;re about to leave the current section.
</Release>

<Release date="March 24, 2026" published="2026-03-24T16:32:28.761Z" url="https://www.sanity.io/docs/changelog/c903be1c-eeb0-4f49-a4b9-782994bf4f4c">
## Content Agent: File uploads, custom instructions, and additional improvements

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.

## File uploads

![A white UI card titled ](https://media.releases.sh/cdn-cgi/image/width=1200,quality=80,format=auto/sources/sanity-changelog/d5147716b11b8ad4.png)
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.

## Custom instructions

![Content Agent ](https://media.releases.sh/cdn-cgi/image/width=1200,quality=80,format=auto/sources/sanity-changelog/8e6dd0981810d710.png)
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: Manage &gt; Organization &gt; Settings &gt; Content Agent
- User: Dashboard &gt; Account settings &gt; Content Agent

Organization-level instructions apply to all users in the organization. User-level instructions apply to your conversations only.

## Merge proposed changes into an existing release

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.

## Content Agent API and Slack integration

In case you missed it, we now offer a ways to interact with Content Agent through and [HTTP API](https://www.sanity.io/docs/apis-and-sdks/content-agent-api) and a [Slack integration](https://www.sanity.io/docs/content-agent/content-agent-for-slack). Check out the [blog post for details on the Slack integration.](https://www.sanity.io/blog/content-agent-meet-slack)

## Additional features

- **Better context in long conversations: **The agent no longer loses track of earlier messages during extended sessions. Context from earlier in the thread is preserved automatically, even in long conversations.
- **Smoother response streaming: **Agent responses now stream smoothly as they arrive.

## Notable bug fixes

- Fixed an issue where the agent could get stuck in a loop, repeating itself or producing inaccurate results during multi-step tasks.
- Chat input now clears correctly after sending a message from the widget or welcome screen.
- Fixed a connection error that could prevent proposed changes from loading in self-hosted Studios.
</Release>

<Release version="5.18.0" date="March 24, 2026" published="2026-03-24T16:19:15.512Z" url="https://www.sanity.io/docs/changelog/studio-NS4xNy4x">
## Sanity Studio v5.18.0: Fixes Next.js session management and multiple bugfixes and improvements

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.

## 🐛 Notable bugfixes and improvements

- Adds a workaround for a bug where session was not persisted across reloads in studios embedded in Next.js, and would result in an error message  `Session with sid (…) not found`.
- Reduces number of requests with tag `sanity.studio.history-revision`  after editing documents.
- Restores the behavior where asset sources receive the current asset in `selectedAssets` when opened via the browse flow, even when the field already has a value.
- Fixes an issue causing authentication to not persist between page reloads in Next.js.
- Fixes an issue where the `@mention` dropdown in comments might show “*No users found”* when any `system.group` document had `members: null`.
- Fixes virtualization issues using the dialog and `renderDefault`.

## CLI bugfixes and improvements

- The `debug`** **command has an improved output format and can now be run outside a project.
- `init` has improve flags.
- Many commands now has plural names, with aliases for the singular versions.
- Deprecated `start` command. Use `preview` instead.
- Adds support for non-interactive mode for app templates.
- Load all env vars for schema extract.
- Prevent duplicate deprecation warnings during `sanity deploy`.
- Schema extract path always appends `schema.json`.
- Fixes an issue where import command required `--token` flag.
</Release>

<Release version="2.15.1" date="March 22, 2026" published="2026-03-22T12:00:00.000Z" url="https://www.sanity.io/docs/changelog/8a22eb23-e860-4be1-8a80-33214971c815">
## MCP server v2.15.1: General stability improvements

## Fixes

- **Reliability.** General stability improvements.
</Release>

<Release version="5.17.1" date="March 17, 2026" published="2026-03-17T19:10:49.725Z" url="https://www.sanity.io/docs/changelog/studio-NS4xNy4w">
## Sanity Studio v5.17.1: Fixes crash when importing from Sanity in CLI and Node tools

This release fixes a crash issue that could occur when importing from Sanity in the CLI and other Node-based tools.
</Release>

<Release version="5.17.0" date="March 17, 2026" published="2026-03-17T16:05:38.673Z" url="https://www.sanity.io/docs/changelog/studio-NS4xNi4w">
## Sanity Studio v5.17.0: New null/undefined sorting control, additional fixes, and improvements

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.

## Add ability to control undefined/null sorting

[Sort orderings](https://www.sanity.io/docs/studio/sort-orders) now supports a `nulls` option to control where null/undefined values appear in results.

Defaults are unchanged and still:

- `desc` -&gt; nulls first
- `asc` -&gt; nulls last

```
defineType({
  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.

## 🐛 Notable bugfixes and improvements

- Makes tags inputs wider and fixes a Firefox crop issue.
- Fixes a bug where file asset sources that didn’t have upload capabilities were listed in the drag-to-drop asset source target menu.
- Fixes an issue where writing in the hour input in the date time input would require double pressing of numbers to get double digit numbers (1 - 1 - 2 to get 12, for example).
- Divergence management (beta): this release includes the beta version of divergence management, which shows editors where changes have occurred outside a document version or draft since it was created. The purpose of this tool is to help prevent editors accidentally publishing outdated versions. Divergence management (beta) can be switched on by setting the workspace `advancedVersionControl.enabled` configuration to `true`. More details and documentation will be published as this tool matures.
</Release>

<Release date="March 16, 2026" published="2026-03-16T13:53:26.635Z" url="https://www.sanity.io/docs/changelog/2452de5d-25c1-408d-9fa9-dd2e45b818de">
## Sanity Connect for Shopify: Shopify "unlisted" products stay published

[Sanity Connect](https://www.sanity.io/docs/sanity-connect-for-shopify-reference) 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&#x27;s [**unlisted**](https://changelog.shopify.com/posts/new-unlisted-product-status-1) 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.
</Release>

<Release version="5.16.0" date="March 14, 2026" published="2026-03-14T04:09:17.634Z" url="https://www.sanity.io/docs/changelog/studio-NS4xNS4w">
## Sanity Studio v5.16.0: Important CLI bugfixes

This release fixes critical issues in the CLI related to deployed schema shapes, configuration path resolution, and MCP editor setup.

## 🐛 Notable bugfixes and improvements

- Fixes an issue where deployed schemas used incorrect shapes
- Fixes an issue where running `sanity debug` outside of a project context would fail
- Fixes tsconfig paths not respected in the sanity config
- Fixes some issues in MCP token creation
- Silences some warnings when importing datasets during project creation
- Bumps `react`+`react-dom` to latest versions on new installs
- Fixes an issue where studio redirecting you to a workspace would not preserve search and hash params
</Release>

<Release version="2.15.0" date="March 13, 2026" published="2026-03-13T12:00:00.000Z" url="https://www.sanity.io/docs/changelog/8408a1da-31b3-43f9-865c-8ef2c3d94d5d">
## MCP server v2.15.0: Better authentication error handling and schema validation improvements

## Fixes

- **Authentication.** Better handling of invalid or revoked tokens, helping MCP clients manage re-authentication.
- **Schema validation.** Improved handling of invalid schemas.
- **Error messages.** API errors now surface more actionable messages to agents, including re-authentication instructions and upgrade links.
</Release>

<Release version="5.15.0" date="March 12, 2026" published="2026-03-12T21:08:26.780Z" url="https://www.sanity.io/docs/changelog/studio-NS4xNC4x">
## Sanity Studio v5.15.0: Upgrade CLI tool, annotation, form field, and releases improvements

## New CLI (@sanity/cli upgrade)

The Sanity CLI has undergone a big behind-the-scenes overhaul. If you were previously running the CLI package directly, you&#x27;ll want to switch to using `sanity` for all commands. In addition, there are some new fixes and improvements.

- **Dataset embeddings commands**: New commands to [configure embeddings for datasets](https://www.sanity.io/docs/content-lake/dataset-embeddings).
- **Global --project-id and --dataset flags**: Run commands outside a project directory without needing a sanity.cli.ts config.
- **Non-interactive environment detection**: Prompts detect CI/pipeline environments automatically, preventing hangs in automated workflows.
- **SDK templates are ESM by default**: New projects created via sanity init use ESM.
- Improved MCP setup process.
- **Bugfix**: Boolean flags no longer get confused with commands that have positional arguments.
- **Bugfix**: GraphQL and certain other commands now support Vite aliases.
- **Bugfix**: Strict flag parsing means unknown flags now produce an error instead of being silently ignored (for example, a --datset foo typo now errors instead of doing nothing).

## Studio fixes

- **Annotation popover fix**: The Portable Text annotation toolbar popover now appears on the first click instead of requiring two clicks (regression fix).
- **Form field column alignment**: Using options.columns now aligns fields to the top instead of the bottom, fixing an issue where opening a long field would push adjacent columns out of view.
- **Releases overview on mobile**: Improved layout and navigation for viewing releases on mobile screens.
- **Releases nav menu fix**: Links in the release nav menu now work consistently when navigating from the releases overview or drafts.
</Release>

<Pagination page="1" total-pages="3" total-items="55" next="https://releases.sh/sanity/sanity-changelog.md?page=2" />
