Sanity logosanity.ioAll Systems Operational© Sanity 2026
Change Site Theme
Sanity logo

Documentation

    • Overview
    • Platform introduction
    • Next.js quickstart
    • Nuxt.js quickstart
    • Astro quickstart
    • React Router quickstart
    • Studio quickstart
    • Build with AI
    • Content Lake
    • Functions
    • APIs and SDKs
    • Agent Actions
    • Visual Editing
    • Blueprints
    • Platform management
    • Dashboard
    • Studio
    • Canvas
    • Media Library
    • App SDK
    • Content Agent
    • HTTP API
    • CLI
    • Libraries
    • Specifications
    • Changelog
    • User guides
    • Developer guides
    • Courses and certifications
    • Join the community
    • Templates
Help articles
Overview

  • Array items resolve to same JSON type
  • Studio Performance Issues Caused by legacy HTTP protocols
  • Error: Value of type "object" is not allowed in this array field
  • AVIF
  • Experimental feature: Spaces
  • Client API CDN configuration
  • Total attribute count exceeds limit
  • Desk is now Structure
  • Invalid configuration for cross dataset reference
  • Missing or duplicate context error
  • Sanity Studio v2 is deprecated
  • React Compiler and Sanity
  • Specify API version for studio client
  • Why give schema types a title?
  • Array type has a invalid value for property "of"
  • React 19 and Sanity
  • Schema: Lift anonymous object types
  • Reference type has a invalid value for property "to"
  • Incorrect location for reference options
  • Invalid part syntax
  • Asset metadata field
  • Warning: userStore.currentUser is deprecated
  • CLI errors
  • Renamed plugin sanity-plugin-vision
  • Part name format
  • Array member type name is the same as a global type
  • Changes in block schema customization properties
  • How to migrate from date to richDate
  • Invalid shape of predefined choices
  • JS Client: Promise Polyfill
  • Introducing the document type
  • Unable to get a ref to an input component
  • Authenticating the CLI when running remotely
  • Outdated modules
  • Upgrade studio packages
  • Block Content rendering: Image materializing
  • Structure: Document schema type required
  • Parts: Declare vs implement
  • Incorrect options declaration in reference
  • Block type cannot be used outside of array
  • Structure: Node ID required
  • Structure: List items must be an array
  • Installing Node.js
  • Structure: Action or intent required
  • Object type has a invalid value for fields
  • `studioHost` and `externalStudioHost` properties deprecated
  • Schema type is ES Module but imported through require
  • Structure: Invalid list item
  • Structure: Query provided where filter is expected
  • Structure: List item IDs must be unique
  • Given type name is a reserved type
  • Structure: Schema type not found
  • API versioning
  • Migrating the legacy webhook behavior to GROQ-powered Webhooks
  • Schema type is invalid
  • Input component is missing a required prop
  • Structure: Title is required
  • Structure: Filter is required
  • Import: Asset file does not exist
  • Input component is missing a required method
  • Implementing non-overridable part
  • Structure: Item returned no child
  • How to migrate your block text schema for the new definition of inline objects
  • Structure: Schema type is required
  • How to migrate from blocks spans to block children
  • Array type cannot contain array member
  • Using tokens in the browser
  • GraphQL
  • Array member type name conflicts with built-in type
  • Source vs. compiled paths
  • Import: Asset has different target than source
  • Using global studio client without specifying API version
  • Structure: Action and intent are mutually exclusive
  • Upgrade React
  • Plugin is missing a sanity.json file
  • Structure: Document ID required
  • Incompatible combination of params and filter
  • Using listener with tokens is not supported in browsers
  • Schema type is missing a required property
  • API versioning in Javascript Client
  • Upgrade version of studio package
  • Slug: `slugifyFn` renamed
  • Renamed plugin @sanity/date-input
  • Specify API version when using custom document list filters
  • Migration Cheat Sheet: Studio v2 to v3
  • Migrating from Studio v2
  • Function Timeout
  • Functions rate limit
  • Configure TypeGen
  • Studio v3 to v4
  • Email addresses show [email protection]

On this page

Previous

Migration Cheat Sheet: Studio v2 to v3

Next

Function Timeout

Was this page helpful?

On this page

  • Migration resources
  • Migration overview
  • Migrating Sanity Studio projects
  • Plugin authors
  • Content creators
  • Sanity Studio v2 End of Life
Help articlesLast updated January 9, 2026

Migrating from Studio v2

Learn how to migrate Sanity Studio from v2 to v3

Sanity Studio v3 provides exceptional flexibility and an unparalleled developer experience so you can create a content system to fit your business. To create the new studio customization framework, we conducted a major rewrite of Sanity Studio’s API surfaces and application architecture. It was not possible to create Studio v3 without introducing breaking changes from Studio v2. We do our very best to avoid breaking changes and are proud to have maintained Studio v2 since October 2020.

Migration resources

Below is a high-level overview of what you need to consider migrating from Studio v2 to v3. You can also look at the following resources:

  • Migration Cheat Sheet: Snippets and quick look-up of common configuration and customizations

Migration overview

The points below should give you a quick sense of the work that’s involved in migrating from Studio v2 to v3.

Migrating Sanity Studio projects

The amount of work depends on how much customization you have done that relies on importing Parts and other studio dependencies.

  • Remove the following deprecated packages from package.json:
    • @sanity/base
    • @sanity/core
    • @sanity/default-layout
    • @sanity/default-login
    • @sanity/desk-tool
  • Install the sanity@latest package from npm
  • Upgrade the following dependencies if you have them
    • "@sanity/ui": "^1"
    • "react": "^18.2.0"
    • "react-dom": "^18.2.0"
  • Move and adapt your Studio configuration from sanity.json to sanity.config.js
  • Replace any import X from part:X statement with new public Studio APIs
  • Move custom components to the new components property in the Schema API
  • Update any plugin you use to the new version that supports Studio v3

Plugin authors

  • You’ll need to port the configuration for your plugin from sanity.json to the new Plugin API
  • replace any import X from "part:X" statement over to the new public Studio APIs
  • Distribute the plugin on npm
  • Verify the plugin package with our plugin tooling

Content creators

Sanity Studio v3 doesn't introduce any breaking changes to the editing experience, only improvements, like better global search. As a content creator, you should expect your workflows to be the same.

Sanity Studio v2 End of Life

We will continue to fix critical bugs in Studio v2 until the end of standard support on December 7th, 2023. You can set up and configure Studio v3 in parallel to your current production Studio running on a previous version.

The Content Lake data store and associated APIs that host and distribute content created from the Sanity Studio have not been changed and are not impacted by the aforementioned changes.