---
name: Sanity Studio
slug: sanity-studio
type: github
source_url: https://github.com/sanity-io/sanity
changelog_url: https://github.com/sanity-io/sanity/blob/HEAD/CHANGELOG.md
organization: Sanity
organization_slug: sanity
total_releases: 101
latest_version: v5.21.0
latest_date: 2026-04-15
last_updated: 2026-04-19
tracking_since: 2025-02-20
canonical: https://releases.sh/sanity/sanity-studio
organization_url: https://releases.sh/sanity
---

<Summary type="rolling" window-days="90" release-count="22">
Studio shipped steady maintenance and refinement over the past three months. Type inference improvements preserved autocomplete for `defineField` inside `defineType`, while the release duplication system gained version tagging to better track content lineage. Performance fixes addressed excessive recomputing tied to form state and prevented unnecessary divergence navigator context emissions, keeping the editor responsive at scale.
</Summary>

<Summary type="monthly" period="March 2026" release-count="8">
Studio focused on stability and operational efficiency throughout March. Fixed excessive recomputing tied to form state and resolved a lodash-es import issue that broke certain configurations. Task parameters persisted across sessions, and the dashboard icon rendering was corrected. Dependency updates to the CLI and portable text libraries rounded out the month's incremental improvements.
</Summary>

