This release includes various improvements and bug fixes.
For the complete changelog with all details, please visit: www.sanity.io/changelog/studio-NS4yMC4w
To upgrade to this version, run:
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.
| 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 |
Fetched April 15, 2026