Sanity Studio v6.20.0
This release includes various improvements and bug fixes.
For the complete changelog with all details, please visit:
www.sanity.io/changelog/studio-Ni4xOS4w
Install or upgrade Sanity Studio
To upgrade to this version, run:
npm install sanity@latestTo initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.
📓 Full changelog
| Author | Message | Commit |
|---|---|---|
| claude[bot] | fix(i18n): add strings that rendered as raw translation keys (#15422) | a729d45 |
| @bjoerge | fix: prevent autocommit from cancelling a pending publish (#15451) | f762a37 |
| claude[bot] | fix(core): keep plugin locale namespaces out of shared studio code (#15419) | ebe67ac |
| @pedrobonamin | fix(form): keep virtualized array list stable under browser scroll anchoring (#15452) | 962a520 |
| @skogsmaskin | feat(form): federated Media Library asset source from workbench-brokered views (#15097) | d5e8af8 |
| @stipsan | feat(test-studio): add a close button to the style migrations panel (#15455) | d6cc5a1 |
| squiggler-app[bot] | chore(deps): update dependency react-i18next to ^17.0.19 (#15439) | c1a7510 |
| squiggler-app[bot] | fix(deps): update dev-non-major (#15444) | 8159e2f |
| @pedrobonamin | fix(structure): use published sibling in events inspector (#14423) | a31c19c |
| squiggler-app[bot] | chore(deps): update dependency @sanity/vanilla-extract-vite-plugin to ^0.3.1 (#15436) | ae6e545 |
| @vquigley | fix(access-ui): tell SSO-required users to sign out and back in (ID-1156) (#15449) | 3313340 |
| @jordanl17 | fix(types): add currentUser to ValidationContext (#14360) | ded58c4 |
| @jordanl17 | fix(store): emit initial value updates when document existence changes (#15149) | 4af482a |
| @pedrobonamin | feat(structure): add view draft banner for published documents (#14455) | e37fd90 |
| @stipsan | feat(vision): add an opt-in redesigned vision experience behind beta.redesign (#14894) | 3b90dc9 |
| @joshuaellis | feat(dashboard): export ServiceBus from sanity/dashboard (#15365) | f7ef13c |
| @vquigley | fix(access-ui): clarify the SSO-required card for SAML sessions (ID-1156) (#15429) | 71d8f39 |
| @stipsan | fix(core): stop non-DOM props leaking to DOM elements and guard against regressions (#15109) | 5b64bab |
| squiggler-app[bot] | chore(deps): update dependency @sanity/ui to ^4.4.9 (#15432) | bedb836 |
| @laurenashpole | chore: migrate text in core/studio/components/navbar/search (#15418) | 7545339 |
| @pedrobonamin | fix(variants): copy published variant when creating from manage versions (#15031) | 068c537 |
| @gu-stav | feat(core): switch workspaces without reloading the page (#15403) | 3187d07 |
| @gu-stav | fix(core): sync workspace switches with the dashboard (#15409) | e914c9b |
| @pedrobonamin | feat(validation): add immediate validation option (#15317) | 36610af |
| @pedrobonamin | feat(validation): yield to the browser during an immediate validation run (#15352) | dfb6f4c |
| @pedrobonamin | feat(core): let a validation subscriber switch a document's shared validation to immediate (#15369) | 1af75fd |
| @pedrobonamin | fix(core): when clicking publish, validate immediately (#15372) | 75614aa |
| squiggler-app[bot] | chore(deps): update dependency @sanity/tsdown-config to ^0.30.0 (#15395) | efbf93c |
| @pedrobonamin | fix(core): stop IntentButton forwarding intent props to the DOM while disabled (#15038) | 04e7a5c |
| @laurenashpole | chore: migrate text in core/releases/components (#15415) | b861c27 |
| @laurenashpole | chore: migrate text in misc directories in core/studio (#15374) | b6b41f6 |
| squiggler-app[bot] | chore(deps): update dependency @sanity/ui to ^4.4.8 (#15420) | 7bb4d82 |
| squiggler-app[bot] | chore(deps): update dependency react-rx to ^7.1.0 (#15412) | a4f2139 |
| @laurenashpole | chore: migrate text in core/releases/tool (#15361) | ad4ce4d |
| @christianhg | fix(form): portal the table chrome into the editor's stacking context (#14656) | 655a93a |
| @christianhg | chore(test-studio): add table-in-dialog scenario for the table delete buttons (#14656) | 549aa73 |
| @gu-stav | fix(deps): update dependency @sanity/cli to ^8.17.1 (#15408) | c96e4b0 |
| squiggler-app[bot] | chore(deps): update dependency @sanity/ui to ^4.4.7 (#15401) | b4e155b |
| @stipsan | refactor(core): stabilize the reference input edit link component identity (#15293) | 94c11ae |
| @stipsan | chore(lint): enable react/no-unstable-nested-components as error (#15294) | 21fbf90 |
| @gu-stav | feat(core): prompt for project access in dashboard hosts (#15096) | c7a9fb6 |
| @gu-stav | feat(core): hide studio feedback in workbench (#15112) | 81dd251 |
| @pedrobonamin | fix(structure): add user name tooltip to document status avatar (#15399) | b8592b0 |
| @joshuaellis | fix(deps): update dependency @sanity/cli to ^8.17.0 (#15398) | 88e3701 |
| squiggler-app[bot] | chore: cleanup pnpn workspace config (#15392) | 3cee8ce |
| @bjoerge | refactor(core): let auth stores report the signed-in user (#15378) | e9e56d9 |
| @ChrisLaRocque | fix(reference): preserve weak refs in releases (#15382) | 7caacbd |
| @bjoerge | test(portable-text): fuzz block deletion in the sync fuzz test (#15029) | 9f35a3c |
| squiggler-app[bot] | chore(deps): update dependency @sanity/google-maps-input to ^6.1.17 (#15385) | 77c977b |
| squiggler-app[bot] | chore(deps): update dependency @testing-library/user-event to ^14.6.8 (#15387) | b2ea66e |
| squiggler-app[bot] | fix(deps): update storybook monorepo to ^10.6.2 (#15390) | 145778c |
| squiggler-app[bot] | chore(deps): update dependency sanity-plugin-internationalized-array to ^5.3.5 (#15388) | e0f8d6f |
| squiggler-app[bot] | fix(deps): update dev-non-major (#15389) | c5d49bb |
| squiggler-app[bot] | chore(deps): update dependency @sanity/ui to ^4.4.6 (#15386) | b284eb4 |
| squiggler-app[bot] | fix(deps): update react monorepo to ^19.3.1 (#15381) | bff3837 |
| @skogsmaskin | feat(media-library): ship the island-mount runtime for config app custom inputs (#15377) | 4ecc9aa |
| @skogsmaskin | fix: move stragglers off removed sanity/_createContext (#15375) | 2031d5a |
| @stipsan | refactor(core): hoist closure-free nested components and keep render callbacks stable (#15289) | 7189d95 |
| @stipsan | refactor(core): define the upsell description serializer components at module scope (#15290) | 0bc2c37 |
| @stipsan | refactor(presentation): stabilize pane router link and navigator component identities (#15291) | 41b373b |
| @stipsan | refactor(core): stabilize releases table column and calendar day component identities (#15292) | ddeb99a |
| @bjoerge | refactor(core): move the auth store into store/auth/legacy (#15370) | 59a11cc |
| @bjoerge | fix(release-notes): hoist inline images out of text blocks (#15367) | ecb54df |
| @stipsan | test(variants): give the perspective filter menus a boundary with room (#15304) | 8813cbb |
| @laurenashpole | chore: migrate text in variants (#15356) | f60bbc5 |
| @stipsan | fix(css): salt published vanilla-extract class names with the package version (#15353) | bea9faa |
| squiggler-app[bot] | chore(deps): update dependency @tanstack/react-virtual to ^3.14.19 (#15357) | 41c7008 |
| squiggler-app[bot] | fix(deps): update vitest monorepo to ^5.0.4 (#15358) | 90162a2 |
| squiggler-app[bot] | chore(deps): update dependency @sanity/vanilla-extract-vite-plugin to ^0.3.0 (#15359) | 07609d1 |
| squiggler-app[bot] | chore(deps): lock file maintenance (#15360) | 6dcf13f |
| squiggler-app[bot] | chore(deps): update dependency @sanity/ui to ^4.4.5 (#15355) | 2c6ff7d |
| squiggler-app[bot] | fix(deps): update dependency motion to ^14.2.0 (#15347) | eff7b53 |
| squiggler-app[bot] | chore(deps): update dependency @sanity/tsdown-config to ^0.29.0 (#15354) | 30126e9 |
| @rexxars | fix(schema): reduce usages of lodash (#14903) | 3e58b07 |
| squiggler-app[bot] | fix(deps): update sanity-sdk to ^3.9.1 (#15350) | 13e87a9 |