releases.sh

v6.9.0

August 4, 2026Sanity StudioView original ↗

Sanity Studio v6.9.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit: www.sanity.io/changelog/studio-Ni44LjA

Install or upgrade Sanity Studio

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.

📓 Full changelog

AuthorMessageCommit
@stipsanrefactor(ui): migrate Stack and Button space prop to gap (#13867)8343de27072ac81a5db413eebe451a8abfee4e31
@pedrobonaminfeat(core): query documents in the selected variant alongside the perspective stack (#13791)8989fe72ebe5c0b4173fa7f356235fa403639711
@shapirodanielfeat(core): unclaimed project claim intake and nudge (#13705)41dd4bfaf1049146e38938e39f008f7fa5f1c95b
@pedrobonaminchore(structure): render doc badges even if the doc is missing (#13743)f03b8afff06bc614a2908c077fb3412c33201220
@pedrobonamintest(e2e): add tasks e2e tests for create, release scoping and resolve (#13754)de8fb79553b107fb3fffb2a79acdc27627fefa2e
@stipsanfix(core): avoid native useEffectEvent in forwardRef and memo (#13821)8f84cf4b0628e3b9bc8c4752f67ec793153aaaf6
@jordanl17fix(core): stop permission loading-flag churn on every document change (#13771)96f5819eba54f1723adf6e29f9491ada56543643
@jordanl17refactor(core): consolidate array list object telemetry events (#13772)1a9dffcefdec8db5e73b902dbdc2b0db6e73e3b2
@stipsanchore(lint): prefer function components via oxlint rule (#13826)a6b0627a7c3d4caa992e37eb1d658b6844ba72ce
@stipsanchore(structure): drop redundant incoming references comments (#13852)1542aa03a0fdd76af071b34a248cb444a77943e7
@stipsanfix(dev): migrate profiling minify options from esbuild to vite (#13859)d25a51cbebe8fd6f309938305c202218c9db27af
@stipsanchore(test-dts-exports): remove ui-poc styles.css TS2882 workaround (#13863)623e18f19a6d43f3dcf8964a788e3334f1d5a6c3
squiggler-app[bot]fix(deps): update dependency get-it to ^8.8.2 (#13865)7ea95c3ff2b75203e9d83ec2a80fa2af39a19cdd
squiggler-app[bot]chore(deps): dedupe pnpm-lock.yaml (#13864)5d36c67b4def9768a7c1a018a4cd542606f50537
@jordanl17perf(sanity): batch connector geometry updates with rAF and bail on unchanged connectors (#13763)24a033eacb13ce373f844ec77cfc6e0209741118
squiggler-app[bot]fix(deps): update playwright monorepo to v1.62.1 (#13855)40c0ab538d70e95153794d1b23298f24be5538f4
squiggler-app[bot]chore(deps): update dependency oxlint to ^1.76.0 (#13844)9eb219e749339cf8846ba8bb2103880a33caab14
squiggler-app[bot]fix(deps): update dependency @sanity/cli to ^7.16.0 (#13858)1c690fd165eadff4b187d4247059bf450cb4fec9
@stipsanchore(test-studio): add vitejs devtools integration packages (#13850)027245f04b370b81b956ecc20711d300c8c6dd47
squiggler-app[bot]fix(deps): update dependency @sanity/client to ^7.26.0 (#13848)8458e48d62fb079d4340ce29325b44312f128b41
squiggler-app[bot]chore(deps): dedupe pnpm-lock.yaml (#13853)be95af4917c498fefe0fdffde1f9c814da32567b
squiggler-app[bot]chore(deps): update dependency @sanity/tsdown-config to ^0.21.3 (#13862)f7d1c45f9bcc74e643516a49c96185f772952c46
squiggler-app[bot]chore(lint): fix linter issues 🤖 ✨ (#13860)32c9c66394721fa228318acfe5a151f7d2978b3b
squiggler-app[bot]fix(deps): update portabletext (#13842)9320439714fefd700256787b4529798411eb19e6
squiggler-app[bot]fix(deps): update dev-non-major (#13834)cfd0b3ba26c60d82aee9a7907374c2322f28f330
squiggler-app[bot]fix(deps): update dependency motion to ^12.43.0 (#13849)64f1aa177218ad125c33567630c2d30dcde0910f
squiggler-app[bot]chore(deps): update dependency knip to ^6.31.0 (#13843)853e4a13ca6b67081c138b0b2ee39d0b41434724
squiggler-app[bot]fix(deps): update dependency get-it to ^8.8.1 (#13841)a4d82442b3f74beb5004d557bf8b9f17ca14ccf9
squiggler-app[bot]fix(deps): update react monorepo (#13856)cdd01d305e70a66a563d95d3f30ef01398be0ec0
squiggler-app[bot]chore(deps): update dependency oxfmt to ^0.62.0 (#13857)e3860036325d5090eb99df4a5924bddf0fc4cd77
squiggler-app[bot]chore(deps): update dependency @sanity/ui to ^3.5.1 (#13818)ed699edfc11578625ce214ae805a77e212315690
squiggler-app[bot]chore(deps): update dependency @vanilla-extract/css to ^1.21.2 (#13854)41d79dd45355c278ba3ad469a4dd725d84c505ef
squiggler-app[bot]chore(deps): update dependency vite to ^8.2.0 (#13846)f88be20f8358c0d9c3ff33edca60b5ec9f200331
squiggler-app[bot]chore(deps): update dependency @vitejs/plugin-react to ^6.0.5 (#13840)204dc7dfa4b04ea160e45b53b9aa1a8eba019629
@pedrobonaminfix(structure): incoming references shouldn't self refer (#13851)367be3f9a4fc0bb999278f77944209b3aa2bc48f
@stipsanfix(structure): keep inspector crashes inside the inspector panel (#13845)cba51818c90f87311031fdc9ae03bb071ca30f77
@stipsanperf(sanity): defer non-controlled useObservable subscriptions (#13799)2958d75de93601e987f640b0ff02f3827db3d4ec
@stipsanchore(deps): bump react-rx to v5 and adopt useSyncObservable (#13814)d66f50562917e1d8ebf4d0ed01104332814d84bc
@stipsanrefactor(sanity): adopt useObservablePromise for data loading states (#13828)2d7be6accd75ebf874894de43253efbaf0b1f2f5
squiggler-app[bot]chore(tests): generate dts tests 🤖 ✨ (#13839)01339c43f7703e3929b5ffe18741401c0211dd90
@codythatsmefix(types): preserve supplied schema helper properties (#13237)38002e4432aff0f917eee7461897c23bba35886e
@stipsanchore(lint): migrate eslint-plugin-boundaries config to v7 (#13710)f8fa3907e6a649027d32423761b12ae2185c1e31
@pedrobonaminfix(core): allow creating draft variants from published variant sibling (#13741)cf5a7da78f0f4d42a7c21106749b439a007efdf3
@pedrobonaminfix(core): update copying variants to different releases from context menu. (#13800)3086936c9a450730e9ea2cd59ce86c007ccd4578
@stipsandocs(agents): adopt useful patterns from plugins AGENTS.md (#13764)4794716394e5d210f23b1c8ab556630b24341f4e
@pedrobonaminchore(structure): useDocumentTitle, use document pane provider value (#13742)6f46b8d6421c54d87e60d90eab1423e79d849992
@joshuaellisfeat(workbench): export AssetSource types from sanity/workbench (#13827)458ca4a6cb0863db236a695d15b295974c2162a2
@stipsanchore(oxlint): add typescript/no-deprecated rule (#13829)bd7b4b1b610d561ff51c996594bfdf72c9e91366
claude[bot]fix(ci): wait for published packages to be installable before post-publish steps (#13823)53072772f79e41e488d2ea4f21d714362c65ffc3
@stipsanrefactor(sanity): replace useState useEffect observable subscriptions with useObservable (#13788)ae2fb782c12834c907e4af1477f642fc323ea9fb
@laurenashpolechore(core): updates @sanity-labs/ui-poc to 0.0.1-alpha.25 (#13832)30ec805b59156e53c729b231ab6c77dad3122145
@pedrobonaminchore(core): versions context menu use documentGroupId and versionId (#13820)950c5a5e502dcb8e66eb36ec7535cd8badb87c03

Fetched August 4, 2026