<Release version="v5.21.0" date="April 15, 2026" published="2026-04-15T14:51:59.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.21.0">
# Sanity Studio v5.21.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4yMC4w](https://www.sanity.io/changelog/studio-NS4yMC4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
squiggler-app[bot] | chore(deps): update playwright monorepo to v1.59.1 (#12659) | 48644a14dc53d2ee973f846ece97cc89e025dcc5
@bjoerge | chore(e2e): comment with report link on main if e2e tests fail (#12668) | da30657c3e06e30194907ae715dec292f1728a21
@bjoerge | chore(ci): deploy playwright e2e reports to vercel (#12666) | d12f242fadabd0e319a5117e3a245a89a81204ea
squiggler-app[bot] | chore(deps): update vitest monorepo to ^4.1.4 (#12661) | 05811c3bff3a4154a644120b6cf58fd16538acdf
squiggler-app[bot] | chore(deps): update davelosert/vitest-coverage-report-action action to v2.11.2 (#12656) | c592ee951bc88e4709142fa01c661046fcc4b0fb
squiggler-app[bot] | chore(deps): pin sanity-labs/mark-issues-done-action action to 88e6a3e (#12654) | bbb67c3fadb07916c9ae99082914721fa5d15215
squiggler-app[bot] | chore(deps): update dependency @sanity/migrate to ^6.1.1 (#12655) | 86c7190382e1acf655904de326a35d2718ad00b5
squiggler-app[bot] | chore(tests): generate dts tests 🤖 ✨ (#12653) | 3f960c8a424a95ec9ce2a9ac8ab34b54de95ff81
squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#12652) | a2f091fd7f9534027fd50c2c2c49eced478585e9
squiggler-app[bot] | fix(deps): update dependency @sanity/preview-url-secret to ^4.0.5 (#12648) | 7e432c9e5eab8dbc66345bfc19853275d94a4f74
squiggler-app[bot] | chore(deps): update dependency esbuild to v0.28.0 (#12623) | 18552d3b2068315799a7b9b14f075a4edf5054b6
@dcilke | feat(sanity): add mutation performance and document rebase telemetry (#12634) | 70bed9c86204677e945d47e0a88b178b37b6e4a7
squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#12638) | d45d9c2766c744108cc04fef3460bf00182c80e9
squiggler-app[bot] | chore(deps): update dependency @sanity/pkg-utils to ^10.4.15 (#12649) | 384622d8fac4bea9de3cfa58d30b9ac729dc958e
squiggler-app[bot] | fix(deps): update dependency @sanity/cli to ^6.3.2 (#12650) | 6f318527caf37a722d0c936b5a3addc7953701dd
squiggler-app[bot] | chore(deps): update dependency @sanity/visual-editing-csm to ^3.0.7 (#12643) | 809abd49ee9c75b8c210b9b9acdd9320b5941ac5
squiggler-app[bot] | chore(tests): generate dts tests 🤖 ✨ (#12645) | a26182becff931ae13639e61b8f671993771f3a5
@bjoerge | test(e2e): add data-testid to error screens and auto-detect in e2e tests (#12619) | 965a0417470c5da4460335392a03fdf2cb8ff375
@bjoerge | chore(dev): add dedicated auth test studio (#12635) | 06557fe740918085f948b4bd3973de8d508d692c
squiggler-app[bot] | chore(deps): update dependency @sanity/pkg-utils to ^10.4.14 (#12639) | 7b9c0a7f52995ff8bfa6026d042b2a94c8302deb
Copilot | refactor(sanity): remove shared ResizeObserver pattern and @juggle/resize-observer polyfill (#12640) | 426b3f3c8bab153c7b49d1e64316752c9614aeb1
Copilot | chore(deps): update @sanity/sdk, @sanity/message-protocol, and @sanity/insert-menu (#12642) | f63d4723d14747e3f952a63f3272cbb48995ffec
@skogsmaskin | fix(form): position reference autocomplete popovers in portaled dialogs (#12633) | e8358978231f9c6b53ce2ed1833f26ffc4f7a60d
squiggler-app[bot] | fix(deps): Update portabletext (#12622) | e48cf963fe142660a13c8846569dc6de00a6c412
squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#12632) | a420cf58d0d4ca55af6cab401bb46d0070b378cc
@ChrisLaRocque | fix(structure): always show plus icon in pane header create button (#12600) | 8283f9702de36172d58a660728fea9080b15491a
@jordanl17 | fix(i18n): graceful fallback for invalid locale component tags in Translate (#12630) | c6fd86491b485c6ea856a18b55c88a69933bf0d8
squiggler-app[bot] | fix(deps): update dependency @sanity/client to ^7.21.0 (#12631) | 28033ef1e15b8ea37061023cc49301f1fd25bd40
@rexxars | feat(vision): groq syntax highlighting (#12594) | 95a1dcee4f388be8c5d6212d118986e1e1742abc
squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#12621) | 7392687e9f1cd5adf701cfac5875fa1b65cf05fc
squiggler-app[bot] | chore(tests): generate dts tests 🤖 ✨ (#12615) | 75834e8336129ff15b77931d997d884608843aac
@jordanl17 | fix(document): resolving copying document id on live edit schema type (#12604) | 9b87ed11cdd70d88add0fcd4c5d6ec9d424ae3b4
squiggler-app[bot] | chore(deps): update dependency @sanity/pkg-utils to ^10.4.13 (#12613) | 0dee84ba96a3c16bc2802c3fa90b244106ee427a
squiggler-app[bot] | fix(deps): update dependency @sanity/client to ^7.20.0 (#12614) | 578f30555a589b38a555ef73310fff14590a36fb
@dcilke | fix(schema): convert missing descriptor properties and expand test coverage (#12607) | b89b88f0a8e46914f967da43ae5d6ff7d8d91792
@juice49 | feat(sanity): allow form gutter to be switched on or off for individual subtrees (#12616) | d4e97c1afe5e76dd035e81144812b484d9dedccf
@juice49 | feat(sanity): do not override divergence enabled state in nested `DocumentPaneProvider` (#12616) | c3bdf2a01055d9b189b772fb99a27024afca9e3e
@juice49 | fix(sanity): switch off divergences for entire inspector subtree (#12616) | 6105bbf9e4597f14c132141e66729e7cdafe7f61
@pedrobonamin | fix(structure): allow text selection in validation panel error cards (#12611) | b572c65379f13863ca9b509af99e46fa2b190a54
@RitaDias | refactor(core): decouple FeedbackDialog and useFeedback from studio context (#12606) | 4c4907d9372e0384d5f47fa586e39921651f43c0
@jordanl17 | fix(releases): preserve search input focus when filtering yields no results (#12608) | a758cbe6b9be0fd59ffb8780f69dd7699383466f
@juice49 | fix(sanity): use "added" and "removed" diffs in divergence inspector (#12598) | 58c0803d1af703f43324b04672223f6319d3bde0
@binoy14 | chore(deps): replace execa with node:child_process in perf tests (#12570) | 847d09fce6783de166163fb2f79c9bae0876b423
@kbrabrand | fix(schema): support extracting object type without fields (#12605) | ea7980663fcdb60b8457118bcb35486b60a7307e
@jordanl17 | fix(releases): resolving issues with navigation between scheduled drafts and releases (#12602) | 6d3855c13f605358427ca7655f67221cf57bc543
@jordanl17 | fix(structure): validate persisted sort order against schema before applying (#12589) | 8c0b013d36b5cf4daad07a61db1ab667d31041d9
@juice49 | fix(sanity): scope popover modal focus trapping to owner pane (#12542) | c91a0e3569046c23853af328af28459e1d2efd2a
@annez | docs(telemetry): add comprehensive telemetry system documentation (#12512) | e3d060f17f4d91d6f50235a14bc6e270169cf413
@juice49 | feat(sanity): add `onActiveChanged` and `onTargetDocumentsChanged` hooks to diff view state (#12584) | a053bb43432e601e37bafa77fa62d7652018d215
@juice49 | chore(sanity): add telemetry to diff view (#12584) | 2e13821afc485f7717c0a11934e80a5d4792706f
@jordanl17 | fix(structure): support array index access in custom sort orderings (#12591) | 2aba6014362eb95598bdc5b129def58a375d90b6
@EoinFalconer | fix(form): handle periods in array item keys when parsing paths (#12110) | f295c2c362316fced7ac60065f23ca48e1109fa0
squiggler-app[bot] | chore(deps): update dependency oxfmt to ^0.44.0 (#12592) | ffd9d665a840cb639ec5538e75980f310ccb5014
@pedrobonamin | fix(structure): incoming references inspector show loading state (#12596) | f4d13bbbb2c609911fe89ca09204019977070440
@rexxars | fix(sanity): support runtime staging flag for auto-updating deploys (#12563) | 61cc6a162ab0b8ca23b2c60e34f5fc1a1a709230
@binoy14 | chore(deps): replace globby with tinyglobby (#12571) | 29e85014d8eba048545b01fd23967b41e6a33a98
@jordanl17 | ci: prevent cancelled runs from blocking auto-merge (#12585) | fe4c60978710880e0fc8d878cc89e9b5c5a32f5c
  

</Release>

<Release version="v5.20.0" date="April 7, 2026" published="2026-04-07T12:49:22.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.20.0">
# Sanity Studio v5.20.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xOS4w](https://www.sanity.io/changelog/studio-NS4xOS4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#12583) | 449f40cb987a05c3e3438f67f59db4507db844f7
@codythatsme | fix(types): preserve type autocomplete for defineField inside defineType (#12576) | d566c31254a4d1d13d905eff0912be445ed69ac6
squiggler-app[bot] | chore(deps): update dependency lodash-es to ^4.18.1 (#12582) | e855996bca64d6262fd12791f6a82087066eb18d
@jordanl17 | fix(form): add deeply nested array preview types and integrate into schema (#12489) | 35af7f5669f3acd86360f99ca268046b2f82e1fd
@pedrobonamin | feat(core): adds useProjectOrganizationData hook (#12539) | f180ebfc15cdfa4b582cd8a8a8ec1fd4c6d58942
squiggler-app[bot] | chore(deps): update rexxars/bundle-stats digest to 1bc291f (#12569) | 48a5609d007a5d7c6b3d2558a807555305c25d1f
@binoy14 | ci(renovate): inline reusable workflow to fix access error (#12567) | 95a9bca6b829fe9b3c46eb132a72fa2556765a78
@binoy14 | ci: use main branch for action (#12566) | bbd13044f229f4ebed83defdac463e85e8a522a6
@binoy14 | ci(renovate): add self-hosted renovate bot workflow (#12565) | 111f86e66a139ae557967fcf312685f2ea1f05cd
@juice49 | fix(sanity): inline comment input re-animate on every value change (#12564) | fa34c76df4342e5292799297c7debd66f3ab0f7a
@juice49 | fix(sanity): add missing perspective when calling `observeDocumentTypeFromId` for references (#12561) | 80e57e96f82e6aea329785ca1749dfe0ee791a7f
@bjoerge | chore(ci): expand and clarify release PR description (#12562) | 611e177ebc0ff5a64cbe8ea81c314222cf265469
@juice49 | fix(sanity): array input with no `ArrayFunctions` vanishing after pane expansion (#12559) | d7c56cd693fcc72fe15ccd2ea0dc25b8273c8d3b
@juice49 | feat(test-studio): add example array with no `ArrayFunctions` (#12559) | 4da66bcb228c87961caf9097e660c44cd8dd7ca6
  

</Release>

<Release version="v5.19.0" date="April 1, 2026" published="2026-04-01T14:22:09.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.19.0">
# Sanity Studio v5.19.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xOC4w](https://www.sanity.io/changelog/studio-NS4xOC4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
@pedrobonamin | chore: replace deprecated placement in menuButton for popover.placement (#12421) | 867cccb78868375c4e4913d2f442cc8946683deb
@juice49 | feat(sanity): tag version creation request during release duplication (#12554) | 5b90d9a72eda977f390002f8e64e65fdb73015fb
@juice49 | refactor(sanity): pass only document id when duplicating release (#12554) | 8f01554d4b65a5b4f15595ef6701acad48d26af8
@bjoerge | test(e2e): remove unnecessary Firefox skips from PTE fullscreen tests (#12552) | 70eca290f131bd9b2fdaa59f0c313c78ff583c07
@bjoerge | chore(ci): bump renovate nodeMaxMemory to 2.5GB (#12555) | 63fb9e3b2ed8c5c2266accac4cd0cbc712d87851
@bjoerge | chore(ci): bump renovate nodeMaxMemory to 2GB (#12553) | fa002f6d61d7a63c5eee49842acab52ffdc86aab
@binoy14 | fix(deps): update @sanity/cli to v6.3.1 (#12546) | 27690b458c5dda5589d1b99a4e09e0631315a6e9
@bjoerge | chore(ci): change nodeMaxMemory from string to number (#12550) | c06062a5c9a1018e33d29ec207988c93beb2f95f
@bjoerge | chore(ci): set renovate nodeMaxMemory to 1GB (#12548) | 0d380fa7461755a5a41faba9d46865b73c3802bb
renovate[bot] | chore(deps): update dependency oxfmt to ^0.43.0 (#12450) | e374c45088b8b46a040fd173644356cc5b438a1d
@binoy14 | chore(deps): bump GitHub Actions dependencies to latest versions (#12544) | 91b49930f4f1ffec106b78b087b2afdfc151c97f
@binoy14 | chore(ci): add renovate concurrency limits (#12545) | fd39d6fa0f366d3c0de64862cccecabc61ad7b58
renovate[bot] | chore(deps): update davelosert/vitest-coverage-report-action digest to bd52af5 (#12535) | 02f819750798d682d52eae3ac6bb0cbeda421b22
@christianhg | fix(deps): update @portabletext packages to latest versions (#12538) | 6095f0d2a05615e986c89914bef071bec1eda77f
@binoy14 | fix(deps): update @sanity/cli to v6.3.0 (#12537) | 19761674059e9d977c8bc80f66aab26381c95fb9
@RitaDias | feat: add feedbackDialog and sendFeedback methods (#12497) | 0477e2527979552a7949d441ee95318b8e807e37
@RitaDias | refactor: always send error reporting to sentry, always strip PII (#12534) | 4b2dc940b4d6b6c767006eab4f0c29067e7a0300
@Chrilleweb | fix(sanity): log deprecation warning once (#12526) | abc296dc90d7ec7d9218248c70850eec0ec0ec4c
@bjoerge | feat(telemetry): track auth store timings (#12529) | 468ff0bc547f5eab8e080f903e2f101c02f5ecac
@bjoerge | chore(telemetry): improve debug logging output (#12528) | 15943dde514e022f30b7e0cd49436eb2ad8d0361
@TiwariLokesh | fix(core): prevent PointerOverlayDiv from blocking clicks on initial render in CommandList (#12480) | 9ca91b5e53c6f6d6716f2076fc18124460ed9faf
@bjoerge | fix(auth): return stats from handleCallbackResult (#12522) | 9d4bd08efc477db2b43ae88071ed3d23798574d7
@pedrobonamin | fix(structure): add empty state to incoming refs inspector (#12524) | 0add49d8583112ae7b3c4bc28f9bd20fbff01e23
@pedrobonamin | fix(core): prevent task form operations from leaking into the main workspace store (#12523) | 54399547923c650ee256a2c93fbaec029f39c25c
@stipsan | fix(deps): bump misc sanity packages (#12470) | 5c56d11297184275ebd874a47955c3a506d29602
@bjoerge | ci(e2e): optimize Playwright CI workflows (#12519) | e5c05b0a66274d8eb32c3ff068664f00972a4896
renovate[bot] | chore(deps): update davelosert/vitest-coverage-report-action digest to 2500daf (#12516) | 89b7d7e98920e47622854adeb92df6d2d8dd404f
@bjoerge | test(e2e): replace waitForSelector and waitForTimeout with locator APIs (#12510) | fc5c7f392c32d795a632af973d413596a04d2d3b
@bjoerge | chore(ci): replace lerna with release-notes bump command (#12513) | 6171d67faaf213faabfd6dea3f038b869ba0ddf2
@pedrobonamin | fix(core): publishing anonymous versions (#12514) | a1c9e4b8bd9cd93ab2b276f9a642aad31b65e92c
renovate[bot] | chore(deps): pin dorny/paths-filter action to fbd0ab8 (#12515) | 5aee0d5c3fa386d088b19992d8c764ad1d6c3643
@jordanl17 | fix: show initial value template icons in new document pickers (#12508) | 990a3c4a90e99747c081af6f4689a035b7437e68
renovate[bot] | chore(deps): update pnpm to v10.32.1 (#12453) | d14c754edaa6ad33f91eacd17a18ea82d22c7157
renovate[bot] | chore(deps): update dependency knip to ^5.88.1 (#12449) | 3d05c77b13411d39d8076336a6db0fe52af72b43
@jordanl17 | fix: pasting a document into a schema with read-only fields will exclude those fields from paste (#12488) | 500e41315c1c792c0235a3f12e6b4450bc504c83
@jordanl17 | fix(validation): allow relative URLs when scheme excludes http (#12486) | d5c2b1ca31014526cf1178c34443879131bd9452
@markmichon | fix(release-notes): unset releaseAutomation before publishing content release (#12505) | 3643a207ca7eeae788c8d90d1ddf9dcbb377c94c
renovate[bot] | chore(deps): update actions/create-github-app-token action to v3 (#12455) | 0c59a220a922daeb37e77b0ee0bf4fb31da6f4f9
@bjoerge | chore(e2e): fix test timeouts and remove unnecessary test.slow() calls (#12499) | b6f04803b9edf6ba6ad3c606ac79d898c2df5edf
  

</Release>

<Release version="v5.18.0" date="March 24, 2026" published="2026-03-24T16:46:17.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.18.0">
# Sanity Studio v5.18.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xNy4x](https://www.sanity.io/changelog/studio-NS4xNy4x)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
renovate[bot] | fix(deps): update dependency @sanity/cli to ^6.2.1 (#12503) | 276b1d08eb0b093ac9b2fbe3341ed4e6a2c6fed4
squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#12504) | 94ff7a577a1c57fbbe457c530baf096295aae52c
@pedrobonamin | fix(core): getDocumentAtRevision prefer revision match (#12495) | e65a28e4f5043b73a970fec064ceead7c6c98d25
@skogsmaskin | fix(form): unsubscribe dataset uploader streams on abort (#12500) | c886920863d10a57ef21846d36c4ea4177e9b88c
@bjoerge | fix(auth): workaround Next.js replaceState bug (#12498) | 00644f5a36b4b40acca63d1e42d4d19f39d932f4
@bjoerge | chore(agents): add more agent skills (#12496) | e9f037f5afd5b6bf3feae79ea0f0f8390e2d4d65
@juice49 | refactor(sanity): encapsulate enabled state in `DivergencesProvider` (#12491) | 69db3898cf6c93d4635b10a1582bcb0b59a5eb8c
@juice49 | fix(sanity): add missing `DivergencesProvider` to task form (#12491) | 96953742cf68c7d2aafcd70c32ef9c9dff209359
@pedrobonamin | fix(core): deprecate `useTimeLineStore`,  use events store to get deleted document (#12481) | 9e36cda2a41944c198ada537378f8600149e2a18
@skogsmaskin | fix(form): pass selectedAssets to asset sources (#12479) | eb77f48a9ce28a7146826b58ffec3c2699b716eb
@bjoerge | chore(ci): skip CI for non-code changes and consolidate required status checks (#12493) | 124f28e2ad598595a21c9edc113cd11b16331fd9
@jordanl17 | ci: fixing issue with older issues not being detected on auto-close stale issue workflow (#12485) | dfe6dec38b52397c3d7a6bf5c6a45b1d8c3b72b1
@bjoerge | fix(core): fix false positive Node.js runtime detection in Next.js (#12490) | 29239c35943657761a58e9026692a2bc8ab59013
squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#12471) | 55a76c2d639466908478ea85f5571fd5f1cdd6cc
renovate[bot] | fix(deps): update dependency @sanity/cli to ^6.2.0 (#12474) | 3ef420188e2b7cd8c1961a2fb6d0e8147b136e74
@pedrobonamin | chore(structure): remove sheetList (#12477) | 89f40a8af71542562e5e5d9bd8422fb0848b033c
@bjoerge | test(sanity): don't use debug logging telemetry store when running tests (#12475) | 8fd251a27c3c31ffbb863846d50603022e1536c3
@RitaDias | fix: virtualization issues using the dialog and renderDefaults (#12398) | b5c0733a01d9d1b115b0c0e659cda4efe11d2c47
renovate[bot] | fix(deps): update dependency @sanity/cli to ^6.1.8 (#12457) | 4cfc7ac9beb52b762751cb04afa02d1e6fbc4830
@bjoerge | feat(core): add support for pre-auth telemetry event buffering (#12469) | 3e655518f4d17da8c6c9947673e526594c83528a
renovate[bot] | chore(deps): update dependency @sanity/telemetry to ^0.9.0 (#12468) | 687d7c100c242b86e44aade7097e4a3dbfa1fbc6
@TiwariLokesh | fix(core): prevent crash when group.members is null (#12463) | e2f5c2156e668c0b9553d09deffb96d3aaa41cf5
@bjoerge | chore(ci): fix vercel env issue (#12466) | e54cfbdf6e97204f7769a891dcac137312f8fd05
@binoy14 | chore(release-notes): preserve PR/issue reference links in Renovate changelog items (#12460) | bfdc67a4200a6b5a57b55acb59b31b83c1e54a30
@bjoerge | chore(e2e): tidy up e2e workflow and run with isolated datasets in main (#12462) | ff6d693228dd24eac85b1ad52d0bb973b191402a
@rexxars | test(e2e): improve stability (#12461) | b07accd10be80e81317723a6556d191048a8860d
@bjoerge | test(e2e): add retrying to reference select dropdown (#12458) | b1fc88e03d3b3d1363385f5df24471c04325cbdc
renovate[bot] | chore(deps): update playwright monorepo to v1.58.2 (#12452) | be96dffcc7c1b8efdc5d30dad76c49211433f971
@pedrobonamin | chore(core): removes create plugin (#12422) | e18770736d2a033e3989c504254f1e00862b360b
renovate[bot] | chore(deps): pin rexxars/bundle-stats action to 8a203eb (#12446) | 327030b067cdfe6ff2596df40373121cac671edf
squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#12442) | 108e2dfc9512b51080f877f518462d11240fbfcc
  

</Release>

<Release version="v5.17.1" date="March 17, 2026" published="2026-03-17T19:22:33.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.17.1">
# Sanity Studio v5.17.1

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xNy4w](https://www.sanity.io/changelog/studio-NS4xNy4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
@rexxars | fix: incorrect lodash-es import (#12444) | c89b7bfc5d703001acf447267e1be893ec7de6b0
renovate[bot] | chore(deps): update portabletext (#12385) | 87a7fa648876e646d13309a7e2e6522e3676db14
  

</Release>

<Release version="v5.17.0" date="March 17, 2026" published="2026-03-17T18:32:15.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.17.0">
# Sanity Studio v5.17.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xNi4w](https://www.sanity.io/changelog/studio-NS4xNi4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to ^10.4.10 (#12430) | 05af6b6219f5d1e444fed83b4efe29b91d515c1b
@juice49 | fix(sanity): excessive recomputing based on `formState` (#12440) | 26cff4f77a3ba9dd04deb3023439d85f91d56e0c
@juice49 | fix(sanity): do not emit divergence navigator context if not switched on (#12440) | 34774763252af93aa0090d885a0a652c9fcb1f6f
@bjoerge | chore(ci): fix release note exclusion, add --dryRun flag (#12437) | 73529c55052871a99b6fb2b68ee3e9dd4b891a85
@pedrobonamin | fix(core): make tags input wider, fixes firefox crop issue (#12438) | 3acbd9a452c721c01a629f15eeb534696f2e6639
@rexxars | test(e2e): fix flaky validation test clicks in Firefox (#12416) | 4d14809737eaea601fea0a6fbafc1fc2350a54f3
@skogsmaskin | fix(form): filter asset sources by upload capability in file upload target (#12434) | 083bfc7a5767eea8dbdebbf4d41ab09252bc6e39
renovate[bot] | chore(deps): update dependency esbuild to v0.27.4 (#12419) | fb6e1fa2e2500ac91487573cacad6074c01a0d2c
@juice49 | fix(sanity): expose object path segment directly (#12316) | 218201910eda6abeb9fe7a948f9bef394763e226
@juice49 | feat(sanity): add `isArrayOfStringsSchemaType` type guard (#12316) | fd7e777ee9ccb9ac3620e4e58b06c23ebbc5cc9f
@juice49 | feat(sanity): add CSS anchor names to inputs (#12316) | 05dc683c3b153326c92290e78c8fe163a21cc9cd
@juice49 | feat(sanity): move `emptyValuesByType` and export it (#12316) | 0a594e85539caa14c744ed5c4ad8d0d66dbb4605
@juice49 | feat(sanity): add `path` property to field members (#12316) | 544500ee19b64be96ea94d61ceef0fac1d1e5323
@juice49 | feat(sanity): add `readOnly` property to field members (#12316) | e84b477c82fa7c3239c8b9f3a353c1a597d62ca3
@juice49 | feat(sanity): add `schemaType` property to field members (#12316) | ab423edf0e2fd39dc1f0e9bdd181c78b5955fab7
@juice49 | fix(studio): check whether inserted array item present in subject version (#12316) | 1a73760a998fc8f09ced7b60fa4bf81e8297a9ef
@juice49 | feat(sanity): include document id in divergence resolution marker (#12316) | bb3d45aed75c988477f309b276f1046a2d9c8d30
@juice49 | feat(sanity): move divergence metadata to `_systemDivergences` field (#12316) | 3bdcf819b1c74c9ef39fb6d94448787afd472969
@juice49 | feat(sanity): export divergence types (#12316) | f46aae64e5a3fea557b48258e224470fe2fedf60
@juice49 | feat(sanity): omit divergences in unkeyed objects (#12316) | 3fdbca81d61f061709e51f7f5fad5fa233d509c0
@juice49 | feat(sanity): patch creators for acting on divergences (#12316) | 08a7c7b589df626c3039a0f99e6e11faa0e54bc5
@juice49 | feat(sanity): when collating divergences, accept `undefined` ids, and add `upstreamId` to result (#12316) | d3d178c276c5b569354f2182b5273da199c0a669
@juice49 | feat(sanity): add collated divergences exports (#12316) | 2ea9d73136b4bd7c8e836550e658bcc91be999da
@juice49 | feat(sanity): functions for navigating divergences in the context of a schema type (#12316) | d42f2a652fb61e3f4466dabeb2bbc97ad1ce3ee8
@juice49 | feat(sanity): divergence reporting, inspection, and resolution UI (#12316) | 52895b364fabc1fdc049fa33e8e341c8049c5a79
@juice49 | feat(test-studio): switch on Advanced Version Control (#12316) | 042b8ee3eb558eab6d35945f6b2127efd81ac9af
renovate[bot] | chore(deps): update dependency @sanity/ui to ^3.1.14 (#12425) | 87f357ce8deda89c5d92140bd27e2ba36674cda8
squiggler-ent[bot] | chore(deps): dedupe pnpm-lock.yaml (#12423) | 404c4559e91b8ecd9a643b043fc01620ed717d9d
@bjoerge | feat(schema): add ability to control undefined/null sorting (#12367) | d5f6875ffdc01d146f4cb35142ea39c558d9fbf4
@juice49 | fix(sanity): loosen `@sanity/types` workspace version constraint (#12429) | 3534755c28fc94fdd944fde61acdf2c4c832b529
@juice49 | fix(sanity): remove `@sanity/types` workspace override (#12432) | c978cca75a4bb8fdae84ddcbdfd772be53fd817e
@RitaDias | fix: fix issue with Calendar on typing (#12399) | b58159bb701d0a85f9bd2502257df1d5c49fc521
@bjoerge | chore(ci): fix issue with generating a string as release notes (#12435) | dd6a1f4ff30b475bd3ba9ebb7dcbbc66e6a87360
  

</Release>

<Release version="v5.16.0" date="March 14, 2026" published="2026-03-14T04:17:04.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.16.0">
# Sanity Studio v5.16.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xNS4w](https://www.sanity.io/changelog/studio-NS4xNS4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
@rexxars | fix(deps): update dependency @sanity/cli to ^6.1.5 (#12417) | 4a5f72a8c72f5acb465bfeee836c482d304e3921
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to ^10.4.9 (#12412) | 92c7c1d307cd66380a1dfe8c3550a5f4db6e3633
renovate[bot] | fix(deps): update dependency @sanity/cli to ^6.1.4 (#12414) | b60724f257766cd1661f2d1501eb12605bf6462d
@binoy14 | chore(release-notes): strip version and section headers from Renovate changelog output (#12413) | 1036cdca08a9a67a7280fb42b9f362023542e10c
renovate[bot] | fix(deps): update dependency @sanity/cli to ^6.1.3 (#12405) | 0a995b41bcc1cd6f3243e90d24f1bc8a182cbcf0
@rexxars | test(e2e): fix flaky custom release actions test on overview page (#12392) | 55e6d9db43460e1b5b301a85a742ce3826056c6a
@binoy14 | chore: update body for cli release PR (#12411) | d484c237cb996faf234cc27580da2e3a61678714
@rexxars | test(efps): check asset existence before uploading (#12410) | 1b699d78753ff4eb0bf11a25e25705ba2c12ecda
@binoy14 | chore(release-notes): parse Renovate bot release notes for allowed packages (#12408) | fe5bb55e8b4c6b49ec4298f3c62c1188b6e5ee1d
squiggler-ent[bot] | chore(deps): dedupe pnpm-lock.yaml (#12409) | 444d37c67b727e4a1a750de406079f6d101bbd2f
@Chrilleweb | fix: updated i18next dependency (#12397) | 914e9a46b02682a82e3b722a51e654e7a6b61027
@bjoerge | chore(ci): remove vitest --changed in CI for now (#12407) | c767ee4c1de3c86d43647473473d93efb5a3b446
@binoy14 | chore(ci): use correct template variable for renovate CLI release notes (#12406) | 298eb91f2c4fd1904d7d4d6372523cde1db13fa2
@juice49 | feat(sanity): cache recent shared transactions (#12404) | c4f26d48ffb2bf58647bc42e81141be34bd7154b
@juice49 | feat(sanity): add `introspectSchema` (#12257) | 92f7c729f5fefb5386676ee8b2937839e002a1c9
@rexxars | chore(deps): add @sanity/cli to renovate auto-approve list (#12391) | fe1ba0ea64e44ffd9635b8c4fe529699e9fbfefe
@bjoerge | test(sanity): update exports snapshot (#12403) | 7f142d467156d31f8b17316c93035468ac83e715
@bjoerge | chore(sanity): add critical path load time telemetry (#12373) | 5adfcc30365fa93ee35cda8152e5567fd09e564d
@binoy14 | chore(ci): add release notes to renovate PRs for @sanity/cli (#12401) | 22a369be26ca8bfd8eb5bd6f32fdf2e3fef1dcbb
@RostiMelk | fix(sanity): use project hostname for agent bundles SSE endpoint (#12400) | ba90d60ece9b44f2cc0077291278b758bd0d8b83
@kenjonespizza | feat: update telegram recipe function (#10721) | 280293431b343a7c57222066d02444e79599c37b
@joshuaellis | fix(core): forward search & hash params when redirecting to a workspace (#12378) | f40913909976b93f35e288b1da16fefb7fa9da7a
renovate[bot] | fix(deps): update dependency @sanity/bifur-client to v1 (#12386) | a2ebd5d51900b3924e7bc73a87f35388101fc349
@rexxars | fix: prevent bare imports from appearing in random chunks (#12390) | 4c51af4e299196e70ff3d09fdc6233ded5e219d9
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to ^10.4.8 (#12380) | 24769b3bec21b0ce1c3fa797ec1102e29d4c6677
renovate[bot] | fix(deps): update dependency @sanity/client to ^7.17.0 (#12381) | cf3e972d1dc0d12cc99cb665ee971675b691a3bf
renovate[bot] | chore(deps): update dependency @sanity/migrate to v6 (#12388) | 31dcc31b858ebb4ea89434c4d2a14a0420e40b39
renovate[bot] | fix(deps): update dependency groq-js to ^1.29.0 (#12384) | d230b6aeaadccd58befd53d776ad2935d32f63f8
  

</Release>

<Release version="v5.15.0" date="March 12, 2026" published="2026-03-12T21:14:30.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.15.0">
# Sanity Studio v5.15.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xNC4x](https://www.sanity.io/changelog/studio-NS4xNC4x)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
@rexxars | fix: upgrade `@sanity/cli` to 6.1.0 (#12387) | d9d2619ec734ad49e2f07283d8a286289a652267
@macdonst | fix: update function examples (#12382) | 7ec6fb0221b946e14b73a4a1fbf7909dfe9eacc4
@rexxars | test: reduce unit test noise (#12371) | ad848e98f887018917fbc99e55c4a903b15722c2
@binoy14 | fix(deps): move dev-only packages from dependencies to devDependencies (#12383) | 50e35a5b4577f5043d090cb5f6cc1ac0fbb4ddcb
@binoy14 | chore(deps): updates rimraf to v6 (#12379) | 842dc148be495b5227d440c29f11ab17e6b229c6
@christianhg | fix(portable-text): show annotation popover on first click (#12377) | 08801fad3fae6cbccb5a2cc97145a0adeda9641d
@joshuaellis | chore(workflows): update mark issues as done action (#12375) | 8c2aa796af8d08ae7ae50a33cd700c4be02ffa15
@jordanl17 | fix(releases): releases overview on mobile (#12343) | a925f7bff6b2503af2fe8a305a8a59ddca060a95
@RitaDias | fix: make sure that columns in formFields are aligned to the top (#12357) | 8a06dc619c943b52525ea24055eac8dfcef08513
@bjoerge | chore(release-notes): include full commit messages in github release (#12374) | 837478bcdb6a6a5cf2836e26cce943ae368f4f6a
@RitaDias | fix: navigation on releases menu when in the releases plugin (#12354) | b004d821d643d7a202eb96d404ffa5036dd757b8
@bjoerge | chore: log telemetry events to devtools console (#12372) | 1539edb7355662b437ff23cc53e5eddf116f0f47
@rexxars | ci: include shard number in workflow name (#12370) | 5e22d2bf512aa1498482f2d3a0da79618bb30941
@rexxars | feat: upgrade to new `@sanity/cli` (#12200) | 902075d3a4567223745988ab706a6009a86419b7
  

</Release>

<Release version="v5.14.1" date="March 10, 2026" published="2026-03-10T18:49:31.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.14.1">
# Sanity Studio v5.14.1

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xNC4w](https://www.sanity.io/changelog/studio-NS4xNC4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
@binoy14 | issue with icons not showing up in dashboard (#12364) | 834e6cabb60096a231f73f71b44c407b06699916
@jordanl17 | update rendering logic to exclude "Estimated" for archived releases and improve readability (#12359) | 12d210738c6c7d204ac1bd4b6f482135afe67f61
  

</Release>

<Release version="v5.14.0" date="March 10, 2026" published="2026-03-10T14:49:37.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.14.0">
# Sanity Studio v5.14.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xMy4w](https://www.sanity.io/changelog/studio-NS4xMy4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
@pedrobonamin | make tasks params sticky (#12362) | 1684787d34c0018166dd3c9a5b1f8e15f3c24e56
@RostiMelk | remove SANITY_STUDIO_AGENT_API_HOST env override (#12361) | ec150bd597b929b64994b471f15e5c1b2d3eb3ca
@RitaDias | update snapshot (#12360) | 4a071ddbf3c3b4d2709d44d521f009fff3ace1d0
@RostiMelk | disable delete action for agent bundle versions (#12334) | 446069880842f68fa0cabd47752920eff693a10b
@RostiMelk | show agent bundles as Proposed changes and hide others (#12329) | a321edcce169b0434b22a6a07003edb6d1dbf054
@RitaDias | fix export tests, remove unnecessary export (#12355) | 29945ffa9f2fe7842216861c8b375e1a4598ccea
@RitaDias | add warnings when element is not valid instead of crashing studio (#12262) | 1786aca228c6364c88a0ed76b7eaad8a943fe919
@bjoerge | restore ability for `prepare()` to fallback to schema icon (#12352) | a70a385847d747d79531ec86c6858974dd793fb9
@joshuaellis | remove task specific params when closing sidebar (#12351) | 9cb4e0fd5504b1d72204b5b09a6c393492317163
@rexxars | dont use localStorage in node.js (#12350) | 3065abf2923093cef84d13f9594022e6a663f692
@RitaDias | improve comments and tasks mentions requests (#12250) | a3745872e074b624268fdb72b2b43f7e09024760
@jordanl17 | resolving issue where multiple scrollable containers show in the releases global nav menu (#12341) | d0efa8e1aca183aee421b255e2f15e697e05b625
@RitaDias | improvements to document pane provider (presence + move contexts) (#12335) | 93f2a107a6783b3b937234d0917f8fea6bfe0e86
Copilot | add missing type declarations and tsconfigs for type checking readiness (#12324) | 7393ed159ba07aa4a6884f7259e4198dc7f035bc
@rexxars | denoise test suite console output (#12333) | 46d1d9306211484495d9f5b2c420431e515a2353
@juice49 | `FormRow` exports snapshots (#12342) | 187ccf19fb56d2dc4a9fa0507bc5540fcd5e22bb
@jordanl17 | Share release details more easily (#12260) | df3acf12ca428da33e968aca1ece1b68ad620b6f
@bjoerge | Improved crop/hotspot details (#12325) | 0147f183e24db290010cec5ae8b1c886803c3063
@juice49 | document editor gutter layout (#12227) | 5326f8af86d8bf299c0fc52eccd1fcf08df1f84f
@pedrobonamin | enable i18n array perf tests (#12327) | 31d2d85e35e37da8080179dbd4fda7f7b531f0a2
@bjoerge | mock fromEvent modules in ReleaseSummary test (#12337) | f473e793081c1f0344d79bb9078c42c433d7f433
@christianhg | remove noisy hotkeys stability warning (#12336) | b30439e8cdac2dc6ba1577b09cd96e8f712573a1
@skogsmaskin | streamline assetsource handling and testing (#12233) | 72457f934f700eb123fdd216dc8efc690766141e
@bjoerge | fix crash when calling `operation.delete.execute()` without versions argument (#12321) | 544be5099b382320d032622f8771d3320e3cb735
@rexxars | add guidance for running single test files (#12332) | 45d322149f7b00a661fcd08ec41e3cbc0b6b9120
@juice49 | debarrel `CopyPasteProvider` imports (#12331) | 8e76c618f26df69e25986f756e1423041af2c03a
@juice49 | use shared test wrapper (#12331) | 896b9cf49e9baa02c961db64814c91e76374d7f4
@christianhg | use @portabletext/html for HTML deserialization (#12320) | 608d1d40ebf7b139a3a2f2ae4e3df0ebe6f4e4b8
@pedrobonamin | add array-i18n perf test (#12322) | 2d5a9eb628aecd5d7dc50ef6e1a66f22524ce9e2
renovate[bot] | update dependency @sanity/import to ^4.1.3 (#12294) | 3acb03de0fe9aab96c369c40f83dd2bef74c0b2c
@jordanl17 | coreUi intent links need to use exact full path (#12279) | 289119aa88e570e204f79d2c31b5fafae062b78d
@jordanl17 | unique keys in nested structures when duplicating/copying (#12264) | 2bc463013574a6de70cc9c620326cebcdf96225c
@pedrobonamin | render group validation for nested fields (#12309) | 5791448bbd3dc8cb1db9ccc916b9c1ad7de004f8
squiggler-ent[bot] | dedupe pnpm-lock.yaml (#12315) | da5b2672cab6b8df1d83d3aa7c82e38087e0e39d
renovate[bot] | update dependency @sanity/export to ^6.1.0 (#12299) | aed508a383cef378ba3cae7f03aae53bcdd90ad1
@hyldmo | use yarn up for Yarn 2+ (Berry) when auto-upgrading (#12301) | 9a6046f67e6e7afaaa4f56d72900e1373d73e5d1
@rexxars | move and improve manifest extraction to `@sanity/schema` (#12302) | e0837eb9b935720b63fee37f453e16efcdc47a1d
renovate[bot] | update dependency @sanity/codegen to ^5.10.1 (#12272) | 5451bfda49935d1b38407b8eeaa032f4541fe3cb
@jordanl17 | make bundle stats check non-blocking to CI (#12314) | 5d4b6cc37b142c79c6ee30bbb5546b4145a84ed4
@juice49 | ensure dedicated `ReferenceFieldDiff` is used when diffing cross dataset references (#12307) | cb30c213171cb7c2ac883bc3cfe86a249f099414
@bjoerge | enable hmr for design-studio (#12306) | b516d7e77f67b5fd73823bdb5bd8337e3a8464af
@bjoerge | support resumability for document editing (#11198) | 879bab88e6afa6fa8e0bd162b91004ddfd3796f2
@rexxars | set up bundle stats workflow (#12285) | 40b76b8cfddd045c72bf75726988c29dc668ff42
@RitaDias | add currentUser to validation context + fix hidden issue showing the wrong value on validation (#12221) | 9db645e03f859ad6b077f2c3e6d5e45a223b6628
@RitaDias | issue where cross dataset reference inputs in dialog were closing dialog (#12304) | 0e38d8e1e6b0fb72ecfa9fe2904df20b4cc5a42e
@RitaDias | make sure that inspectors stay atop enhancedobjectdialog (#12275) | 5d2caef021d4adae2a9bf4c143860f248bc79534
squiggler[bot] | dedupe pnpm-lock.yaml (#12305) | b7834e6387ff0c6ef5a64a2b4a09627ae94bb427
renovate[bot] | Update portabletext (#12295) | 152a8796a409f2dadef866d14c8af35f68111b7b
renovate[bot] | update dependency @sanity/pkg-utils to ^10.4.6 (#12296) | 40e272cf90c0caf7ac79daf4fb3cbffe281c6a5e
@bjoerge | split linting into separate jobs, and add knip (#12283) | bd4f129846aebbb5e6db762df7c5b8b10f4b9717
@RitaDias | add toast to alert for slow mutations after 50 seconds (avoid infinite hangs) (#12185) | 60a971880cc88ad666c535058aa70a58e337a09f
  

</Release>

<Release version="v5.13.0" date="March 3, 2026" published="2026-03-03T15:23:12.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.13.0">
# Sanity Studio v5.13.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xMi4w](https://www.sanity.io/changelog/studio-NS4xMi4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
Copilot | resolve CJS type export issue by removing groq.d.cts (#12293) | 9485b3c0f8fd7747b5645c504c0291586318f014
@christianhg | upgrade `@portabletext/block-tools` to 5.0.5 (#12287) | 773ee466ca7c48a77bc7a8bf6820d58316321604
squiggler[bot] | dedupe pnpm-lock.yaml (#12266) | 71604a6e57157c8e1fadb671cd61719a4ed7bd5c
@christianhg | upgrade @portabletext/* packages to v6 (#12278) | 501a6f3f0f214997fbd16afef09ea5558863ad4f
@bjoerge | replace PR-close cleanup with periodic dataset cleanup (#12289) | c07fa96934176c7b7e6351a434d636291d7f99db
@dcilke | dedup claims (#12288) | 0668c43a7a586339da7a54fdc07ddae5f39926bc
@bjoerge | fix all knip issues across the monorepo (#12225) | 1160a2bb45736c28824f0092b7ace9973b032f5d
@pedrobonamin | schedules tool title (#12280) | a0584254239596714daf1147bce28d92997f90a5
@pedrobonamin | ordering by multiple object fields (#12265) | 49a7a555e03215b795e3ea55600684642b54d2af
Copilot | update oxfmt to 0.36.0, pnpm to 10.30.3, remove experimental prefixes (#12282) | 0d3f45158f2dfbebd552effd22afbd8459bf28ae
@tbeseda | upgrade runtime-cli (#12286) | 2a06a2e2574a78dd0d5738fafbcd814511c1fc46
@juice49 | clarify release validation phrasing (#12284) | 845875b73d604c320e327f6437d647f9a20e7f88
@bjoerge | use timestamp instead of commit count in prerelease id (#12276) | e6329968f1f40d864a5ce4ea1664403167979c8c
@sjelfull | fix VideoInput loading bugs and layout shift (#12155) | c6b745db582d8cf4aab35ff794ba9f407db67cfa
@RitaDias | Primitive types now show a grid layout when the grid option is set (#12263) | 383e06eb6074a30e06750e52abeb394b45fb224e
@pedrobonamin | Updates fileAsset and imageAsset required fields (#12261) | 2de42c82d6a0e328e995fa20a07e980028e4e070
Copilot | upgrade @sanity/pkg-utils to resolve groq type export issue (#12277) | cfc9c83958870a9d373fae7436f335fca9ae2e01
@rexxars | defer import of `isomorphic-dompurify` (#12274) | da8354c77287472f290c82a3af89e0fc4270c50a
@rexxars | import `lodash-es` functions from subpaths, not barrel (#12269) | 22919522617f2e2c1180bf9f1d99201bec3d195c
@tbeseda | Updates to blueprints doctor and plan commands (#12258) | 64d162ee2832b4ef2ee72779c8c390a44f9cfbde
@jordanl17 | New interface to copy the document ID (#12238) | bc5a3b6cc78977a43ac526bca10d98898edb3469
@pedrobonamin | Improved reference preview for unknown fields (#12254) | a8d512d727c2a207347e7c12a3380526241e0015
@pedrobonamin | Improve visual distinction between release types in the Studio (#12239) | 526ebf544f193248de43b5c2cc6060886d9f1400
@juice49 | update transaction-fetching function types to indicate their response includes mutations (#12253) | b63a690df66f81a17fc0e3fe3ffbb1a475540779
@juice49 | add functions for unravelling document lineage and finding most recent transactions shared by two documents (#12253) | 4d3f71906db95dcd35b61f827c4c1384752b5b1e
@rexxars | optimize svg component for canvas integration (#12245) | 619933afbbd86cd6e981549558961f112fc56e4f
@pedrobonamin | update revert dialog position (#12255) | eb87d78c428d7d75c113714a63356523eda47b5b
@adoprog | update embeddings commands description (#12248) | 4934ac3aea3e78ae0d47046a30fbd9477057ce20
@RitaDias | add stages and change name (#12252) | 9ebde884fb4247f74b6732f17b3f9dec77f08e0b
@rexxars | upgrade @sanity/ui to ^3.1.13 (#12244) | 471c864bd4a34e4ec427b4760e5eb4d6c024f5af
@jordanl17 | Disable ability to add further items when at validation max limit (#12127) | 0e037a16a03ae2fed904fcfdd032b2e66f52e8da
@jordanl17 | Improved Studio experience when a release is not found (#12236) | 633ca45e1385c2a56a2187cd5e726686f14f2722
@rexxars | defer refractor language registration to first render (#12246) | 94301663ea8256cb9b15498df16f68b0893f18c5
@rexxars | retry npm failures, skip playwright report on retries (#12242) | cba81e62ec10826586d087aa6f3dce06f015fbec
@rexxars | import `date-fns` functions from subpaths, not barrel (#12247) | 144a2298a3e2c457463c9da23f2bdd8d02abad6a
@rexxars | lazily build ui theme (#12241) | b5a2abe6dc91cd924830ae2cd3de3efe00f3deff
@rexxars | fix e2e ui workflow (#12240) | dd3c8ad0c342f91c34de7d0e3e8f5c4d1cd96874
@SamHemingway | DocumentLocation now supports icon and showHref (#12048) | 74bb8853b2f3c2bf6d61577235411dd0a26812f5
  

</Release>

<Release version="v5.12.0" date="February 24, 2026" published="2026-02-24T18:33:55.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.12.0">
# Sanity Studio v5.12.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xMS4w](https://www.sanity.io/changelog/studio-NS4xMS4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
@RitaDias | add telemetry around the publish button state and time (#12189) | 50a46ed8c71950310a3c7afcad4e7f7e49268eda
squiggler[bot] | fix linter issues 🤖 ✨ (#12232) | 5614e988a10eed69f9860b8ea59e65baf5ed600c
@christianhg | move EditorChange type ownership from PTE to Studio (#12230) | 1990fdfa5015e0d0bf230fa66c6ab6728704a5f5
@bjoerge | remove @sanity/ui-workshop and all workshop files (#12224) | 9c4e8a189bd2075d80df3c10be51c4939161ce1e
@RitaDias | remove enhancedObjectDialog from config (#12231) | 5444de827663e1b00a3ccc7a93abe05c99fe0c0c
squiggler[bot] | dedupe pnpm-lock.yaml (#12228) | 456bfde9f846b66e0111a3062ac0030a60684cc3
@tbeseda | upgrade blueprints commands (#12226) | 245a07ff585caf4c63536c47f7dd468c5c01205a
@christianhg | prepare for PTE v6 render component types (#12216) | 8b228852b74a31fdf27e5ea0ad68fc90310ca9d0
@bjoerge | restore missing version mismatch warning (#12223) | 320b4ee691caf6c859e0056c40665d7b79b37441
renovate[bot] | update dependency styled-components to ^6.3.11 (#12222) | ae1bb42d884c0d315ef7675d845a044ce10c1edd
@RitaDias | navigation to root element having issues navigating completely out (#12204) | 15fb1a4b70fa6126979f36aab869601716244cf7
@adoprog | add commands for managing embeddings (#12212) | 759d47e7bf219eca7e0fb09b824ad1aadbc9a3bc
@bjoerge | use knip for depcheck (#12217) | 734cd00019628df50c2d1b2a6eb8e7bcc3df6b73
@bjoerge | skip lintPr workflow in main (#12219) | abf0d896feea186dc212940f91b404b9acadc0c3
@bjoerge | speed up preinstall by adding only-allow as workspace dependency (#12215) | 5855068d96277575ea72a0b08a18c4fdbfd87aad
@rexxars | fix missing `main` when comparing staged changes (#12209) | b67472342d1cf7b711a7f05b72c424019a7ef23a
renovate[bot] | update dependency @sanity/import to ^4.1.2 (#12208) | 2c7841db8e3a583832dcf49b0af9087a71eb236c
squiggler[bot] | dedupe pnpm-lock.yaml (#12213) | 7aa41fd277e8aa4cf5148008f547236d9beea009
@christianhg | prepare for PTE v6 EditorConfig and paste type changes (#12181) | e131d6a52b26a0a6cc4566803bbdd959aabc5999
@christianhg | bump @portabletext/sanity-bridge to ^2.0.2 (#12181) | 48ed32b532e197a6628dda66d84f6b490227ae21
@webpro | introduce knip & some initial housekeeping (#12154) | b2d2df2c8320fa6eb9537722908dd982554e9b70
renovate[bot] | Update portabletext (#12210) | d7294b9a1e3d51f37a4e7bd8a1121863ae81a13a
@jwoods02 | add Gemini, Codex and Copilot CLIs to MCP configure (#12194) | 093e7165e77bce80e11e59e7a98f58524d363e43
  

</Release>

<Release version="v5.11.0" date="February 19, 2026" published="2026-02-19T15:08:19.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.11.0">
# Sanity Studio v5.11.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS4xMC4w](https://www.sanity.io/changelog/studio-NS4xMC4w)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
squiggler[bot] | dedupe pnpm-lock.yaml (#12197) | c1df214dd2e969386d4fff6f427d8603aa169e3a
@bjoerge | fix release PR merged condition (#12207) | f510a3a53802d7d34a2ab5b6c3f791d7fd211d2a
@juice49 | publishing versions using `PublishAction` (#12202) | 3a068987ff5794d5f9a0bd402c927d38b56775fe
renovate[bot] | update dependency @sanity/codegen to ^5.9.3 (#12205) | 6c45dd4e4a991781bbf0316a72583116039d7c59
renovate[bot] | Update portabletext (#12199) | d5049742aea7ea4c313dbf1e28e9fe4a63a2b911
@RitaDias | add content to the breadcrumb instead of 'mark definitions' (#12175) | 85ccfb4108c6251e698aad644c4560bc62d76e57
renovate[bot] | update dependency @sanity/migrate to ^5.2.5 (#12196) | de4ae75626bacd90ddfcd3a7e58c4192e7da1557
@jordanl17 | updating exports.test snapshot with new getReleaseTitle method (#12198) | 2e63435665996feb442c3604697d4aa044f3d61a
@jordanl17 | truncating long release titles (#12148) | b2f4127dd6085843f260d04565f2a51cf494aec6
renovate[bot] | update portabletext (#12186) | 0c92bf1209282b7c9ca66f644f86e2da95ac63c5
@markmichon | export IncomingReferenceOptions (#12177) | d75c1f6ba53452401812165e7bced74ce687cc71
squiggler[bot] | dedupe pnpm-lock.yaml (#12184) | 9186a407048c92773ef07b9cdcb4da860f64fbdc
@juice49 | add `getExpandOperations` tests (#12187) | e806d864f773ee7a5929f57a3e082f350c19ed71
@juice49 | add demonstration of stega overlays failing to expand group inside object array member (#12187) | f2bbdf038074d5ee5d612f616f43a8d39a7a9e6e
@juice49 | set nested group correctly when expanding paths touching object array members (#12187) | 63233a268f044ea2220486fdf50ba4a1dcc3ab0e
@jordanl17 | hiding publish action always on the published document (#12176) | 68d74dfbfcb85e6f82f070071b8d375d9c7fb74f
renovate[bot] | update dependency groq-js to ^1.27.1 (#12180) | c8c7dea5a94a691dabb2f1549a2d494432d494f0
@jordanl17 | conditional multi schema references (#12066) | 7e7ea6d9520e9841ab2dd96e7d2cfe433b71ae5e
@drewlyton | mark linear issues as done on release (#12060) | 127726fd984dfb2c4b6ed59ab566b0e7856807f5
  

</Release>

<Release version="v5.10.0" date="February 17, 2026" published="2026-02-17T15:28:54.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.10.0">
# Sanity Studio v5.10.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS45LjA](https://www.sanity.io/changelog/studio-NS45LjA)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
renovate[bot] | Update portabletext to v6 (major) (#12164) | 225b965bfd2535a5d7cedc73269cb3beca3fc6b4
renovate[bot] | update dependency @portabletext/plugin-paste-link to v2 (#12161) | f396bacfedfcd714e49adee30545173708401176
@kbrabrand | don't make inline refs for references to top level doc types (#12168) | 7e490d905a01beb5c65319edfdb3a0a4eaa86068
@skogsmaskin | media library plugin upload existing asset issue (#12173) | 970f5c89a6fa6372f6395d3e426977e68e100999
squiggler[bot] | fix linter issues 🤖 ✨ (#12170) | 4ca34548bad24aca3390205a8bee19377f0a31f5
squiggler[bot] | dedupe pnpm-lock.yaml (#12169) | 91777f5b2c3b680d6d2e7274fd376e39d4fd643a
@kbrabrand | increase watch mode test timeout (#12171) | 2705b499d64d372369e72b225ee6b2d1276a08b1
renovate[bot] | Update portabletext to v5 (major) (#12162) | 5b9ba176818c4ec42ac21de306b2e4e0f011d22a
@jordanl17 | route scheduledDraft as pane param in comment links (#12156) | 4712d1eb69761ca4d9905eb00c443ce0d739ab22
renovate[bot] | update dependency @sanity/client to ^7.15.0 (#12167) | fe75d8437e83169e347551dcc30853698d44841e
@juice49 | migrate deprecated `motion` call to `motion.create` (#12166) | abbdf73a9b9d48ad1aa899cbf63581dd65bf6ea7
@kbrabrand | warn on doc type used as field type in array member too (#12165) | 94fa58373887b5ca49f376763b7432391579b641
@juice49 | add missing `_allMembers` type (#12158) | fd4df92f55bca0b6ca9a0a4d04de36cbaa2bc289
@juice49 | add `isArrayOfPrimitivesFormNode` (#12158) | 3ce4c46a5dd10067b2a8b65b5bc527c46bc16c2d
@juice49 | add `readOrderedFormMembers` (#12158) | a3969fc355fca6171618cc6440eded0ea9165161
squiggler[bot] | dedupe pnpm-lock.yaml (#12163) | 4574341421fd039d36aabc67b4da9f1e77fdf861
renovate[bot] | update dependency groq-js to ^1.27.0 (#12160) | ff50a1c1378bef2b8f8b92bfaa15fcc7cd17787d
@jordanl17 | tz dropdown opens as expected even if an existing selection is made (#12152) | 46dcb6232351f2fef3120f18e45464ae67d49af3
@kbrabrand | add warning when a document type is used for a field (#12151) | 8519d029c35a7419e944bfa61180de6a15e9a057
@bjoerge | include more details with error message (#12150) | b132a1e47016d2876dd0d87509b0353f8fb19ea2
@markmichon | remove migrate from typedoc (#12153) | 4ca316bd11ec93ed63f137e61026fbe0a15d4ba3
@jordanl17 | change on pte block (#12149) | bdad5d31df70332f39d15c45ea43c4b746f265bd
@jordanl17 | remove feedback components for tasks and comments (#12145) | 265f8b65f5cfc45d72bca9777d6b7aa8368a914c
@RitaDias | issue where clicking the "x" to close dialog or the breadcrumb to navigate would have issues when reopening Item (#12147) | d078259cc07c55754704b2418fe2f76546cf8045
@jordanl17 | scroll to field when navigating to a comment deeplink (#12144) | a3c282a4c92212ebbedd3111444bdccdda34a2c5
@kbrabrand | remove beta disclaimers for typegen/schema extraction (#12146) | eadd0a424601e0a0e216ae1888b3ca877b3caf22
@kmelve | add deployment documentation to function examples (#9759) | cec5bc9f38df01a8af96eac98a44ec8657383d90
@jordanl17 | implement fallback for asset sources without uploaders (#11907) | ec5de61c20a2332ec71399b797f3734770cda17b
@RitaDias | reduce LISTENER_RESET_DELAY from 10s to 5s (#12118) | 715d03649c4eff62af735f48d9eec3f4533b97d2
renovate[bot] | update dependency styled-components to ^6.3.9 (#12143) | f4747b44a6ade4ebbd1deb073ddc2632c2d49624
@jordanl17 | adding discord img to readme (#12140) | b189f016274aea56035f8bb439a1125f3a37214a
@nkgentile | fix root cause of undefined in perspective array (#12142) | ff4bcea247e2d92abc355982127e71cc48867fe6
@EoinFalconer | prevent erroneous upload warning when pasting plain text into PTE (#12109) | c76fcf10f3d345f69725b92288fbbde43063cb44
@EoinFalconer | reset asset source state after upload completes (#12111) | db94da8974a49ae5bb5937c1fe4991ffa23ee187
  

</Release>

<Release version="v5.9.0" date="February 10, 2026" published="2026-02-10T14:25:52.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.9.0">
# Sanity Studio v5.9.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS44LjE](https://www.sanity.io/changelog/studio-NS44LjE)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
squiggler[bot] | publish v5.9.0 (#12099) | a1365bd76f35f15cf730919c1ec394e3ca8ee71f
@jordanl17 | update permissions for pull requests in release-latest.yml (#12137) | bbadd3b5346890a43aa88ac6fe32735c9afaa9d3
@bjoerge | rollback v5.9.0 version bump (#12139) | 4195d269f400347fb16765400842f765eb1625ec
@pedrobonamin | stale publish actions (#12132) | b3b28182100f0cd32787425fc07618460fbb5bfb
@EoinFalconer | show toast when clipboard access is denied on copy (#12107) | 3aff99079fb57fdb9f8f7aed77a3f185106fe5d0
@jordanl17 | resolving re-render loop when collapsing comments (#12135) | 81a5cf87fbf55ef26ae12bc6d8f46b66fac43816
squiggler[bot] | dedupe pnpm-lock.yaml (#12133) | f8c09b7f9b24f6795e17596f74556efdda796e0e
renovate[bot] | update dependency @sanity/import to ^4.1.1 (#12130) | 6843d2b2d04b09ae27604912692ef3f96f15b5f4
@EoinFalconer | hide publish option for already-published scheduled drafts (#12113) | d3374ad116fa176c51addf91183f291226e9ad8e
@markmichon | fix typedoc upload step from skipping (#12106) | 10f477403e54049c77349d6a663719d418824e7a
renovate[bot] | Update portabletext (#12122) | 4a36591b187d554148ea811abcd141f150640808
@bjoerge | generate changelog draft on new commits in main (#12123) | 6eac21ba5830f8d6578883555999ab4278842021
@bjoerge | skip setting title when updating changelog document (#12126) | 3093a5b5fd13774c0e4ce1d6bf9fc087f5594d35
@jordanl17 | timezone cannot be changed when scheduling release of draft (#12124) | e0033fe32bc6d41566f179916d0e89a2d9076f54
squiggler[bot] | dedupe pnpm-lock.yaml (#12116) | cfd5482da82e82aba3c9341b298cdfebfc9b843b
renovate[bot] | Update portabletext (#12115) | 757aa3418d9c10b187d969b55308a44f1d17a454
@RitaDias | stabilise e2e (#12094) | 0dba8a30ec5afa6f78ee17215ce0c930c56e6692
@RitaDias | add hidden to validation context (#12050) | 26b665b540269d63a446bcfa361db5ddf0d561df
@RitaDias | add deprecated tag for enhnacedObjectdialog Beta Property (#12117) | 6241b1b2c0539f715a10fac1c20088e7c4b62c8d
@bjoerge | improve in-flight release check workflow names (#12103) | cd751ae9a5fe8c571c6227b166d049145677f2a4
renovate[bot] | update dependency esbuild to v0.27.3 (#12114) | 7a74582fe64cc4b0a647a62cecf71924875aa439
@kbrabrand | add schema extraction to dev and build commands (#11761) | c3a4cb19e11147ba91a832420fed13504e8b58a4
@kbrabrand | rewrite assertions to remove flake (#12089) | 68c9eb58a86dbf1f4d332c5d7bbcd8606f1de802
@pedrobonamin | add `defaultPanes` option to documents (#12039) | c670cbb372650768da6bc7324464f3af01e08e15
@stipsan | crash when switching to a perspective stack (#12102) | 77f86f0dc5eb8588482efea5466574128576afa7
@RitaDias | add warning for schema validation when an array contains multiple primitive types that resolve to same json type (#12095) | 31155be6dbf86faeb41b77cea27cf9c765961234
@bjoerge | fix error when updating status checks after merging release PR (#12098) | 478ff1d96b60fdfce4ae0c814c68c4defb5cc161
squiggler[bot] | dedupe pnpm-lock.yaml (#12074) | 6792119f3cf46e0892a02ef9ee8e79367f1c4038
@macdonst | update readLocalBlueprint signature (#12097) | 7a166946ce61e278eff9e83328a98aaf74b249b9
  

</Release>

<Release version="v5.8.1" date="February 5, 2026" published="2026-02-05T15:17:19.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.8.1">
# Sanity Studio v5.8.1

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS44LjA](https://www.sanity.io/changelog/studio-NS44LjA)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
@bjoerge | prevent input element ids from adding unsafe global variables (#12085) | 7a4041cd60808623ce13111699997ec9c0351e58
@stipsan | missing types in `sanity/structure` and `sanity/presentation` (#12083) | cef58129bb58119a3a6cde38f8da1d6e03ecdf76
renovate[bot] | update dependency @sanity/visual-editing-csm to ^3.0.5 (#12065) | eff9bd4f4c894cdc47e79dd236e38147a498c550
renovate[bot] | update react monorepo (#12030) | a11ed60efdc7fb7e1ae7e89248d443e7c099a5d8
@rexxars | use `Symbol.for` in validation field reference (#12093) | 8618f8476bbff6db439e1676fecd5c742315f3ad
renovate[bot] | update dependency @sanity/template-validator to v3 (#12092) | d88907264bf0ac667a89097299c41c83a257b12e
@jordanl17 | add workflow to close stale issues needing more info (#12015) | 936e9574e11cf7bdf17b159378af51db34b551a0
@bjoerge | publish github release instead of creating draft (#12081) | 4c883e64068902a6f4f7e55548d851c2ef511fa3
@rdunk | enforce explicit loginMethod configuration (#12077) | 8c4206d920df8ef785fcfff07621399936251864
Copilot | replace prettier with oxfmt for ~9x faster formatting (#12067) | a2c187ff7ae6db0f69bb2be0dc8e33ab29cafad6
renovate[bot] | update dependency @sanity/pkg-utils to ^10.4.4 (#12078) | d50c2813535b265f6e2b7365cf247d0f26a4193c
renovate[bot] | update dependency @sanity/template-validator to ^2.4.5 (#12076) | 6da793e90e421abeea39533dde344295c8b52ebf
@bjoerge | handle missing release PR, update check on release PR closed (#12080) | 4cc3de95582d94ab8fd63cac2bb789a995e0fe3d
@bjoerge | run oxfmt instead of prettier (#12082) | 4ae3ab64ce25b4f380ad4c67de99c2bbb52ae951
  

</Release>

<Release version="v5.8.0" date="February 4, 2026" published="2026-02-04T13:09:12.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.8.0">
# Sanity Studio v5.8.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/studio-NS43LjA](https://www.sanity.io/changelog/studio-NS43LjA)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog

Author | Message | Commit
------------ | ------------- | -------------
@sgulseth | use resource-config param to resolve GDRs+ML (#12075) | 9f35ba7c192f3e64a7d1b750f8d4ee5b17ec84b8
@bjoerge | report inflight-release-check as passed on release PR (#12073) | 5185f79feca00ded47f60182d4f876836981df89
renovate[bot] | update dependency @sanity/preview-url-secret to ^4.0.3 (#12069) | 2f0fef894499a80b8317b372ac333cddc329016f
@bjoerge | treat missing release notes as not excluded (#12072) | b21650ec2f2ea0643db1931baaf16346788707f2
renovate[bot] | update oxlint (#12071) | 748b0cf4d7c1df2a895f1c47bec21b89a9fa37ae
squiggler[bot] | dedupe pnpm-lock.yaml (#12070) | c863135c832dc9d1a4c2ea3645bad3724cf9d93b
renovate[bot] | update dependency @sanity/pkg-utils to ^10.4.3 (#12064) | 4440ee970d7e699ddc606ec89be8c7788e15b6d8
renovate[bot] | update dependency @sanity/insert-menu to v3.0.4 (#12068) | 7cee117d789b301c30d5659707079fd5ffca6f23
@annez | cache KeyValueStore by client instead of workspace (#11801) | ec70fa614451e2f11931ea43a40f8aff7be96215
@bjoerge | skip reminder if PR says no notes needed (#12057) | b55d6252aef65d3ac6b9f66708b71d2ecd5c0913
@dcilke | remove toggle.schema.upload-pause.disable (#12043) | 49cbe6320e9d2f2f37b8353ea30d458cc921f977
@dcilke | remove toggle.user-application.upload-live-manifest.disable' (#12043) | ad315bf40a23d6abc7dc5e20c7a86cf8afdac52d
@RitaDias | add close outside of dialog to close all dialogs (#12044) | 75a7b005c5875135ce2273e160b29c4c8b1aebef
@pedrobonamin | Incoming references virtualize lists (#12052) | b501245545b7b5343644d457ac1a06cb86b5a807
@kbrabrand | add typegen to dev and build commands (#11957) | dc6baaed2d132e3d1fd020f0871d929fb9a34a5c
@pedrobonamin | hide documents to be unpublished from link document list (#12055) | c0a5f506d58862417e8439405b321ce43508504f
squiggler[bot] | dedupe pnpm-lock.yaml (#12062) | 7c42b39eb44e27092f9e7709617f1974740e7927
@bjoerge | run unit tests in `@repo`-packages (#12056) | 77e6f9b457b1b6475c10463a934d3adca56f1157
@kbrabrand | add watch mode for typegen generate command (#11867) | c22e65eb958f98c47e2cdfc028618aa2fe512760
@bjoerge | re-use typedoc comment (#12058) | d7d3db5680eb1329ce18406a7f018e27df793190
@bjoerge | prepend new changelog entries (#12054) | 7c5540f6d8643a1aa1dc8dbbccdc79b76a05faea
@RitaDias | add selection state (indicators) to all menu items (actions etc.) (#12003) | 81ede798df314f160156da46e514f2e4e60e8c32
@bjoerge | preserve previous changelog entries (#12053) | e2b9922a1eb1a9c0dc29f1f012624903e9fc6609
@bjoerge | don't set team reviewers when creating release PR (#12053) | 68d8f112104963557c0e8745034be5481766aab3
renovate[bot] | update dependency @sanity/pkg-utils to ^10.4.2 (#12051) | 0279848724664154b5523f0184915acac301fe79
@bjoerge | block merge when release in progress (#12037) | edff29544ca711dbc8f3edb096f6c4c66d6a1fc6
@stipsan | optimize styled components when publishing to npm (#12047) | 550d11e8fec21a0fb950e0830ea95678dec38c20
@dcilke | support external studio undeploy (#12025) | 079e50238fe891cc7a09f283d35d9c4160587c1d
@dcilke | allow external studio deployments (#12025) | ce738b8ce60949b82aa02144293c7ea46bd1db78
@stipsan | remove skills for agents we don't use (#12046) | 54124cfab3382c7879caa258a3c00da686017050
renovate[bot] | update dependency @sanity/pkg-utils to ^10.4.1 (#12036) | e91c8779085ae8005cc253c311aa25273d013e47
@juice49 | `getDocumentAtRevision` error when no document found (#12042) | 4b8ca5d5d0c353d95785818eea3ec9a49283c2cf
renovate[bot] | update dependency prettier-plugin-packagejson to v3 (#12031) | 5b63655e522e790dbb203e96fcb7b43a24dcc40f
renovate[bot] | Update portabletext (#12032) | 0a871eccac41eecbd4e09a6e099e89622f052cab
@pedrobonamin | live editable document creation issue (#12034) | 7527a59050d877a040905127183026b2e8b76f36
@pedrobonamin | display incoming references (#10761) | e5a945bab4444077ef6e71a4b98b59f7250e6a02
squiggler[bot] | dedupe pnpm-lock.yaml (#12029) | 93fc3b747220d972ee3c009ef69ae2ee72fe65e4
@markmichon | add typedoc support (#11949) | f3de636268bdddd94e656094a106d5f25ee8c357
@jmswrnr | add media library internal config (#12009) | 394e2468154625a84914e66bf453a209f607fcd4
@christianhg | built-in PTE `pasteLink` plugin enabled by default (#12024) | 72a53b72be1b92feeb733adbe366d7c6d9285334
@bjoerge | improve release note PR comment (#12028) | c5582d071cb7599df31adcadcd181ed80ececa10
squiggler[bot] | dedupe pnpm-lock.yaml (#12027) | 8b0c6ddf33845bd2c5f615199e2b2c341b3ca296
renovate[bot] | update linters (#12017) | c47376441af5634052ca5e618975695f8ac38340
@pedrobonamin | add disableNew option for image fields (#12004) | 0e650d31b55d4a61bb02511626667b28f7497e47
renovate[bot] | update dependency @sanity/ui to ^3.1.11 (#12023) | d8dfb8ac7ea3561cbd46698e97ab100aa8b31e50
@bjoerge | add studio intents and routing example (#10414) | 4d5e9a77e54b7422922c6f54f1fde1ae001a7d8f
@bjoerge | set up changelog reminder comment for merged PRs (#12011) | de24f46429583ea0b93a0618221fa16959762d24
@bjoerge | use nbsp for edit link text (#12020) | bcd91fa1cc592a560b2cff0dbfa70bdfcaf2ade0
@bjoerge | import images from release notes section (#12001) | 46841149812fec7aede45873d696d37ef9d53e25
squiggler[bot] | dedupe pnpm-lock.yaml (#12014) | eff2f24fde48096107464ef307534fc45d53f260
renovate[bot] | update dependency @sanity/migrate to ^5.2.3 (#12013) | 31b54c8fe14cc8468fe2e279976976a5e6768b25
renovate[bot] | update oxlint (#12008) | 6dbedfe2eb2b84d721c89e3ff3ef8e66a6718ba7
@RitaDias | safari was requiring two clicks to be done on an array item before dialog would open (#11981) | 2060158cdd9985025aca17faf1ded551e34ef4e5
@bjoerge | automate release notes publishing (#11998) | 7bb598cbe68e1ac0166c6cfa5a4d694e955452c8
renovate[bot] | update pnpm to v10.28.2 (#12005) | 59e8624ba7bbe6f47578512db35f4131547d9a68
@stipsan | let us try some SKILLS 💾 (#12010) | e04948a2af603b0745c78110d82cd774b73c584f
@bjoerge | fix outdated lockfile (#12012) | 2e735a424da1f27a395cfb0f45d8ece86bfe02b6
@bjoerge | improve release workflow automation (#11989) | 160cd9d3c8dea83776dd0f3b3997774c03a28f7a
renovate[bot] | update vitest monorepo to ^4.0.18 (#12007) | c4cb96a2467e908c845f29f86b21b5e12da34ef9
@RitaDias | add chunking for observeFields (previews) as to avoid very large requests that hang requests (#11974) | e887b6b30428ba361f64f46fd5989bfd0634ec26
squiggler[bot] | dedupe pnpm-lock.yaml (#11999) | de0414991442789b1ee06f7335a6fefd98e15ee7
renovate[bot] | update dependency @sanity/pkg-utils to ^10.3.5 (#11996) | f193cb531e63b789f51a2c21afdd893920f6b7b9
@jordanl17 | Filter release documents by action and validity (#11980) | 0863e2fe2afd65b7599bcf4f10bd9a07547590be
@EoinFalconer | add core concepts guide for developers and agents (#11965) | c93bbfd9e934aa4eff03ad139dbbc9b513475747
@RitaDias | discard dialog show the correct document preview (#11992) | 76d2f0ffd6d7b08dab9db050612f64b8aa9b3df7
@pedrobonamin | display validation icon for groups (#11995) | 7916f6efbee5c4107b1c0d02a9281037108779e3
@pedrobonamin | adds `path` to `ConditionalPropertyCallbackContext` (#11947) | f16a4aa9b83365119fc881a4e00eb16e5b2c9f66
renovate[bot] | Update portabletext (#11994) | 6aaca20134277be6d497ce99d41b428c23a655bf
squiggler[bot] | dedupe pnpm-lock.yaml (#11993) | 16c063b1a2f0c0c8d26e1fb58c87421bca028169
@dcilke | resolve lint errors and update exports snapshot (#11945) | 9326b6adb5327e0292b7d36651877df7587bac76
@dcilke | integrate manifest generation into deploy action (#11945) | 8081071e54f9dac24d7d827f89148d9bf6c69f8c
@dcilke | extract generateStudioManifest into shared module (#11945) | ed1bd7be2b6951b68fdd7f40642ae154b9e17182
@dcilke | move uploadSchema to studio/manifest (#11945) | c394fdee8c6cefbaead577a4b929626ede28cd2c
squiggler[bot] | dedupe pnpm-lock.yaml (#11991) | 8aa547e5e6d4e02118dd43638d29daa157867cae
renovate[bot] | update dependency groq-js to ^1.26.0 (#11983) | 052b6a23074c4b3541665dd21b0680ef29626a1e
@jordanl17 | fix when no unit tests on coverage (#11986) | ba66225f432dd9964505c9db007242ec18107223
@jordanl17 | fixing failing autoupdating mock (#11985) | e597a36b773c88ea65328d5856501d7d367e1d7e
@jordanl17 | run partial vitest unit tests from `changed` detection (#11909) | 054e3b88992ff3fae5f28b7e7c1e363945377761
@EoinFalconer | add local development and auth guide to AGENTS.md (#11966) | fa1b8ab0ce1b698bbc6d1181c19b440b1ec009e2
  

</Release>

<Release version="v5.7.0" date="January 27, 2026" published="2026-01-27T13:22:36.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.7.0">
# Sanity Studio v5.7.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/aa21f137-5126-416e-b125-5a0f406f0441](https://www.sanity.io/changelog/aa21f137-5126-416e-b125-5a0f406f0441)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on [Installing and Upgrading Sanity Studio](https://www.sanity.io/docs/upgrade).

# 📓 Full changelog
Author | Message | Commit
------------ | ------------- | -------------
renovate[bot] | fix(deps): update dependency motion to ^12.27.1 ([#11932](https://github.com/sanity-io/sanity/pull/11932)) | eb8b2a9887
Pedro Bonamin | chore(core): updates PTE annotation styles ([#11943](https://github.com/sanity-io/sanity/pull/11943)) | 1759d1b6fa
RitaDias | fix(portable-text): combine multiple annotation popovers into single popover ([#11923](https://github.com/sanity-io/sanity/pull/11923)) | b470e3b5a9
Pedro Bonamin | fix(cli): add early validation for missing dataset in migration command ([#11914](https://github.com/sanity-io/sanity/pull/11914)) | 34215dfc3a
Ash | fix(sanity): ensure dedicated `SlugFieldDiff` is used when diffing slugs | 4cbc5e677e
Ash | chore(sanity): remove unused `diffResolver` file | bed417e356
Pedro Bonamin | feat(form): add clear button to radio select inputs ([#11936](https://github.com/sanity-io/sanity/pull/11936)) | c59672612e
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11941](https://github.com/sanity-io/sanity/pull/11941)) | 18ba86acbc
RitaDias | refactor: make enhanced object dialog's cross / exit go to the parent instead of closing all dialogs ([#11917](https://github.com/sanity-io/sanity/pull/11917)) | 63dbfd90af
renovate[bot] | fix(deps): Update portabletext ([#11955](https://github.com/sanity-io/sanity/pull/11955)) | 70d4df195e
renovate[bot] | fix(deps): update dependency @sanity/client to ^7.14.1 ([#11954](https://github.com/sanity-io/sanity/pull/11954)) | 41911d5900
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11959](https://github.com/sanity-io/sanity/pull/11959)) | 199f82aa33
Christian Hamburger Grøngaard | chore: .gitignore .claude/settings.local.json | 22ece75ac5
Christian Hamburger Grøngaard | test: stabilise comment tests | dfb4bf6d8c
Christian Hamburger Grøngaard | fix(core): use `EditorProvider` in comment input | 4a9549804b
renovate[bot] | fix(deps): Update portabletext ([#11960](https://github.com/sanity-io/sanity/pull/11960)) | a85174dcdc
Ash | feat(sanity): add utilities for flattening Sanity data | e3a39ba9f0
Ash | feat(sanity): tooling to find divergences between versions of a document | 4f5566181e
Pedro Bonamin | fix(core): support copy pasting anonymous objects ([#11961](https://github.com/sanity-io/sanity/pull/11961)) | 9d76742237
Pedro Bonamin | fix(core): preserve marks and markdefs when pasting pte fields ([#11967](https://github.com/sanity-io/sanity/pull/11967)) | 4f6b9ad18d
Ash | feat(sanity): collator for all divergences in a subject-upstream pair ([#11953](https://github.com/sanity-io/sanity/pull/11953)) | dc2bd872b2
Binoy Patel | refactor: remove codegen package ([#11846](https://github.com/sanity-io/sanity/pull/11846)) | afe18d4413
Espen Hovlandsdal | fix(cli): pass CLI project ID to runtime-cli if set, upgrade runtime-cli ([#11971](https://github.com/sanity-io/sanity/pull/11971)) | 539bf4aca7
Pedro Bonamin | fix(structure): validation inspector displays path titles for anonymous objects ([#11968](https://github.com/sanity-io/sanity/pull/11968)) | 1af0e35075
Ash | feat(sanity): add `time` param support to `getDocumentAtRevision` ([#11969](https://github.com/sanity-io/sanity/pull/11969)) | d517d2afdc
renovate[bot] | fix(deps): Update portabletext ([#11973](https://github.com/sanity-io/sanity/pull/11973)) | 96a420065f
Christian Hamburger Grøngaard | refactor: migrate workshop stories to use `EditorProvider` | 393c29526c
Christian Hamburger Grøngaard | fix: build range decorations when comments changes | bd54cbcfa6
Jordan Lawrence | fix: update response handling to return latest package version ([#11910](https://github.com/sanity-io/sanity/pull/11910)) | a4d65c4694
Kristoffer Brabrand | chore: pin @sanity/codegen version ([#11976](https://github.com/sanity-io/sanity/pull/11976)) | 5e7ddc1d8f
David Annez | fix(studio): improve PTE copy/paste clipboard formats ([#11762](https://github.com/sanity-io/sanity/pull/11762)) | a37c71727d
Kristoffer Brabrand | chore: pin @sanity/codegen in the workspace file | e8f613dd00

</Release>

<Release version="v5.6.0" date="January 23, 2026" published="2026-01-23T09:44:53.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.6.0">
# Sanity Studio v5.6.0

This release includes bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/c231ef24-c411-47e8-9b23-a9bf966c54da](https://www.sanity.io/changelog/c231ef24-c411-47e8-9b23-a9bf966c54da)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```


# 📓 Full changelog
Author | Message | Commit
------------ | ------------- | -------------
renovate[bot] | fix(deps): Update portabletext ([#11868](https://github.com/sanity-io/sanity/pull/11868)) | c95b22a25b
renovate[bot] | chore(deps): update pnpm to v10.28.1 ([#11875](https://github.com/sanity-io/sanity/pull/11875)) | 096d23de87
renovate[bot] | fix(deps): Update babel monorepo to ^7.28.6 ([#11876](https://github.com/sanity-io/sanity/pull/11876)) | c86d4fb254
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11883](https://github.com/sanity-io/sanity/pull/11883)) | 5cb456ed51
renovate[bot] | fix(deps): Update CodeMirror ([#11881](https://github.com/sanity-io/sanity/pull/11881)) | ac97e5c98d
renovate[bot] | chore(deps): update oxlint ([#11880](https://github.com/sanity-io/sanity/pull/11880)) | 8aa3fb0245
renovate[bot] | chore(deps): update lerna-lite monorepo to ^4.11.0 ([#11879](https://github.com/sanity-io/sanity/pull/11879)) | dd96837444
renovate[bot] | fix(deps): update dependency xstate to ^5.25.1 ([#11877](https://github.com/sanity-io/sanity/pull/11877)) | 977742eba8
renovate[bot] | fix(deps): update dependency motion to ^12.26.2 ([#11882](https://github.com/sanity-io/sanity/pull/11882)) | 8ee723cc1f
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11884](https://github.com/sanity-io/sanity/pull/11884)) | ce02fcab26
renovate[bot] | chore(deps): update dependency @sanity/image-url to ^2.0.3 ([#11885](https://github.com/sanity-io/sanity/pull/11885)) | da6b7d8f7b
Kristoffer Brabrand | feat(codegen): type utilities for generated types ([#11733](https://github.com/sanity-io/sanity/pull/11733)) | 682b253b5b
Pedro Bonamin | fix(core): infinite redirects when trying to log in via SSO ([#11825](https://github.com/sanity-io/sanity/pull/11825)) | ccbf72c79b
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11886](https://github.com/sanity-io/sanity/pull/11886)) | 37df781574
Pedro Bonamin | fix(core): handle null token in auth store ([#11888](https://github.com/sanity-io/sanity/pull/11888)) | 4a1b7fbf27
Pedro Bonamin | fix(core): show timezone button when `allowTimeZoneSwitch` is true ([#11861](https://github.com/sanity-io/sanity/pull/11861)) | 25ee19461b
Pedro Bonamin | fix(core): allows setting timezone to dates arrays ([#11866](https://github.com/sanity-io/sanity/pull/11866)) | 85bd87b36f
renovate[bot] | chore(deps): update actions/checkout action to v6 ([#11892](https://github.com/sanity-io/sanity/pull/11892)) | 30f3033ddb
Pedro Bonamin | fix(comments): store fragment selection when user opens comment input popover ([#11873](https://github.com/sanity-io/sanity/pull/11873)) | bee339e296
Per-Kristian Nordnes | feat: add "Open in Source" functionality for assets ([#11826](https://github.com/sanity-io/sanity/pull/11826)) | eaa8f24571
Jordan Lawrence | chore: cli skip tests ([#11872](https://github.com/sanity-io/sanity/pull/11872)) | eaa7f01495
Pedro Bonamin | fix(core): deprecated label and validation icons overlap ([#11887](https://github.com/sanity-io/sanity/pull/11887)) | b172d832c7
Jordan Lawrence | fix(cli): normalize path separators for cross-platform compatibility ([#11874](https://github.com/sanity-io/sanity/pull/11874)) | 4af3ead928
Dain Cilke | fix(studio): handle emoji characters in workspace icon generation | a6077fab42
Jordan Lawrence | fix: prevent published from being treated as a release ([#11871](https://github.com/sanity-io/sanity/pull/11871)) | 536f75bcc1
renovate[bot] | chore(deps): update dependency turbo to ^2.7.5 ([#11890](https://github.com/sanity-io/sanity/pull/11890)) | 63a6428e82
renovate[bot] | chore(deps): update dependency @sanity/pkg-utils to ^10.3.3 ([#11894](https://github.com/sanity-io/sanity/pull/11894)) | 4e7629367d
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11895](https://github.com/sanity-io/sanity/pull/11895)) | db91ca4d03
Eoin Falconer | fix(pte): widen annotation popover default width ([#11807](https://github.com/sanity-io/sanity/pull/11807)) | e8c84faad9
Jordan Lawrence | ci: add auto-labeling GitHub Action for PRs based on path changes ([#11902](https://github.com/sanity-io/sanity/pull/11902)) | 5e8314d10b
Pedro Bonamin | chore(test-studio): adds documentInternationalization plugin ([#11904](https://github.com/sanity-io/sanity/pull/11904)) | eb10e23e04
Pedro Bonamin | fix(core): ensure PTE custom toolbar icons use correct color token ([#11899](https://github.com/sanity-io/sanity/pull/11899)) | c46592cbd4
RitaDias | test: E2e and unit test updates ([#11903](https://github.com/sanity-io/sanity/pull/11903)) | f5a529ced4
Ken Jones | docs: add Auto-Changelog Function ([#10524](https://github.com/sanity-io/sanity/pull/10524)) | 6ebbadf433
renovate[bot] | fix(deps): update dependency @sanity/client to ^7.14.0 ([#11908](https://github.com/sanity-io/sanity/pull/11908)) | d4f6c5be18
renovate[bot] | chore(deps): update dependency vite to ^7.3.1 ([#11891](https://github.com/sanity-io/sanity/pull/11891)) | 5b4882d480
Pedro Bonamin | feat(core): add `renderMembers` function to objects and fieldsets ([#11205](https://github.com/sanity-io/sanity/pull/11205)) | 452d3560c9
RitaDias | fix: allow custom object types as portable text annotations ([#11893](https://github.com/sanity-io/sanity/pull/11893)) | 968005f6f1
Pedro Bonamin | feat(schema): export DEFAULT_ANNOTATIONS and DEFAULT_DECORATORS ([#11916](https://github.com/sanity-io/sanity/pull/11916)) | 55cdb56d5f
Pedro Bonamin | fix(core): split creation event from mutation when editing drafts ([#11379](https://github.com/sanity-io/sanity/pull/11379)) | bd3ebc3bb2
Rupert Dunk | fix: resolve private asset cors issues, skip access policy checks for unsupported auth modes ([#11901](https://github.com/sanity-io/sanity/pull/11901)) | e60346d968
Rupert Dunk | feat: add private asset indicator and improve access policy error handling ([#11898](https://github.com/sanity-io/sanity/pull/11898)) | e07b43c679
Kristoffer Brabrand | fix(test): symlink in monorepo deps after installing ([#11905](https://github.com/sanity-io/sanity/pull/11905)) | 2b9d06bb96
Pedro Bonamin | fix(structure): omit system bundles from versions in reference banner ([#11911](https://github.com/sanity-io/sanity/pull/11911)) | a71e88e4ca
Christian Grøngaard | fix(core): remove dependency on PTE-exported Sanity types ([#11920](https://github.com/sanity-io/sanity/pull/11920)) | 7a74337c9d
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11927](https://github.com/sanity-io/sanity/pull/11927)) | c96837cc89
Cody Olsen | chore: add AGENTS.md and CLAUDE.md ([#11929](https://github.com/sanity-io/sanity/pull/11929)) | c5a1c50be6
renovate[bot] | fix(deps): Update portabletext ([#11912](https://github.com/sanity-io/sanity/pull/11912)) | 9c14402a54
Pedro Bonamin | chore(core): reverts authstore fix for SSO redirect  ([#11931](https://github.com/sanity-io/sanity/pull/11931)) | b033a550c2
renovate[bot] | chore(deps): update dependency @lerna-lite/publish to ^4.11.1 ([#11930](https://github.com/sanity-io/sanity/pull/11930)) | 7728fc4042
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11933](https://github.com/sanity-io/sanity/pull/11933)) | 0bc3035161
Binoy Patel | fix: fixes issue with loading esm cli bin ([#11919](https://github.com/sanity-io/sanity/pull/11919)) | ed4bb07851
</Release>

<Release version="v5.5.0" date="January 19, 2026" published="2026-01-19T20:40:21.000Z" url="https://github.com/sanity-io/sanity/releases/tag/v5.5.0">
# Sanity Studio v5.5.0

This release includes bug fixes.

For the complete changelog with all details, please visit:
[www.sanity.io/changelog/266c75da-9959-4693-82c9-e1d133bcac91](https://www.sanity.io/changelog/266c75da-9959-4693-82c9-e1d133bcac91)

## Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```


# 📓 Full changelog
Author | Message | Commit
------------ | ------------- | -------------
RitaDias | test: update e2e tests ([#11843](https://github.com/sanity-io/sanity/pull/11843)) | 3334560317
Kristoffer Brabrand | feat(cli): watch mode for schema extraction ([#11748](https://github.com/sanity-io/sanity/pull/11748)) | 459e8ca4ec
Kristoffer Brabrand | feat(cli): allow configuring schemaExtraction in sanity.cli.ts ([#11824](https://github.com/sanity-io/sanity/pull/11824)) | 6fd624bc58
RitaDias | fix: issue where padding bottom was too close to dialog, fixes #11849 ([#11852](https://github.com/sanity-io/sanity/pull/11852)) | e4e9c54721
renovate[bot] | fix(deps): Update linters ([#11836](https://github.com/sanity-io/sanity/pull/11836)) | 129169868d
Pedro Bonamin | fix(core): enable autofocus on reference input ([#11853](https://github.com/sanity-io/sanity/pull/11853)) | 753fce6e04
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11854](https://github.com/sanity-io/sanity/pull/11854)) | 42d840e584
Pedro Bonamin | fix(core): use `<Link>` for workspace switching ([#11844](https://github.com/sanity-io/sanity/pull/11844)) | c89364ca06
Pedro Bonamin | fix(core): reverts use `<Link>` for workspace switching ([#11844](https://github.com/sanity-io/sanity/pull/11844)) ([#11859](https://github.com/sanity-io/sanity/pull/11859)) | f87a5ebc4d
Bram Doppen | fix(docs): Fix add function --example handling for media library function ([#11847](https://github.com/sanity-io/sanity/pull/11847)) | 14a2811254
Espen Hovlandsdal | fix(cli): upgrade `@sanity/export` to v6.0.3 ([#11862](https://github.com/sanity-io/sanity/pull/11862)) | 85b2f91b6a
Kristoffer Brabrand | feat(sanity): add Vite plugin for automatic schema extraction ([#11760](https://github.com/sanity-io/sanity/pull/11760)) | e0f78dacbb
renovate[bot] | fix(deps): update dependency @sanity/export to ^6.0.5 ([#11863](https://github.com/sanity-io/sanity/pull/11863)) | 489ff2b21b
Jordan Lawrence | fix: missed scheduled draft ([#11860](https://github.com/sanity-io/sanity/pull/11860)) | 56c9ab039d
squiggler[bot] | chore(deps): dedupe pnpm-lock.yaml ([#11864](https://github.com/sanity-io/sanity/pull/11864)) | a65446824f
Eoin Falconer | fix: prevent disableTransition prop from leaking to DOM ([#11775](https://github.com/sanity-io/sanity/pull/11775)) | bd6774b419
renovate[bot] | fix(deps): update dependency @sanity/import to ^4.1.0 ([#11865](https://github.com/sanity-io/sanity/pull/11865)) | c59cb53a9a
renovate[bot] | chore(deps): update dependency styled-components to ^6.3.8 ([#11858](https://github.com/sanity-io/sanity/pull/11858)) | c77ab5eaa0
Taylor Beseda | chore(cli): improve blueprints and functions help text ([#11848](https://github.com/sanity-io/sanity/pull/11848)) | 0e68c010d0
</Release>

<Pagination page="1" total-pages="6" total-items="101" next="https://releases.sh/sanity/sanity-studio.md?page=2" />
