Sanity Release Notes

Follow

72 release notes curated from 54 sources by the Releasebot Team. Last updated: Sep 12, 2026

Get this feed:
  • Sep 11, 2026
    • Date parsed from source:
      Sep 11, 2026
    • First seen by Releasebot:
      Sep 12, 2026
    Sanity logo

    Sanity

    Fixes for content release reverts, validation, theming, and slug uniqueness

    Sanity fixes content release reverting, form validation, theming, and slug uniqueness issues. The update improves restore behavior for complex releases, stops Safari spinner wobble, prevents a Studio crash from missing paths, and keeps theme colors aligned with Studio settings.

    This release fixes a couple of issues with reverting a content release, form validation, theming consistency, and slug uniqueness checks.

    Notable bugfixes and improvements

    • Loading spinners in global search and document lists no longer wobble in Safari.
    • Fixes reverting a Content Release with many documents, or documents with long or partly expired edit history, where some documents could be unpublished instead of restored. Reverting now restores every document to its pre-release revision, only unpublishes documents that did not exist before the release, and stops if any document's previous state cannot be determined (i.e. due to retention policies).
    • Fixes validation for type aliases with option lists and date constraints. Ensures context-dependent validation and nested field rules receive the current document and field context.
    • Fixes a crash that could occur in a custom input or plugin rendering FormField or FormFieldSet without a path prop, throwing "Path is not an array". Passing path is still required, but a missing one no longer crashes the Studio.
    • Auto-updating Studios no longer let OS light/dark appearance override the Studio theme. Theme colors from @sanity/ui v5 light-dark() tokens stay tied to the Studio theme (via color-scheme), including when the OS is set to the opposite appearance.
    • Fixes custom slug uniqueness checks being ignored on type aliases and inline fields.
    Original source
  • Sep 11, 2026
    • Date parsed from source:
      Sep 11, 2026
    • First seen by Releasebot:
      Sep 12, 2026
    Sanity logo

    Sanity

    v6.13.2

    Sanity releases Studio v6.13.2 with a round of improvements and bug fixes, including Safari spinner stability, better release revert handling, steadier validation, and form field gutter fixes.

    Sanity Studio v6.13.2

    This release includes various improvements and bug fixes.

    For the complete changelog with all details, please visit:

    www.sanity.io/changelog/studio-Ni4xMy4x

    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

    Author

    Message

    Commit

    @stipsan

    fix(studio): stabilize custom spinners in safari (#14702)

    172b1a8

    @bjoerge

    fix(releases): resolve every document's revert target before reverting a release (#14715)

    7ca649b

    @shapirodaniel

    fix(validation): keep inherited rules and runtime context consistent (#14703)

    2cf1d4e

    @bjoerge

    fix(form): tolerate a missing path in the form field gutter (#14714)

    5951f9b

    squiggler-app[bot]

    chore(deps): dedupe pnpm-lock.yaml (#14705)

    a3410bb

    @laurenashpole

    chore: migrate grid in dev (#14688)

    3094c74

    @laurenashpole

    chore: migrate flex in misc core/form (#14366)

    c7df361

    @stipsan

    fix(deps): update dependency @sanity/cli to ^8.10.0 (#14707)

    b23924d

    @laurenashpole

    chore: migrate grid in src (#14660)

    942f58f

    @laurenashpole

    chore: migrate grid in core (#14592)

    efb95c3

    squiggler-app[bot]

    fix(deps): update dev-non-major (#14698)

    9222afc

    squiggler-app[bot]

    chore(deps): update dependency react-devtools-core to v8 (#14689)

    f879827

    @stipsan

    fix(studio): preserve light-dark in auto-update bundle css (#14704)

    299acbf

    @shapirodaniel

    fix(validation): honor custom slug uniqueness on type aliases (#14701)

    97bae2a

    squiggler-app[bot]

    chore(deps): dedupe pnpm-lock.yaml (#14695)

    24a0caa

    squiggler-app[bot]

    chore(deps): update dependency use-sync-external-store to ^1.7.0 (#14694)

    2e457d2

    squiggler-app[bot]

    fix(deps): update dependency @sanity/icons to ^5.2.2 (#14697)

    77313bb

    squiggler-app[bot]

    chore(deps): update dependency @sanity/ui to ^4.2.1 (#14696)

    4abf97f

    squiggler-app[bot]

    chore(deps): update dependency @types/use-sync-external-store to ^1.7.0 (#14693)

    69a83f9

    squiggler-app[bot]

    fix(deps): update dependency @sanity/mutate to ^0.18.2 (#14692)

    8e1279f

    squiggler-app[bot]

    chore(deps): update dependency ui5 to v5.0.0-alpha.10 (#14691)

    64f97f2

    squiggler-app[bot]

    chore(deps): update dependency @sanity/functions to ^1.7.2 (#14663)

    310455d

    squiggler-app[bot]

    chore(deps): update renovatebot/github-action action to v46.2.6 (#14613)

    01d2497

    squiggler-app[bot]

    chore(deps): update dependency sanity-plugin-internationalized-array to ^5.2.4 (#14604)

    20ad5be

    squiggler-app[bot]

    chore(deps): update dependency i18next to ^26.4.2 (#14601)

    972a62e

    squiggler-app[bot]

    chore(deps): update dependency @sanity/workbench to v0.1.0-alpha.48 (#14599)

    f4ae0c6

    squiggler-app[bot]

    fix(deps): update react monorepo to ^19.3.0 (#14600)

    5f48931

    squiggler-app[bot]

    chore(deps): update dependency pkg-pr-new to ^0.0.88 (#14603)

    2433b9d

    squiggler-app[bot]

    chore(tests): generate dts tests 🤖 ✨ (#14679)

    760af19

    squiggler-app[bot]

    chore(deps): update dependency npm-run-all2 to ^9.0.3 (#14602)

    54095cc

    @stipsan

    fix(deps): update typescript-tooling and vite>rolldown to v1.2.8 (#14678)

    ecc4fea

    Original source
  • All of your release notes in one feed

    Join Releasebot and get updates from Sanity and hundreds of other software products.

    Create account
  • Sep 10, 2026
    • Date parsed from source:
      Sep 10, 2026
    • First seen by Releasebot:
      Sep 11, 2026
    Sanity logo

    Sanity

    Schema handling and internal client improvements

    Sanity fixes schema and document tools to handle deployed schemas, field reads, and docs backend timeouts more gracefully.

    Fixes

    • get_schema tool: Resolve the only deployed schema when workspaceName is omitted and no default workspace exists.
    • Document reads: Allow reads of known document fields without first fetching a schema.
    • search_docs and read_docs tools: Report documentation backend timeouts as temporary upstream issues worth retrying, instead of internal errors.
    • Schema reads: Allow get_schema and document tools to read a deployed schema when its types can be parsed but the schema compiler rejects it.
    Original source
  • Sep 10, 2026
    • Date parsed from source:
      Sep 10, 2026
    • First seen by Releasebot:
      Sep 11, 2026
    Sanity logo

    Sanity

    Signing key activity logs and smoother asset handling

    Sanity adds Activity Log entries for signing key changes, improves folder-scoped asset deletion, and makes private image full-screen previews more reliable.

    This release adds Activity Log entries for signing key changes, alongside improvements to folder-scoped asset deletion and full-screen previews for private images.

    Signing key activity in the Activity Log

    Media Library now records signing key creation and revocation in your organization’s Activity Log, including the person who initiated the change. This gives administrators a clear audit trail for keys used to generate authenticated asset URLs.

    Notable bug fixes

    • Deleting assets from folders now works smoothly for roles scoped to a root folder, and folder views refresh immediately to reflect the change.
    • Private images now load reliably in full-screen preview, with clearer feedback if an image can’t be displayed.
    Original source
  • Sep 9, 2026
    • Date parsed from source:
      Sep 9, 2026
    • First seen by Releasebot:
      Sep 10, 2026
    Sanity logo

    Sanity

    Fixes for documentation links, image fields, and schema deployment

    Sanity fixes read_docs links, image tools, and schema deployment permissions.

    Fixes

    • read_docs tool: Fixed rejection of valid sanity.io documentation links, such as sanity.io/changelog/... URLs.
    • generate_image and transform_image tools: Fixed "no writable, visible fields" errors when the targeted image field is itself named asset, such as cover.asset on a custom object with asset and alt fields.
    • Schema deployment: Allow deployment with schema-only permissions while continuing to support Studio deployment permissions.
    Original source
  • Similar to Sanity with recent updates:

  • Sep 9, 2026
    • Date parsed from source:
      Sep 9, 2026
    • First seen by Releasebot:
      Sep 10, 2026
    Sanity logo

    Sanity

    Complete query results with a 64 KiB response limit

    Sanity improves the query_documents tool with complete results up to 64 KiB and removes the separate limit parameter.

    Improvements

    • query_documents tool: Return complete query results up to a 64 KiB response limit. Larger responses return guidance to select fewer fields or paginate.

    Removals

    • query_documents tool: Removed the separate limit parameter. Use GROQ slices to limit results.

    Related documentation

    Sanity MCP server

    Original source
  • Sep 9, 2026
    • Date parsed from source:
      Sep 9, 2026
    • First seen by Releasebot:
      Sep 9, 2026
    Sanity logo

    Sanity

    v6.13.1

    Sanity ships Studio v6.13.1 with improvements and bug fixes, including better document listener handling, smoother workspace menu rendering, reduced re-render fan-out, and dependency updates across the Studio stack.

    Sanity Studio v6.13.1

    This release includes various improvements and bug fixes.

    For the complete changelog with all details, please visit:

    www.sanity.io/changelog/studio-Ni4xMy4w

    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

    Author

    Message

    Commit

    @stipsan

    ci(bundle-stats): roll back to v1 to unbreak the job on every pr (#14676)

    6270e12

    @stipsan

    fix(deps): update dependency @sanity/cli to ^8.9.1 (#14675)

    5d97879

    @stipsan

    fix(deps): update portabletext (#14674)

    289f65f

    @bjoerge

    fix: key client-capturing memo caches by credential (#14672)

    02ff775

    squiggler-app[bot]

    chore(deps): dedupe pnpm-lock.yaml (#14658)

    46a91f3

    @bjoerge

    fix(core): terminate document listener on 401 (#14680)

    59c29f7

    squiggler-app[bot]

    fix(deps): update codemirror (#14605)

    a991f45

    @stipsan

    fix(core): make styled-component style props transient so they do not leak to the dom (#14639)

    1c51ca5

    squiggler-app[bot]

    fix(deps): update dependency motion to ^13.2.0 (#14610)

    bae59a7

    squiggler-app[bot]

    chore(deps): update dependency oxfmt to ^0.67.0 (#14670)

    ca8179e

    squiggler-app[bot]

    chore(deps): update dependency @sanity/id-utils to ^1.1.0 (#14669)

    57a9032

    squiggler-app[bot]

    chore(deps): update dependency @sanity/ailf to ^7.37.0 (#14668)

    8712a95

    @stipsan

    perf(structure): stop document action re-render fan-out on every keystroke (#14559)

    c0b4699

    squiggler-app[bot]

    chore(deps): update dependency oxlint to ^1.82.0 (#14671)

    2248b2d

    squiggler-app[bot]

    chore(deps): update dependency ui5 to v5.0.0-alpha.9 (#14666)

    9dab0bc

    squiggler-app[bot]

    chore(deps): update dependency vite>rolldown to v1.2.7 (#14582)

    5285f81

    squiggler-app[bot]

    chore(deps): update dependency @tanstack/react-virtual to ^3.14.11 (#14664)

    24c03b7

    squiggler-app[bot]

    chore(deps): update dependency vitest-browser-react to ^2.3.0 (#14607)

    26e0b71

    squiggler-app[bot]

    fix(deps): update dev-non-major (#14632)

    72bd9e0

    squiggler-app[bot]

    fix(deps): update dependency get-it to ^9.5.4 (#14644)

    9db2382

    squiggler-app[bot]

    chore(deps): update dependency oxc-transform-react to ^0.149.0 (#14659)

    521af43

    squiggler-app[bot]

    fix(deps): update dependency @sanity/client to ^8.6.1 (#14647)

    0cb729f

    @stipsan

    fix(core): render the workspace menu project name without a layout shift (#14560)

    b992c0b

    squiggler-app[bot]

    chore(deps): update pnpm to v12 (#14657)

    1e309b4

    squiggler-app[bot]

    chore(deps): update rexxars/bundle-stats action to v2 (#14584)

    3fc237d

    squiggler-app[bot]

    chore(deps): update dependency @sanity/ui to ^4.2.0 (#14645)

    234cb24

    Original source
  • Sep 9, 2026
    • Date parsed from source:
      Sep 9, 2026
    • First seen by Releasebot:
      Sep 9, 2026
    Sanity logo

    Sanity

    Improved session stability, accessibility, and Studio performance

    Sanity fixes Studio session crashes, improves accessibility and performance, and removes redundant API requests. It also updates the bundled Sanity CLI dependency and resolves a sign-in issue that could log users out in multiple tabs.

    This release fixes a session management issue that could cause an unexpected studio crash, improves accessibility in several components, and eliminates unnecessary API requests for better performance.

    🐛 Notable bugfixes and improvements

    • Updates the bundled Sanity CLI dependency to 8.9.1.
    • Fixes an issue where signing in could immediately sign you out if multiple Studio tabs were open.
    • Fixes an issue where an expired session could crash the Studio with an "EventSource connection failed" error.
    • Fixes invalid DOM attributes (margins, ratio, open, isSelected, asset) from being rendered by a few internal styled components in the presence overlay, image tool input, file asset source list and the Details component. The file asset source list rows now report their real selection state through aria-selected.
    • The workspace menu no longer shifts its header on first open. The studio also stops issuing a redundant /projects/ request each time the menu is first opened; the project name now comes from the request already made at boot.
    Original source
  • Sep 8, 2026
    • Date parsed from source:
      Sep 8, 2026
    • First seen by Releasebot:
      Sep 8, 2026
    Sanity logo

    Sanity

    Portable TypeGen types, keepPanesOnCreate for Structure, and diagnostics upgrades

    Sanity ships TypeGen query result types that work across every copy of @sanity/client, adds an opt-in keepPanesOnCreate option for the Structure tool, and expands Studio diagnostics with styled-components details. It also brings cancellation-aware headless validation and several Safari and UI fixes.

    This release makes TypeGen query result types work across every copy of @sanity/client without workarounds, adds an opt-in keepPanesOnCreate option to the Structure tool, and reports styled-components details in Studio diagnostics. Headless validation gains cancellation and capability-aware results, and fixes land for Safari 17 cancellation errors, idle re-renders, and several UI quirks.

    Keep panes when creating from a nested pane

    The structure tool takes a new opt-in option, keepPanesOnCreate :

    import { structureTool } from 'sanity/structure'
    export default defineConfig({
    // ...
    plugins: [structureTool({structure, keepPanesOnCreate: true})],
    })
    

    With it enabled, creating a document from a pane's own "create" button keeps the navigation panes visible instead of replacing them with a single document editor. The new document opens as that pane's child, and the panes before it collapse when there is not enough room, the same behavior as opening an existing document from a list. This matters most for structures built as trees, where the pane path is the editor's only indication of where in the tree they are working.

    It applies only to create actions offered by a pane that is currently open, matched on both the initial value template and its parameters. Deep links, reference links, and create actions for a type that no open pane offers are unaffected and still navigate to the matching location in the structure. The option defaults to off, so nothing changes unless you enable it.

    Limitations: an edit intent that matches nothing in the structure still replaces the pane path; and with split panes open, panes that would otherwise close can remain in the path.

    styled-components details in Studio diagnostics

    The Studio diagnostics dialog (help menu → Diagnostics, and the copied JSON report) gains a styled-components card when styled-components is on the page: the versions in use, the number of <style data-styled> sheets with a caution badge when there is more than one (a plugin shipping its own copy), and the number of CSS rules those sheets hold. The Studio card also reports whether the studio is auto-updating. In the JSON these appear as styles.styledComponents (one {ruleCount, version} entry per sheet) and studio.autoUpdates.

    TypeGen: query result types work across every copy of @sanity/client

    sanity typegen generate now registers each query's result type on a global SanityQueries interface instead of augmenting the @sanity/client module. The tail of the generated file changes from

    // Query TypeMap
    import "@sanity/client";
    declare module "@sanity/client" {
    interface SanityQueries {
    '*[_type == "post"]': PostsQueryResult;
    }
    }
    

    to

    // Query TypeMap
    declare global {
    interface SanityQueries {
    '*[_type == "post"]': PostsQueryResult;
    }
    }
    // Lets @sanity/client releases that predate the global registry read it too
    declare module "@sanity/client" {
    interface SanityQueries extends globalThis.SanityQueries {}
    }
    

    The global registry does not depend on module resolution, so typed client.fetch(query) results from @sanity/client, and typed sanityFetch({query}) results from next-sanity's defineLive, no longer require the generated file to resolve the exact same @sanity/client.d.ts as the rest of your code. In practice this means:

    • Monorepos and strict pnpm layouts: you no longer need @sanity/client as a direct dependency of the package that holds the generated types file, and you no longer need pnpm.overrides, Yarn resolutions, or npm overrides to force a single @sanity/client copy just to get typed fetches.
    • next-sanity: the @sanity/client copy that next-sanity nests under itself reads the same registry as your app's copy, so sanityFetch is typed without workarounds. Shims like the sanity.next-sanity.d.ts from the Next.js personal website template (declare module 'next-sanity' { interface SanityQueries extends ClientSanityQueries {} }) can be deleted.
    • @sanity/client/stega: ClientReturnStega and stega-enabled client.fetch calls pick up the generated types as well, including on the 7.x line.

    How to get it: upgrade sanity and run sanity typegen generate again. Nothing changes in sanity-typegen.json or in how you call the command. To benefit across multiple client copies, make sure each installed @sanity/client is 8.5.0+ or 7.27.0+ (for example pnpm update -r @sanity/client or npm update @sanity/client); a fresh lockfile picks these up automatically since they are in-range for ^8 and ^7.26.

    Compatibility:

    • Existing generated files that use the old declare module '@sanity/client' form keep working unchanged.
    • Older @sanity/client releases (6.21.0 and up) still work through the bridge line, but only for the one copy the generated file resolves, exactly as before.
    • This is about the types of query results. Passing a client instance created by one @sanity/client copy into an API typed against another copy (for example handing a root @sanity/client instance to defineLive while next-sanity nests its own client) is still a SanityClient class mismatch; create that client with createClient from next-sanity instead, as the official templates do.
    • The generated file no longer begins with a side-effect import "@sanity/client". If @sanity/client cannot be resolved from the generated file at all, a .ts output now reports TS2664 on the bridge line (previously TS2307 on the import under noUncheckedSideEffectImports); pointing generates at a .d.ts path avoids the error, since TypeScript skips ambient augmentations of unresolvable modules, and the global registry still types the installed client.
    • The generated file still has to be part of your TypeScript program (covered by include in tsconfig.json), as before.

    Headless validation: cancellation and capability-aware results

    Headless and workspace validation now accept signal. Aborting rejects with signal.reason (or AbortError) and cancels pending validation and network work.

    The headless @sanity/validation.validateDocument() returns {status, markers, skipped} and accepts an optional client plus customValidation. Use {client: undefined, customValidation: false} for guaranteed no-network structural validation. The validateDocument export from the sanity package is unchanged.

    🐛 Notable bugfixes and improvements

    • Fixes document validation and other concurrency-limited client fetches failing on Safari 17.0–17.3 with TypeError: AbortSignal.any is not a function. Cancellation now works on those Safari releases and continues to use the browser's native AbortSignal.any everywhere else.
    • Sanity Studio no longer re-renders parts of the UI while idle. Presence heartbeats from other collaborators and the periodic cross-dataset reference check previously caused continuous re-renders in every open studio tab, and typing in documents with advanced version control enabled recomputed divergence navigation state on every keystroke. No API changes.
    • The Draft perspective chip in the document header now stays orange when the document is published and has no draft. Previously the badge inherited the published (green) color.
    • Portable Text annotation edit popovers that contain a reference field now use the same ~640px width as the PTE column, and the reference search results list can show several documents at once instead of a single cramped row.
    • Fixes a bug that could cause the "This reference has changed since you opened it." banner to flicker erroneously, especially when the client's connection is slow.
    Original source
  • Sep 8, 2026
    • Date parsed from source:
      Sep 8, 2026
    • First seen by Releasebot:
      Sep 8, 2026
    Sanity logo

    Sanity

    v6.13.0

    Sanity ships Studio v6.13.0 with a broad mix of improvements, bug fixes, and platform upgrades. Highlights include stronger variants and validation support, better diagnostics, smoother performance, and refinements across comments, structure, and testing.

    Sanity Studio v6.13.0

    This release includes various improvements and bug fixes.

    For the complete changelog with all details, please visit:

    www.sanity.io/changelog/studio-Ni4xMi4w

    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

    Author

    Message

    Commit

    @juice49

    chore: Revert "chore(core): add condition resolver for variants (#14500) (#14654)

    46c80dc

    squiggler-app[bot]

    chore(deps): update dependency @chromatic-com/vitest to ^1.0.1 (#14536)

    8ccfb7f

    @bjoerge

    fix(radar): make drift detection noise-aware (#14648)

    dfa6bb2

    @stipsan

    fix(util): use get-it/any-signal so cancellation works on Safari 17 (#14641)

    c7feba7

    @pedrobonamin

    fix(core): keep draft chip avatar orange when no draft exists (#14598)

    c337ea3

    @bjoerge

    chore(radar): remove the one-off document id migration (#14640)

    d949dab

    @bjoerge

    chore(radar): remove dots from doc ids, add skills (#14636)

    c38b811

    squiggler-app[bot]

    chore(deps): dedupe pnpm-lock.yaml (#14635)

    3db6359

    squiggler-app[bot]

    chore(deps): update dependency @sanity/ui to ^4.1.1 (#14638)

    812a6cb

    squiggler-app[bot]

    chore(deps): update dependency @sanity/vanilla-extract-vite-plugin to ^0.2.18 (#14633)

    f9c4b91

    @jordanl17

    fix(form): constrain pte annotation reference picker width and results height (#14362)

    9f65aa6

    squiggler-app[bot]

    chore(deps): update dependency @sanity/ui to ^4.1.0 (#14634)

    b25d8ba

    squiggler-app[bot]

    chore(deps): dedupe pnpm-lock.yaml (#14525)

    e9705c2

    @juice49

    fix(sanity): false-positive appearance of ReferenceChangedBanner (#14518)

    cf59363

    @stipsan

    fix(test-studio): count styled ui v5 components as both systems (#14629)

    f4cf57a

    @stipsan

    chore(test): stop measuring vitest import durations (#14596)

    8bdfc52

    @stipsan

    fix(test-studio): shorten style panel labels and use green and red ui colors (#14615)

    11d2b0a

    @pedrobonamin

    feat(variants): gate definition delete on permission and explain server refusals (#14528)

    5aa89fa

    squiggler-app[bot]

    fix(deps): update playwright monorepo to v1.63.0 (#14611)

    6f941c3

    @stipsan

    chore(agents): add sanity-ui-migration-progress skill (#14542)

    c0d99c0

    squiggler-app[bot]

    fix(deps): update dev-non-major (#14583)

    e36a279

    @pedrobonamin

    chore(core): add condition resolver for variants (#14500)

    d88516e

    squiggler-app[bot]

    fix(deps): update portabletext (#14573)

    6830b9d

    @bjoerge

    chore(bench): settle mode and studio customization scenarios (#14438)

    1b5e786

    @stipsan

    feat(diagnostics): report styled components css size (#14591)

    9eaa196

    @stipsan

    feat(test-studio): split style migration metrics (#14590)

    068f07f

    @mikael-karlsson-weapp

    feat(structure): keep panes when creating from a nested pane (#14580)

    3f7137a

    @juice49

    refactor(sanity): move target scope selector to reusable React hook (#14578)

    d87b459

    @stipsan

    feat(core): report styled-components sheets and auto-updates in studio diagnostics (#14562)

    4d79e33

    @stipsan

    test(storybook): drop browser-test story re-exports and inline the shared harnesses (#14571)

    b29dbc7

    @bjoerge

    refactor(bench): build historical studios from packed tarballs (#14513)

    58ec8a6

    @stipsan

    fix(storybook): align storybook core to 10.6 with addon-vitest (#14577)

    1da9535

    squiggler-app[bot]

    fix(deps): update dev-non-major (#14554)

    5569634

    squiggler-app[bot]

    chore(deps): update dependency oxlint to ^1.81.0 (#14535)

    37aaf28

    squiggler-app[bot]

    fix(deps): update dependency @sanity/client to ^8.5.0 (#14541)

    0df8eb0

    @laurenashpole

    chore: migrate flex in misc structure directories (#14506)

    3d34bed

    squiggler-app[bot]

    chore(tests): generate dts tests 🤖 ✨ (#14569)

    66f8dae

    @stipsan

    chore(test-studio): make style outline panel opt-in (#14568)

    6f66fcc

    @stipsan

    feat(test-studio): add style outline debug panel (#14563)

    926de3c

    @stipsan

    fix(e2e): capture the studio request error dialog on failed attempts (#14558)

    9c01a9d

    squiggler-app[bot]

    fix(deps): update sanity-sdk to ^3.1.0 (#14564)

    0be9f4d

    @rexxars

    ci(renovate): group sdk dependencies (#14555)

    d47c6a4

    @stipsan

    fix(e2e): write flake report outputs relative to the invoking directory (#14561)

    e314e71

    @stipsan

    test(storybook): add ui5 flex sentinels for form input chrome (#14551)

    5eb54b6

    @stipsan

    test(e2e): capture studio diagnostics on failed attempts and report flake causes (#14453)

    28ff09f

    @laurenashpole

    chore: migrate flex in core/form/inputs (#14364)

    52467e2

    @laurenashpole

    chore: ui migrations in core/comments (#14459)

    37ed133

    @pedrobonamin

    test(e2e): harden reference publish gate and search results waits (#14529)

    5670635

    squiggler-app[bot]

    chore(deps): update dependency oxfmt to ^0.66.0 (#14534)

    f441e30

    squiggler-app[bot]

    chore(deps): update dependency knip to ^6.34.0 (#14533)

    921ad99

    @stipsan

    fix(deps): pin rolldown under vite to 1.2.5 so bundled dev mode loads again (#14547)

    2bb7574

    squiggler-app[bot]

    fix(deps): update dev-non-major (#14532)

    88b9f1c

    squiggler-app[bot]

    chore(deps): update dependency @testing-library/user-event to ^14.6.7 (#14530)

    a12c5a4

    @stipsan

    perf(sanity): fix idle and typing re-renders found via react devtools profiling (#14495)

    a0e2c6b

    @stipsan

    feat(typegen): register query result types on a global SanityQueries interface (#14537)

    b042601

    cursor[bot]

    test(storybook): add ui5 sentinels for comments-v2 dialogs and timeline (#14544)

    39b2ff4

    cursor[bot]

    test(storybook): add ui5 box and flex sentinels for previews and banners (#14315)

    6ecdfb1

    cursor[bot]

    test(storybook): add ui5 box sentinels for canvas and schedules (#14215)

    2a5f5af

    squiggler-app[bot]

    chore(deps): update dependency @types/node to ^24.13.3 (#14531)

    1837514

    cursor[bot]

    test(storybook): add ui5 sentinels for inspector search and detail (#14511)

    18ea7e1

    cursor[bot]

    test(storybook): add ui5 sentinels for navbar auth and trial (#14484)

    13f5380

    cursor[bot]

    test(storybook): add ui5 sentinels for alerts screens and request errors (#14448)

    a807e74

    cursor[bot]

    test(storybook): add ui5 sentinels for upsell errors and empty states (#14433)

    9a9d4de

    cursor[bot]

    test(storybook): add ui5 sentinels for cors schedules files and diffs (#14377)

    1d25898

    cursor[bot]

    test(storybook): add ui5 box sentinels for studio screens and search (#14349)

    8a4bfdf

    cursor[bot]

    test(storybook): add ui5 box sentinels for field diffs and releases (#14062)

    cd17b00

    cursor[bot]

    test(storybook): add ui5 box sentinels for structure and tasks (#14056)

    977fb58

    @stipsan

    feat(storybook): add visual coverage checker and skill (#14538)

    4286a96

    @pedrobonamin

    test(e2e): decouple array file drop test from asset upload latency (#14517)

    1793ee5

    squiggler-app[bot]

    fix(deps): update portabletext (#14526)

    8c00bc0

    @pedrobonamin

    chore(comments-v2): migrate layout and text primitives to ui5 (#14527)

    424de38

    @rexxars

    fix(deps): replace debug with obug (#14521)

    9712c5f

    squiggler-app[bot]

    chore(deps): update dependency @sanity/visual-editing-csm to ^3.0.18 (#14510)

    b452411

    squiggler-app[bot]

    chore(deps): update dependency react-rx to ^6.0.1 (#14522)

    8919822

    squiggler-app[bot]

    chore(deps): update pnpm to v11.25.0 (#14499)

    07eacd8

    @pedrobonamin

    chore(core): events store extract functions for tests (#14330)

    e5cc92e

    @pedrobonamin

    fix(core): enforce uniqueness validation in variant definition dialogs (#14515)

    505dba7

    @jonahsnider

    feat(validation): add cancellation support (#14307)

    b528986

    @jonahsnider

    feat(validation): add capability-aware results (#14306)

    7de17c2

    @stipsan

    perf(core): consolidate equality checks on dequal/lite and domain comparators (#14501)

    fccc674

    @laurenashpole

    refactor: migrate flex in structure/panes (#14505)

    9620989

    @rubioz

    feat(access-ui): surface SAML enforcement before the request form (#14357)

    7d6d93b

    @pedrobonamin

    chore(core): adds support for live edit variants (#14394)

    d888918

    squiggler-app[bot]

    chore(deps): update dependency zod to ^4.5.4 (#14498)

    dfe48e2

    @pedrobonamin

    ci(e2e): add agent-friendly failure report (#14217)

    404951e

    @hermanwikner

    feat(comments): add opt-in comments API plugin (#14451)

    22811af

    squiggler-app[bot]

    chore(deps): update dependency es-toolkit to ^1.52.0 (#14497)

    849c54b

    squiggler-app[bot]

    chore(deps): update chromaui/action action to v18.7.2 (#14502)

    4530455

    @pedrobonamin

    chore(core): add variants support to CopyDocumentActions (#14421)

    2c03ff5

    @pedrobonamin

    chore(core): adds siblings to useTargetDocumentState (#14393)

    c968ee4

    Original source
  • Sep 3, 2026
    • Date parsed from source:
      Sep 3, 2026
    • First seen by Releasebot:
      Sep 4, 2026
    Sanity logo

    Sanity

    Improvements and fixes in documents, dataset, and identity tools

    Sanity improves its AI and document tools with better account and ID validation, stronger timeout handling, clearer schema guidance, and fixes for content releases, search results, and patching array items and Portable Text annotations.

    Improvements

    • whoami tool: Include the active Sanity account in responses.
    • query_documents tool: Removed an unused parameter.
    • get_document tool: Validate provided document IDs.
    • query_documents tool: Gracefully handle Content Lake query timeouts.
    • Schema overviews: Improved guidance for retrieving exact field definitions.
    • create_dataset tool: Validate provided dataset names.

    Fixes

    • Content Releases: Ensure document changes are saved to the intended release.
    • search_docs tool: Fixed an error when no results were returned.
    • patch_documents tool:
      • Corrected the examples for targeting a single array item so they use valid JSON and no longer create selectors that match nothing.
      • Documented that adding a Portable Text annotation requires updating both markDefs and the target span’s marks in the same request.
    Original source
  • Sep 3, 2026
    • Date parsed from source:
      Sep 3, 2026
    • First seen by Releasebot:
      Sep 3, 2026
    Sanity logo

    Sanity

    Insights moves to the Context app, and the Studio plugin is deprecated

    Sanity 2.0 brings Context fully into the Sanity Dashboard, moving Insights and new setup configuration to the Context app while keeping existing Studio documents editable during migration. It adds unified conversation storage, new classification handling, and simpler telemetry sharing options.

    @sanity/context 2.0

    completes the move to the Context app in the Sanity Dashboard: Insights and configuration for new setups now live there. Existing Sanity Context documents remain editable in Studio, and conversations you've already recorded have been migrated to your organization's Context store.

    The plugin still registers the Sanity Context document type, so existing MCP context documents remain editable in Studio—now with a notice pointing at the migration guide. New setups create an MCP endpoint in the Context app instead. The plugin also works with both @sanity/ui v3 and v4, and no longer requires @sanity/icons, styled-components, @sanity/color, react-rx, or rxjs as peer dependencies.

    Conversations are stored in your organization's Context store through client.context, and the Insights dashboard has moved from Studio to the Context app. Classification runs on your side with your own AI SDK model. classifyConversations handles fetching, batching, and error handling in one call. A new sharing option on the telemetry integration lets you opt in to sharing metrics or full transcripts with Sanity to help improve Context.

    Breaking changes

    • Requires @sanity/client ^8.4.0 as a peer dependency, which comes with sanity 6.12 or later.
    • sanityInsightsIntegration now takes an organization-scoped client (context: {organizationId}) and tags conversations with metadata.mcpEndpoints instead of agentId.
    • saveConversation and generateConversationId are removed — save transcripts with client.context.conversations.save.
    • The conversation document type is no longer registered in Studio; conversations live in the Context store.

    Migrating takes a few minutes: re-create your MCP configuration as an endpoint in the Context app, then point your agent at the new URL with an organization-level API token. The migration guide has the step-by-step instructions.

    Original source
  • Sep 2, 2026
    • Date parsed from source:
      Sep 2, 2026
    • First seen by Releasebot:
      Sep 2, 2026
    Sanity logo

    Sanity

    SAML attributes now become lists when your identity provider sends more than one value

    Sanity improves SAML attribute handling by turning multi-value claims into lists instead of failing on type conflicts. It also warns admins to update Content Resource filters that compare user attributes to exact values so access rules keep working.

    SAML does not have a way to say that a claim holds exactly one value. Every claim arrives as a list of values. Sanity looks at how many values it receives and infers the type of the attribute: one value becomes a single value, and two or more values become a list.

    This means that a single-value attribute is a temporary state. It shows that no member has signed in with two values for that claim yet. It does not show that the claim can only hold one value.

    Before this change, a member who signed in with two values for a claim got a type conflict, and the attribute did not update. Now Sanity changes the attribute to a list, and keeps the values of all other members. The change applies to the whole organization, because the attribute is shared by all of its members. The change to a list is permanent for that attribute. A later sign-in with one value does not change the attribute back to a single value.

    What you must do

    Look at your Content Resource filters that use user::attributes(). If a filter compares a SAML attribute to an exact value, change it to test for list membership. Use this form:

    // Fragile: fails after the attribute becomes a list.
    user::attributes().department == "Engineering"
    
    // Recommended: works for a single value and for a list.
    "Engineering" in coalesce(
      user::attributes().department [],
      [user::attributes().department]
    )
    

    A filter that grants access can start to deny access if you do not update it. The values of your members do not change: only the shape of the values changes.

    Original source
  • Sep 2, 2026
    • Date parsed from source:
      Sep 2, 2026
    • First seen by Releasebot:
      Sep 2, 2026
    Sanity logo

    Sanity

    Dataset-aware asset usage and smoother video previews

    Sanity adds dataset visibility to asset usage and smoother video previews, making it easier to track where assets live and scrub video from the first frame. It also fixes asset sync across datasets and lets delete toasts be dismissed.

    This release brings dataset visibility to asset usage and smoother video previews.

    Dataset column in asset usage

    The usage table — both the "In use" dialog and the usage locations shown when you confirm a delete — now includes a Dataset column, so you can see which dataset each referencing document lives in without opening it. Two workspaces can point at the same asset from different datasets, and now you can tell them apart at a glance.

    Video previews start on the first frame

    Video thumbnails now rest on the first frame of the video instead of a frame from somewhere in the middle. Hovering to scrub picks up exactly where the thumbnail left off and runs to the last frame, so the preview reads as a natural progression rather than jumping backwards and forwards. The scrub position also applies immediately as your pointer enters a preview, instead of waiting for the next mouse move.

    🐛 Notable bugfixes

    • Syncing a new asset version across its usages only patched one location when a document with the same ID existed in two datasets of the same project. The sidebar then reported everything as up to date while the other dataset still referenced the old version. Each project and dataset combination is now treated as a distinct usage, so every location gets patched.
    • Toasts shown when deleting assets can now be dismissed. Previously they had no close button, so deleting several assets in a row stacked up notifications that blocked the interface for five seconds each.
    Original source
  • Sep 1, 2026
    • Date parsed from source:
      Sep 1, 2026
    • First seen by Releasebot:
      Sep 5, 2026
    Sanity logo

    Sanity

    Review your security posture in one place

    Sanity adds a read-only Security tab in Manage for project and org views, surfacing access risks and review links.

    Security-relevant settings for a project live across several pages in Manage. A new Security tab collects them into one view, available at both project and organization level.

    The Security tab shows:

    • Members and how many hold admin access
    • Long-lived API tokens with no expiration set
    • CORS configuration, including origins worth reviewing
    • Which datasets are publicly readable
    • SAML status, on plans that include it

    Each recommendation links to the page where you can act on it. The tab is read-only and free for all users, with no configuration required.

    Original source
Releasebot

Curated by the Releasebot team

Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.

Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.