Skip to content

fix(deps): update sanity packages - #1864

Merged
aulonm merged 1 commit into
mainfrom
renovate/sanity-packages
Sep 29, 2026
Merged

aulonm merged 1 commit into
mainfrom
renovate/sanity-packages

Conversation

@renovate

@renovate renovate Bot commented Aug 22, 2026 •

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@portabletext/react 8.0.0 → 8.0.1 age confidence
@sanity/assist (source) 6.1.19 → 6.2.1 age confidence
@sanity/client (source) 8.0.0 → 8.7.0 age confidence
@sanity/code-input (source) 7.3.5 → 7.3.8 age confidence
@sanity/preview-url-secret (source) 4.1.4 → 4.1.5 age confidence
@sanity/table (source) 3.1.14 → 3.1.16 age confidence
@sanity/vision (source) 6.9.2 → 6.16.0 age confidence
@sanity/visual-editing (source) 6.0.4 → 6.1.2 age confidence
groq (source) 6.9.2 → 6.16.0 age confidence
sanity (source) 6.9.2 → 6.16.0 age confidence

Release Notes

portabletext/react-portabletext (@​portabletext/react)

v8.0.1

Compare Source

Patch Changes
sanity-io/plugins (@​sanity/assist)

v6.2.1

Compare Source

Patch Changes
  • #​2000 dc37379 Thanks @​pedrobonamin! - Create a real draft before AI Assist writes when the document was just published. Generate image description, translate document, and translate fields no longer fail or overwrite published content by targeting drafts.<id> while only a virtual draft exists.
    Fixes #​660 #​663 #​666 #​667

v6.2.0

Compare Source

Minor Changes
  • #​1994 532ceff Thanks @​kevindice! - Add assist.maxFieldSelectionDepth to configure how deeply nested a field can be and still get AI Assist: the field action (sparkle button), the field picker in the instruction editor and field references in instructions. This depth was hardcoded to 6 path segments, so deeper fields silently disappeared from AI Assist and neither assist.maxPathDepth nor translate.field.maxPathDepth could change that. The default is still 6, so nothing changes unless the option is set.
Patch Changes
  • #​1991 49337b4 Thanks @​stipsan! - Replace react-fast-compare with dequal/lite in useListeningQuery and the inspector's pane-param comparison (same verdicts on the JSON payloads these compare, smaller import)

v6.1.21

Compare Source

Patch Changes
  • #​1928 3195e01 Thanks @​stipsan! - Compile React Compiler memoization with the native oxc transform (reactCompiler: {transform: 'oxc'} from @sanity/tsdown-config 0.26, backed by oxc-transform-react) instead of babel-plugin-react-compiler

v6.1.20

Compare Source

Patch Changes
sanity-io/client (@​sanity/client)

v8.7.0

Compare Source

