Skip to content

chore(deps): update non-major - #356

Merged
stipsan merged 1 commit into
mainfrom
renovate/non-major
Oct 13, 2026
Merged

stipsan merged 1 commit into
mainfrom
renovate/non-major

Conversation

@renovate

@renovate renovate Bot commented Sep 1, 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 Type Update
@sanity/client (source) ^8.4.0 → ^8.9.0 age confidence devDependencies minor
@sanity/tsdown-config (source) ^0.27.1 → ^0.28.8 age confidence devDependencies minor
@sanity/ui (source) ^4.0.7 → ^4.4.4 age confidence devDependencies minor
@types/react (source) ^19.2.18 → ^19.3.0 age confidence devDependencies minor
@types/react-dom (source) ^19.2.5 → ^19.3.0 age confidence devDependencies minor
@types/ws (source) ^8.18.1 → ^8.18.2 age confidence devDependencies patch
@vitejs/plugin-react (source) ^6.1.1 → ^6.1.2 age confidence devDependencies patch
groq (source) ^6.12.0 → ^6.18.0 age confidence devDependencies minor
oxc-transform-react (source) ^0.147.0 → ^0.153.0 age confidence devDependencies minor
oxfmt (source) ^0.66.0 → ^0.72.0 age confidence devDependencies minor
oxlint (source) ^1.81.0 → ^1.87.0 age confidence devDependencies minor
oxlint-tsgolint ^7.0.2001 → ^7.0.2004 age confidence devDependencies patch
portabletext/.github (changelog) a311e91 → 10bcd35 workflow digest
react (source) ^19.2.8 → ^19.3.0 age confidence devDependencies minor
react-dom (source) ^19.2.8 → ^19.3.0 age confidence devDependencies minor
react-is (source) ^19.2.8 → ^19.3.0 age confidence devDependencies minor
sanity (source) ^6.12.0 → ^6.18.0 age confidence devDependencies minor
tsdown (source) ^0.22.14 → ^0.23.1 age confidence devDependencies minor
vite (source) ^8.2.2 → ^8.3.4 age confidence devDependencies minor

Release Notes

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

v8.9.0

Compare Source

Minor Changes
  • update client.context types with the latest Context API descriptions (#​1349) (5b9a346)

v8.8.0

Compare Source

Minor Changes
  • collaboration: accept comment anchor, deprecate range (#​1346) (4ce6968)

    Create and update now take a typed anchor (type: "portable-text" with optional fieldValue on the anchor). Deprecated range + top-level fieldValue (and range: null) are still accepted and sent as anchor.

  • export getCommentTargetDocumentRef from @sanity/client/collaboration (#​1343) (71d414a)

    Builds the global document reference a collaboration comment stores in target.document._ref from a resource and a document ID, with no client involved. client.collaboration.comments.getTargetDocumentRef is unchanged and now calls it, reading the resource off the client's configuration.

    Until now the reference could only be built through a client instance, which meant code that needs it somewhere a client should not be fetched or created, such as a state selector, had to reach for one anyway. Pass the same value ClientConfig['resource'] takes, for example {type: 'dataset', id: 'abc123.production'}.

    import { getCommentTargetDocumentRef } from "@sanity/client/collaboration";
    
    getCommentTargetDocumentRef(
      { type: "dataset", id: "abc123.production" },
      "drafts.doc-1"
    );
    // 'dataset:abc123.production:doc-1'
  • collaboration: send clientVersion on comment writes (#​1347) (da15b5e)

  • update client.context types to the latest Context API (#​1348) (69ccdd4)

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
sanity-io/pkg-utils (@​sanity/tsdown-config)

v0.28.8

Compare Source

Patch Changes

v0.28.7

Compare Source

Patch Changes

v0.28.6

Compare Source

Patch Changes

v0.28.5

Compare Source

Patch Changes

v0.28.4

Compare Source

Patch Changes

v0.28.3

Compare Source

Patch Changes

v0.28.2

Compare Source

Patch Changes

v0.28.1

Compare Source

Patch Changes

v0.28.0

Compare Source

Minor Changes
  • #​3406 5372ae6 Thanks @​stipsan! - Upgrade tsdown and @tsdown/css to 0.23.

    BREAKING: the @sanity/tsdown-config and @sanity/vanilla-extract-tsdown-plugin
    tsdown peer range is now ^0.23.0; tsdown 0.22 is no longer supported. Node.js 25
    can no longer run either package or pkg build. Use Node ^22.18.0, ^24.11.0, or
    >=26.0.0.

    tsdown 0.23 removes deprecated config options. Replace dts.tsgo: true and
    dts.oxc: true with dts.generator: 'tsgo' and dts.generator: 'oxc'.
    Replace dts.oxc: false with dts.generator: 'tsc'. Remove dts.cjsReexport.
    Replace dts.volarPlugins with dts.customLanguages and rename each language's
    create hook to createVolarPlugins.
    Under deps, replace skipNodeModulesBundle: true with neverBundle: true
    and onlyAllowBundle with onlyBundle.

    deps.resolveDepSubpath: true preserves the old dependency-specifier behavior.
    pkg watch now closes tsdown's native watch handle, including its Rolldown watchers
    and keyboard-shortcut resources, and sets ignoreWatch on package.json and
    tsconfig.json so tsdown does not restart itself and orphan a watcher that abort
    cannot close. CSS builds now need @tsdown/css@0.23.0, the exact version tsdown 0.23
    pins.

    tsdown 0.23 also emits declarations with inline export declare modifiers instead of
    a trailing export list. A .d.ts with no export statement is an export context, so a
    type that the source left unexported becomes part of the published API. Export the
    types you mean to publish and tag them @public.

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

v4.4.4

Compare Source

Patch Changes
  • #​3169 7276c74 Thanks @​stipsan! - Avatar, AvatarCounter, Button and Switch now load more of their styles from @sanity/ui/styles.css instead of generating them with JavaScript at runtime. This reduces runtime styling work while keeping the combined JavaScript and CSS download size nearly unchanged.

    The components keep the same appearance, props and HTML structure. Theme-dependent and responsive styles continue to work as before, including Button's width="fill" option.

    When upgrading:

    • Keep importing @sanity/ui/styles.css in your app's entry point.
    • If you customize these components with styled-components, make sure that stylesheet loads before styled-components' generated style tags. When your custom CSS targets an element with the same selector specificity as the library's CSS, the rule loaded last wins. For example, a white-space override in styled(Button) now depends on this order.

    This is the same stylesheet load-order requirement introduced for other components in 4.1.0 and 4.2.0. If your app already follows it, no changes are needed.

v4.4.3

Compare Source

Patch Changes
  • #​3174 513fe51 Thanks @​stipsan! - Fix a regression introduced in 4.4.2 where calling event.preventDefault() in the button's onClick or onKeyDown handler stopped MenuButton from opening. These handlers still run first, but preventDefault() no longer blocks the menu from opening or toggling. To keep the menu closed, disable the button.

  • #​3170 246ad17 Thanks @​stipsan! - Improve rendering performance by sharing common CSS across components instead of generating duplicate styles for each combination of props. This reduces the amount of CSS your app generates and the work needed to render it, especially on pages with many Sanity UI components.

    Across our Storybook stories in both light and dark mode, generated CSS was 77% smaller and style generation took 54% less time. In a server-rendering benchmark, generated CSS was 80% smaller and rendering took 63% less time. Results will vary by app.

    No changes to your code are needed to benefit from these improvements, and components using the built-in themes look the same.

v4.4.2

Compare Source

Patch Changes
  • #​3138 2340587 Thanks @​stipsan! - Fix Autocomplete value syncing, responsiveness, and focus:

    • Apply value changes immediately without clearing a typed query when the parent echoes the current value.
    • Defer option component rendering when opening the list; filtering and renderOption still run before paint. Closing remains immediate.
    • Keep input focus when opening the list on focus, even if the selected option is a link or button.
    • Set aria-activedescendant only while the list is visible.
  • #​3144 4916f1e Thanks @​stipsan! - Remove unnecessary MenuButton re-renders when registering elements or hiding and showing them with <Activity>, preventing delayed or skipped <ViewTransition> animations. Set the forwarded button ref on mount rather than one render later.

  • #​3137 20c5d3e Thanks @​stipsan! - Fix MenuButton event handling:

    • Preserve the button's onClick, onKeyDown, and onMouseDown handlers. They run first; event.preventDefault() skips the menu's default action.
    • Call onOpen and onClose during the triggering event, batching their state updates with the menu's. onOpen now runs before the menu renders, and callback errors are not caught by error boundaries.
  • #​3139 4bb2462 Thanks @​stipsan! - Fix MenuGroup state and styling:

    • Clear pressed and child-menu state as soon as a sibling becomes active.
    • Transition child-menu updates so slow rendering does not delay the item's highlight.
    • Activate the group when a click or ArrowRight opens its child menu, even without a preceding hover.
    • Only set data-pressed while pressed for as="a" and as="div", fixing incorrect pressed styling on links.
  • #​3143 650ff7e Thanks @​stipsan! - Remove unnecessary Tooltip and Popover re-renders when their reference element mounts or <Activity> hides or shows it, preventing delayed or skipped <ViewTransition> animations. Set child refs on mount and preserve them when Popover uses a separate referenceElement.

  • #​3141 153a456 Thanks @​stipsan! - Fix Popover sizing:

    • Reduce extra renders when positioning or resizing.
    • Apply constrainSize and matchReferenceWidth changes on the next positioning pass, clearing the applied max height or matched width when disabled.
    • Clear stale max widths for zero-width boundaries and clamp negative sizes to zero.
    • Give calculated sizes precedence over conflicting style values; other styles still apply.

v4.4.1

Compare Source

Patch Changes

v4.4.0

Compare Source

Minor Changes
  • #​3119 62f1b90 Thanks @​stipsan! - Popover (and with it MenuButton, MenuGroup, Autocomplete and Breadcrumbs) no longer pre-renders its closed content eagerly. Since v4, every closed popover rendered its card and content inside a hidden <Activity> boundary from the moment it mounted, so a page with many popovers that are never opened paid for all of that hidden DOM. Now nothing is rendered until the popover opens or is about to: the hidden pre-render starts when the reference element receives focus or a pointer enters or presses it, in a transition, so a click that follows right away is never held up by it. A popover that opens without any of that (programmatically, or with open set from the start) renders when it opens. Once rendered, a popover stays rendered while closed, as before, so the state of its content survives reopening.

    There is no option to pre-render eagerly or to skip the pre-render on intent. Popover is controlled through open, so a consumer that does not want its content rendered before it opens can leave content empty until then.

    Tests that read the content of a popover or menu that has never been opened or interacted with need to open it first: expect(screen.getByText('Popover content')).not.toBeVisible() only holds once the popover has rendered, before that screen.queryByText('Popover content') is null. Queries that skip inaccessible elements (*ByRole) need no change.

  • #​2757 2050b09 Thanks @​stipsan! - Add support for styled-components v7 while continuing to support v6.1 and later.

Patch Changes
  • #​3142 45f91d5 Thanks @​stipsan! - Breadcrumbs opens and closes the popover with its collapsed items in a transition (startTransition), as every update of a Popover's open should be. A closed popover pre-renders its content hidden, in a transition, once its reference element shows intent to open it; when open changes in a transition too, React keeps rendering that content in the background if the open comes before it is done, instead of rendering it synchronously in the click. Content that was pre-rendered already still shows in the first frame after the click.

    The open prop of Popover now documents this for consumers that control it themselves: set it inside startTransition, wrapping the state update itself (a startTransition around code that schedules the update for later, such as a timeout, does not reach it).

  • #​3134 0930b21 Thanks @​stipsan! - fix(dialog): scope click-outside and focus handling to the portal element the dialog renders into. Dialog now resolves its portal element with the same function as Portal, so a dialog with a portal name whose entry is missing falls back to the default portal element for its scoping, as it already did for rendering. Previously it resolved null in that case, which disabled the scoping: clicks and Escape presses from anywhere in the document closed the dialog, and focus leaving the boundary and portal elements after a click inside the dialog was not moved back.

  • #​3125 bd46862 Thanks @​stipsan! - ElementQuery no longer reads window.innerWidth during render. It starts its ResizeObserver from a layout effect, so the browser delivers the element's width after layout and before the first paint, and it writes data-eq-min / data-eq-max onto the element from the observer callback instead of through state. The first paint now reflects the element's own width rather than the viewport's, a resize no longer re-renders the component, and the component is safe to render on the server.

  • #​3131 f2fd1dc Thanks @​stipsan! - fix(hooks): keep useMediaIndex subscribed when the theme object changes but its breakpoints do not. The hook keyed its media query store on the identity of the theme's media array, so a different theme object with the same breakpoints (buildTheme({media}) built per workspace or scheme, cloned or deserialized themes) tore down and re-created media.length + 1 MediaQueryLists and change listeners in every subscribed hook. Equal breakpoint arrays now resolve to one canonical instance, so only an actual change of breakpoints re-subscribes.

  • #​3129 158f593 Thanks @​stipsan! - Popover only observes the size of its boundary element while it is open. Every popover used to subscribe to a ResizeObserver on the boundary from the moment it mounted, so a page with many closed popovers re-rendered all of them on every boundary resize. The boundary is measured synchronously when the popover opens, so its max width is right in the first painted frame, and followed while it stays open. Floating UI itself was already idle while closed (the floating element lives inside a hidden <Activity> boundary, which detaches its ref), so a closed popover now holds no boundary or Floating UI observation and no positioning listeners; the only thing it keeps are the intent listeners on its reference element until it has rendered once.

    The shared element size observer behind useElementSize now forgets an element once its last subscriber unsubscribes, so a later subscriber starts a new observation. It used to keep the element without an observer (or, when another subscriber had left last, keep an observer no one could stop), so a hook that resubscribed to the same element never received a size again.

  • #​3127 1c8fd85 Thanks @​stipsan! - fix(tooltip): derive the hidden state from disabled and content, and size the tooltip with Floating UI. A tooltip is now hidden in the same render that disables it or empties its content, instead of an effect closing it one commit later. The hover state is kept, so a tooltip that is re-enabled (or given content) while its child is still hovered shows right away rather than on the next mouseenter. The max width is no longer measured into state from a layout effect; Floating UI's size middleware applies it inside the positioning pass, only while the tooltip is shown: the clipping width of the boundary element (or of the clipping ancestors, when there is none) within the viewport, capped to the portal element's width. Tooltips placed left or right are capped to the room on that side of the reference instead of the full boundary width, so they wrap rather than overlap the reference or spill out of the boundary.

  • #​3116 00f0467 Thanks @​stipsan! - fix(tooltip): keep the referred element mounted when disabled toggles. The disabled branch used to return the bare child while the enabled branch returned a fragment with the tooltip, so flipping disabled changed the tree shape and remounted the reference element (losing its DOM node, state and focus). Both branches now render the same fragment, with the tooltip slot empty while disabled.

v4.3.3

Compare Source

Patch Changes
  • #​3117 7b0c700 Thanks @​stipsan! - Tooltip measures the boundary, portal and document.body widths it caps its max width to only when it opens. Previously it read their offsetWidth on mount and whenever the boundary or portal element changed, and the React Compiler also lifted portalElement?.offsetWidth into a render-time memo dependency — a forced synchronous layout per tooltip per render, which adds up in forms with many tooltips.

v4.3.2

Compare Source

Patch Changes

v4.3.1

Compare Source

Patch Changes

v4.3.0

Compare Source

Minor Changes
  • #​3077 49f16c1 Thanks @​stipsan! - Avatar renders its image with a native <img> instead of an svg <image> pattern fill, so React treats it like any other image: inside a <ViewTransition> (or a <Suspense> boundary that a transition reveals) React now waits for the avatar image to load, up to a timeout, before it commits, instead of animating an empty circle that the image later pops into. The circle clip, the card and avatar color strokes and the dashed status="editing" ring render as before.
Patch Changes

v4.2.7

Compare Source

Patch Changes

v4.2.6

Compare Source

Patch Changes

v4.2.4

Compare Source

Patch Changes

v4.2.3

Compare Source

Patch Changes

v4.2.2

Compare Source

Patch Changes

v4.2.1

Compare Source

Patch Changes
  • #​2886 7766a79 Thanks @​stipsan! - Fix Avatar rendering the initials fallback for one frame after src changes away from an image that failed to load. The failed state now resets while rendering instead of in an effect, so the replacement image renders in the same commit as the new src.

  • #​2894 63a6ca0 Thanks @​squiggler-app! - fix(deps): update react monorepo to ^19.3.0

  • #​2811 9c7a1a7 Thanks @​stipsan! - Animate Skeleton shimmer with a CSS mask and transform instead of background-position.

  • #​2884 7056449 Thanks @​stipsan! - LayerProvider tracks its child layers with a single useReducer, so registering or unregistering a child layer is one state update instead of two.

  • #​2873 8c64db2 Thanks @​stipsan! - Remove the startTransition wrappers around the Autocomplete and TreeItem element-ref state setters. They guarded against a "Maximum update depth exceeded" loop that only occurred on React 18, which is no longer supported since React 19.2 is the minimum version.

  • Updated dependencies [63a6ca0]:

v4.2.0

Compare Source

Minor Changes
  • #​2827 4b81730 Thanks @​stipsan! - Move the remaining fully static styled-components CSS to vanilla-extract, served from @sanity/ui/styles.css: Arrow, Avatar and AvatarStack. Styles that read the theme or props stay on styled-components.

    No API changes. As with SrOnly and Spinner since 4.0.0, these components render unstyled unless the app imports the stylesheet once:

    import "@sanity/ui/styles.css"
Patch Changes
  • #​2865 0128e47 Thanks @​stipsan! - Stop Layer from overwriting data-ui on Dialog and Tooltip, and add identifiers on remaining component roots (PopoverOverlay, ButtonLoading, ToastLoadingBar, dialog regions, and SpanWithTextOverflow).

v4.1.1

Compare Source

Patch Changes
  • #​2831 c9141df Thanks @​squiggler-app! - fix(deps): update dependency motion to ^13.2.0

  • #​2858 340baad Thanks @​stipsan! - Fix animated Popover and Tooltip (and thereby MenuButton) scaling from the center instead of the reference element every time they are shown after the first. The transform-origin computed by the floating-ui origin middleware is now applied as a plain CSS property instead of motion's originX/originY style keys,

❗ Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "before 3am on the first day of the month"
  • 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 curated preset maintained by Sanity. View repository job log here

@changeset-bot

changeset-bot Bot commented Sep 1, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 9d3b8ec

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/non-major branch from ad4d072 to 71c9754 Compare September 3, 2026 19:44
@renovate renovate Bot changed the title chore(deps): update dependency oxc-transform-react to ^0.148.0 chore(deps): update non-major Sep 3, 2026
@renovate
renovate Bot force-pushed the renovate/non-major branch 8 times, most recently from 4c4e8df to d933cf6 Compare September 11, 2026 16:03
@renovate
renovate Bot force-pushed the renovate/non-major branch 7 times, most recently from 0285958 to cc729fc Compare September 19, 2026 17:02
@renovate
renovate Bot force-pushed the renovate/non-major branch 7 times, most recently from 0b23a54 to 706194e Compare September 25, 2026 19:56
@renovate
renovate Bot force-pushed the renovate/non-major branch 6 times, most recently from 6fc5f54 to 89ffa45 Compare October 2, 2026 13:08
@renovate
renovate Bot force-pushed the renovate/non-major branch 9 times, most recently from 5c8489d to 5e7de5a Compare October 10, 2026 18:01
@renovate
renovate Bot force-pushed the renovate/non-major branch 4 times, most recently from 0c0fc13 to 1ea5324 Compare October 12, 2026 16:45
@renovate
renovate Bot force-pushed the renovate/non-major branch from 1ea5324 to 9d3b8ec Compare October 13, 2026 01:09
@stipsan
stipsan added this pull request to the merge queue Oct 13, 2026
Merged via the queue into main with commit 680a5e1 Oct 13, 2026
9 of 10 checks passed
@stipsan
stipsan deleted the renovate/non-major branch October 13, 2026 05:40
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