Minor Changes
  • abort underlying EventSource request when response fails validation (#​1340) (ba3de6b)

  • add per-resource schema, query and projection registries (#​1334) (b43e033)

    SanitySchemasByResource, SanityQueriesByResource and SanityProjectionsByResource join the existing SanityQueries registry, following the same pattern: a global interface that the interface exported from @sanity/client inherits from, so a generated file can register either way and does not depend on module resolution.

    Each is keyed by a resource, using the same string the App SDK already uses for its runtime cache, projectId.dataset for a dataset. This is what lets two datasets whose schemas disagree register different result types for the same query text, which the flat SanityQueries registry cannot express. Projections add a document-type level, because a projection resolves against whichever document the caller's handle names.

    All three are empty by default and nothing in the client reads them yet. client.fetch and ClientReturn are unchanged, and keep resolving through the flat registry. They exist for consumers that do resource-aware lookups themselves, starting with the App SDK's hooks.

Patch Changes

v8.6.2

Patch Changes

v8.6.1

Patch Changes
  • drop the any-signal dependency and combine abort signals with get-it/any-signal, which uses native AbortSignal.any where it exists and a plain AbortController on Safari 17.0-17.3 (#​1329) (4b5c198)

v8.6.0

Minor Changes
  • conversation sharing opt-in and createdBy reach client.context types (#​1317) (2459ebe)
Patch Changes
  • use any-signal instead of AbortSignal.any so cancellable requests work on Safari 17.0-17.3 (#​1326) (f87523e)

v8.5.0

Minor Changes
  • read query result types from a global SanityQueries interface (#​1319) (18313fe)

    Query result types can now be registered on a global SanityQueries interface, which the SanityQueries interface exported from @sanity/client inherits from. client.fetch, ClientReturn and ClientReturnStega resolve registrations made either way, so the declare module '@sanity/client' augmentation that Sanity TypeGen has emitted so far keeps working unchanged. The global registry does not depend on module resolution: it is seen whether or not @sanity/client is a direct dependency of the generated file, however many copies of the client are installed, and from every entry point including @sanity/client/stega.

Patch Changes

v8.4.0

Compare Source

Minor Changes
  • add description field to dataset (#​1182) (027be06)
  • add client.context with knowledge bases, builds, triage, telemetry, and GROQ reads (#​1276) (1e991a7)
Patch Changes

v8.3.0

Compare Source

Minor Changes
  • invoke functions synchronously or asynchronously (#​1295) (d1667c7)

    client.functions.invoke() now takes an options argument and accepts sanity.function.durable
    and sanity.function.queue functions alongside sanity.function.pubsub.

    By default the invocation is queued: the call resolves with undefined as soon as the
    service accepts it, without waiting for the function to run. Pass {sync: true} to keep the
    request open until the function finishes and resolve with its return value — that adds a
    ?sync=true query parameter to the invoke request, and remains limited to
    sanity.function.pubsub.

    // Async — resolves once accepted, with no return value.
    await client.functions.invoke("my-func", {
      event: { data: { hello: "world" } },
    });
    
    // Sync — resolves with whatever the function returns.
    const result = await client.functions.invoke<Result>(
      "my-func",
      { event: { data: { hello: "world" } } },
      { sync: true }
    );

    The return type follows the option: a call with {sync: true} resolves with R, while an async
    call resolves with undefined. Callers who pass an explicit type argument without {sync: true}
    keep the previous R | undefined shape.

  • collaboration: resolve comment range from optional fieldValue (#​1299) (88073e6)

v8.2.0

Compare Source

Minor Changes
  • add collaboration comments client (@alpha) (#​1235) (5906f72)

  • add variant actions (#​1279) (dd25720)

    Adds CreateVariantAction, EditVariantAction, DeleteVariantAction, PublishVariantAction and
    UnpublishVariantAction, along with a VariantAction union, covering the
    sanity.action.document.variant.* actions. They are included in the Action union, so
    client.action() accepts them.

    Each action addresses a variant document by the publishedId, variantId and bundleId triple
    rather than by document ID, since the API derives the document ID from those three values.

    Note that Action widening is a breaking change for code that exhaustively switches on
    Action['actionType'] with a never fallthrough, which will need to handle the new cases.

v8.1.0

Compare Source

Minor Changes
  • add client.functions.invoke() for calling deployed functions on demand (#​1258) (4c2f718)

    Invoke a Sanity Pubsub Function by the name. Only sanity.function.pubsub functions can be
    invoked on demand.

    Available in two forms, client.functions.invoke() resolves with the function's return value, client.observable.functions.invoke() emits it and accepts an event.data payload,
    a per-call timeout and an AbortSignal.

    Names are only unique within a stack, so resolving one requires a stackId, either from the new
    stackId client config option or from the request. That resolution costs one extra request per
    call. A function that returns nothing resolves to undefined.

    Stacks deployed at organization scope are reached with the new organizationId client config
    option, or a per-call organizationId. It takes precedence over projectId, which becomes
    optional in that case.

  • add request handler for client integrations (#​1286) (a9db52f)

  • add variant definition actions (#​1278) (7c98361)

    Adds CreateVariantDefinitionAction, EditVariantDefinitionAction and
    DeleteVariantDefinitionAction, along with a VariantDefinitionAction union, covering the
    sanity.action.variant.definition.* actions. They are included in the Action union, so
    client.action() accepts them.

    Note that Action widening is a breaking change for code that exhaustively switches on
    Action['actionType'] with a never fallthrough, which will need to handle the new cases.

Patch Changes
  • route the live-events CORS probe through the configured transport (#​1282) (aaada67)

    The /check/cors probe that client.live.events() uses to distinguish a CORS
    rejection from other connection failures called the global fetch directly, so
    a custom resolveFetch or an explicit proxy was not applied to it. It now
    resolves the same fetch the EventSource connection uses.

  • reword the createVersion() warning about baseId (#​1282) (aaada67)

    createVersion({document}) warned that "the recommended approach is to provide a baseId and releaseId instead", which reads as a correction even when the caller had no other option: baseId creates a version of a document that already exists, so creating a genuinely new document inside a release can only be done by passing document.

    The client cannot tell those two cases apart, so the warning is now phrased as a condition rather than a correction: "If you are creating a version of a document that already exists, prefer providing baseId and releaseId instead." No behavior changed, and both forms remain supported.

  • correct the return type of delete() and mutate() when called with no options (#​1282) (aaada67)

    client.delete(id) and client.mutate(mutations) were typed to resolve to a
    document (SanityDocument<R>) when called without an options argument, but
    they actually resolve to a mutation result object
    ({transactionId, documentIds, results}, MultipleMutationResult). The
    document is genuinely mutated, but code that read ._id off the resolved
    value was reading undefined at runtime without any type error. The
    underlying method (create()) does return the document by default, so this
    was easy to assume also held for delete() and mutate() - it does not.

    Both methods now correctly type as resolving to MultipleMutationResult by
    default, matching the (unchanged) runtime behavior, on both the
    promise-based and observable clients.

    Released as a patch rather than a major even though a declared type changed. Code that read ._id off the result was reading undefined at runtime, so no working application can have depended on the old type: anything that type-checked against it was already broken when it ran. What changes is that the mistake is now visible at compile time instead of at runtime.

    If tsc starts failing on one of these calls, that failure is pointing at a real bug. To fix it:

    • To get the document back, pass {returnFirst: true, returnDocuments: true}
      explicitly: await client.delete(id, {returnFirst: true, returnDocuments: true}).
    • To keep the mutation-result shape, read documentIds (or documentId with
      returnFirst: true) off the result instead of _id.

    No runtime behavior changed - this only corrects the public types.

  • populate server-sent event IDs on Cloudflare Workers (#​1282) (aaada67)

    client.live.events() and client.listen() read lastEventId off the
    MessageEvent that eventsource constructs. workerd does not carry that member
    through the MessageEvent constructor's init dict, so on bare Cloudflare Workers
    every event arrived with an empty id. Raising the eventsource floor to
    >= 5.1.0 picks up the fix.

  • return the asset from assets.upload() against a Media Library (#​1282) (aaada67)

    client.assets.upload() resolved to undefined when the client was configured against a Media Library (resource: {type: 'media-library', id}), even though the upload succeeded server-side. Content Lake's upload endpoint responds with {document: {...}}, and upload() unwrapped that key unconditionally - but the Media Library upload endpoint responds with {asset: {...}} instead, so the unwrap produced undefined.

    upload() now unwraps .asset for a Media Library response and .document otherwise, on both the promise-based and observable clients. It resolves to the uploaded asset instead of undefined.

    The Media Library asset shape is not the same as a Content Lake asset document: it is a sanity.asset document that tracks one or more uploaded versions via currentVersion/versions, rather than a document with url, size, mimeType, and so on. That shape is now exported as MediaLibraryAssetDocument.

    The declared return type is knowingly incomplete, and this is a patch on purpose. Which shape you get back depends on how the client is configured, not on the arguments to upload(), so no overload can discriminate it. Expressing it would mean widening the return type into a union that every existing caller has to narrow - a breaking change for all users, to correct the typing of a much less common configuration. So the declared type still describes only the Content Lake shape. If you upload to a Media Library, narrow the result yourself (for example, check for currentVersion) or annotate it as SanityImageAssetDocument | MediaLibraryAssetDocument. Typing this accurately is deferred to the next major.

sanity-io/plugins (@​sanity/code-input)

v7.3.8

Compare Source

Patch Changes

v7.3.7

Compare Source

Patch Changes
  • #​1928 3195e01 Thanks @​stipsan! - Compile React Compiler memoization with the native oxc transform (reactCompiler: {transform: 'oxc'} from @sanity/tsdown-config 0.26, backed by oxc-transform-react) instead of babel-plugin-react-compiler

v7.3.6

Compare Source

Patch Changes
sanity-io/visual-editing (@​sanity/preview-url-secret)

v4.1.5

Compare Source

Patch Changes
sanity-io/plugins (@​sanity/table)

v3.1.16

Compare Source

Patch Changes
  • #​1928 3195e01 Thanks @​stipsan! - Compile React Compiler memoization with the native oxc transform (reactCompiler: {transform: 'oxc'} from @sanity/tsdown-config 0.26, backed by oxc-transform-react) instead of babel-plugin-react-compiler

v3.1.15

Compare Source

Patch Changes
sanity-io/sanity (@​sanity/vision)

v6.16.0

Compare Source

Bug Fixes

v6.15.0

Compare Source

Sanity Studio v6.15.0

This release includes various improvements and bug fixes.

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

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
@​shapirodaniel fix(validation): accept allowed object array selections (#​14765) e570612
@​joshuaellis fix(core): read the workbench auth token through the SDK message bus (#​14758) 41ba5da
@​pedrobonamin fix(core): restore padding bottom on scrollable dialogs (#​14763) 10ff9aa
squiggler-app[bot] fix(deps): update sanity-sdk to ^3.2.0 (#​14743) 825c031
@​joshuaellis fix(core): replace stale editSchedule key in VersionChip test fixture (#​14759) 9edcf59
@​rexxars chore: upgrade obug to v3 (#​14746) c005f99
@​jordanl17 feat(structure): add pause to edit for scheduled drafts (#​14274) 6f71196

v6.14.1

Compare Source

Sanity Studio v6.14.1

[!NOTE]
This release fixes a data-loss bug present in 6.9.2 through 6.14.0. Those versions are now deprecated.

This release includes various improvements and bug fixes.

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

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
squiggler-app[bot] fix(deps): update portabletext (#​14667) 663d296
@​jordanl17 fix(core): pin document color-scheme to the resolved studio appearance (#​14745) c2b3fc2
@​christianhg fix(form): never rewrite a Portable Text block removal to a whole-field unset (#​14747) 8118ccc

v6.14.0

Compare Source

Sanity Studio v6.14.0

[!NOTE]
This version of Sanity Studio has a potential data-loss bug when working with Portable Text fields. This issue is resolved in 6.14.1. Upgrade with: npm install sanity@latest. See https://www.sanity.io/docs/studio/upgrade

This release includes various improvements and bug fixes.

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

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
@​pedrobonamin fix(core): reference input autocomplete unexpected blink (#​14740) a8a4e33
@​pedrobonamin fix(core): use intent link for variants duplicate message (#​14735) 0b7173e
squiggler-app[bot] chore(tests): generate dts tests 🤖 ✨ (#​14736) 384c1ef
@​bjoerge fix(form): keep popovers inside pane when opened from dialogs (#​14734) 2c23972
@​laurenashpole chore: final pass migrating grid (#​14731) 3724f76
@​bjoerge chore(radar): support test-studio repro path for bisect and releases (#​14733) 93e4716
@​hermanwikner feat(tasks): opt task comments into the Comments API (#​14519) 86855b9
@​juice49 fix(sanity): choose-document-destination banner incorrectly superseded deleted-document banners (#​14721) a7fcc7c
@​stipsan chore(deps): upgrade react-rx to 7.0.0 (#​14643) 4fe0cb3
@​christianhg fix(portable-text): only show the annotation toolbar popover for collapsed selections (#​14713) b670874
@​laurenashpole chore: migrate flex in dev (#​14523) 8a5c680
@​stipsan chore(deps): upgrade vite (#​14700) d7d7278
squiggler-app[bot] chore(deps): dedupe pnpm-lock.yaml (#​14718) 4fc90ff
@​stipsan fix(examples): stop importing ui5 in ecommerce studio (#​14681) dee6ac7
squiggler-app[bot] fix(deps): update dev-non-major (#​14706) f0f5e66

v6.13.2

Compare Source

Bug Fixes

v6.13.1

Compare Source

Bug Fixes

v6.13.0

Compare Source

Performance Improvements
  • core: consolidate equality checks on dequal/lite and domain comparators (#​14501) (fccc674)

v6.12.0

Compare Source

Features
Bug Fixes

v6.11.0

Compare Source

Bug Fixes
Performance Improvements

v6.10.1

Compare Source

Bug Fixes
  • build: bake correct package version into cdn module bundles (#​14155) (3e5a82e)

v6.10.0

Compare Source

Features
Bug Fixes
sanity-io/visual-editing (@​sanity/visual-editing)

v6.1.2

Compare Source

Patch Changes

v6.1.1

Compare Source

Patch Changes

v6.1.0

Compare Source

Minor Changes
  • #​3620 8748e20 Thanks @​rexxars! - feat: accept any @sanity/client version in the loaders via SanityClientLike

    Options that took a client used to be typed as SanityClient | SanityStegaClient. SanityClient
    declares a #private field, which makes it nominal rather than structural, so a client only
    satisfied it when it came from the exact same copy of @sanity/client. Passing a client from a
    different major failed to typecheck, and so did a duplicate install of the same version:

    Type 'SanityClient' is not assignable to type 'SanityClient | SanityStegaClient'.
      Property '#private' in type 'SanityClient' refers to a different member that cannot be
      accessed from within type 'SanityClient'.
    

    These options now take SanityClientLike, a structural interface covering only what the loaders
    use: config(), withConfig() and fetch(). Any client satisfies it, from any version, including
    the ones from @sanity/client/stega, @sanity/preview-kit/client and next-sanity.

    This affects createQueryStore({client}), setServerClient(), enableLiveMode({client}),
    useLiveMode({client}), handlePreview({client}) and handleLoadQuery({client}). All of them
    accept strictly more than before, so no changes are needed.

    For SvelteKit, event.locals.client still gives you the full SanityClient API. If your app
    resolves a different copy of @sanity/client than these packages do, name your own client type in
    app.d.ts to avoid a mismatch:

    import type {SanityClient} from '@sanity/client'
    import type {LoaderLocals} from '@sanity/svelte-loader'
    
    declare global {
      namespace App {
        interface Locals extends LoaderLocals<SanityClient> {}
      }
    }

    The one narrowing is unstable__serverClient.instance, which is now SanityClientLike. It is
    marked @internal and prefixed unstable__.

Patch Changes

❗ Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone Europe/Oslo)

  • Branch creation
    • "before 6am on Saturday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate using a preset from Obos. View repository job log here

@renovate
renovate Bot requested a review from a team as a code owner August 22, 2026 03:41
@changeset-bot

changeset-bot Bot commented Aug 22, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: d9a3e5a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@renovate
renovate Bot force-pushed the renovate/sanity-packages branch 7 times, most recently from 2c95c72 to 5a415da Compare August 29, 2026 11:35
@renovate
renovate Bot force-pushed the renovate/sanity-packages branch from 5a415da to f2f0af3 Compare August 30, 2026 23:35
@renovate
renovate Bot force-pushed the renovate/sanity-packages branch 7 times, most recently from 6c41fce to c2ba1d6 Compare September 9, 2026 15:41
@renovate
renovate Bot force-pushed the renovate/sanity-packages branch 7 times, most recently from 071cb4c to 173a0c9 Compare September 15, 2026 23:15
@renovate
renovate Bot force-pushed the renovate/sanity-packages branch 3 times, most recently from 449bc92 to d1bb76b Compare September 20, 2026 15:28
@renovate
renovate Bot force-pushed the renovate/sanity-packages branch 7 times, most recently from ef1643d to dfac49a Compare September 26, 2026 20:08
@renovate
renovate Bot force-pushed the renovate/sanity-packages branch from dfac49a to d9a3e5a Compare September 29, 2026 05:05
@aulonm
aulonm merged commit 72a8f8b into main Sep 29, 2026
2 checks passed
@aulonm
aulonm deleted the renovate/sanity-packages branch September 29, 2026 11:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant