Skip to content

Version Packages#82

Open
github-actions[bot] wants to merge 1 commit intomasterfrom
changeset-release/master
Open

Version Packages#82
github-actions[bot] wants to merge 1 commit intomasterfrom
changeset-release/master

Conversation

@github-actions
Copy link
Copy Markdown

@github-actions github-actions bot commented Mar 21, 2026

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated.

Releases

@data-client/react@1.0.0

Major Changes

  • #3752 3c3bfe8 - BREAKING CHANGE: useFetch() always returns a stable promise with a .resolved property, even when data is already cached.

    before

    const promise = useFetch(MyResource.get, { id });
    if (promise) {
      // fetch was triggered
    }

    after

    const promise = useFetch(MyResource.get, { id });
    if (!promise.resolved) {
      // fetch is in-flight
    }
    use(promise); // works with React.use()

Minor Changes

  • #3755 5783267 - useFetch() returns a UsablePromise thenable with denormalized data, error handling, and GC tracking. use(useFetch(endpoint, args)) now behaves identically to useSuspense(endpoint, args) — suspending when data is loading, returning denormalized data when cached, throwing on errors, and re-suspending on invalidation.

    Parallel fetches are supported since all useFetch() calls execute before any use() suspends:

    const postPromise = useFetch(PostResource.get, { id });
    const commentsPromise = useFetch(CommentResource.getList, { postId: id });
    const post = use(postPromise);
    const comments = use(commentsPromise);

Patch Changes

  • #3823 869f28f - Fix stack overflow during denormalization of large bidirectional entity graphs.

    Add entity depth limit (128) to prevent RangeError: Maximum call stack size exceeded
    when denormalizing cross-type chains with thousands of unique entities
    (e.g., Department → Building → Department → ...). Entities beyond the depth limit
    are returned with unresolved ids instead of fully denormalized nested objects.

  • Updated dependencies [869f28f, 0e0ff1a]:

    • @data-client/core@1.0.0

@data-client/vue@1.0.0

Major Changes

  • #3752 3c3bfe8 - BREAKING CHANGE: useFetch() always returns a stable promise with a .resolved property, even when data is already cached.

    before

    const promise = useFetch(MyResource.get, { id });
    if (promise) {
      // fetch was triggered
    }

    after

    const promise = useFetch(MyResource.get, { id });
    if (!promise.resolved) {
      // fetch is in-flight
    }
    use(promise); // works with React.use()

Patch Changes

  • #3823 869f28f - Fix stack overflow during denormalization of large bidirectional entity graphs.

    Add entity depth limit (128) to prevent RangeError: Maximum call stack size exceeded
    when denormalizing cross-type chains with thousands of unique entities
    (e.g., Department → Building → Department → ...). Entities beyond the depth limit
    are returned with unresolved ids instead of fully denormalized nested objects.

  • Updated dependencies [869f28f, 0e0ff1a]:

    • @data-client/core@1.0.0

@data-client/endpoint@1.0.0

Minor Changes

  • #3783 1f34136 - Add Collection.moveWith() for custom move schemas

    Analogous to addWith(), moveWith() constructs a custom move schema that controls how entities are added to their destination collection. The remove behavior is automatically derived from the collection type (Array or Values).

    New exports: unshift merge function for convenience.

    import { Collection, unshift } from '@data-client/rest';
    
    class MyCollection extends Collection {
      constructor(schema, options) {
        super(schema, options);
        this.move = this.moveWith(unshift);
      }
    }

@data-client/rest@1.0.0

Minor Changes

  • #3783 1f34136 - Add Collection.moveWith() for custom move schemas

    Analogous to addWith(), moveWith() constructs a custom move schema that controls how entities are added to their destination collection. The remove behavior is automatically derived from the collection type (Array or Values).

    New exports: unshift merge function for convenience.

    import { Collection, unshift } from '@data-client/rest';
    
    class MyCollection extends Collection {
      constructor(schema, options) {
        super(schema, options);
        this.move = this.moveWith(unshift);
      }
    }
  • #3757 02555a2 - RestEndpoint.path and Resource.path syntax updated

    Upgrading path-to-regexp from 6 to 8.

    BREAKING CHANGES:

    • /:optional? -> {/:optional}
    • /:repeating+ -> /*repeating (typed as string[])
    • /:repeating_ -> {/_repeating} (typed as string[])
    • /:id(\d+) -> /:id (custom regex removed)
    • /:with-dash -> /:"with-dash"
    • (, ), [, ], +, ?, ! must be escaped "\\("
      • {}()[]+?!:*\ are all characters that need escaping

    Migrate using:
    npx skills add https://github.com/reactive/data-client --skill path-to-regexp-v8-migration

Patch Changes

  • #3782 3b85c82 - Fix searchParams: undefined being widened to any in TypeScript 6 non-strict mode

    TypeScript 6.0 widens undefined to any during generic inference when strictNullChecks is off.
    This caused RestEndpoint with searchParams: undefined to incorrectly accept arbitrary arguments.

  • #3757 02555a2 - Fix undefined optional path params being interpolated as literal "undefined" in URLs

  • Updated dependencies [1f34136]:

    • @data-client/endpoint@1.0.0

@data-client/core@1.0.0

Patch Changes

  • #3823 869f28f - Fix stack overflow during denormalization of large bidirectional entity graphs.

    Add entity depth limit (128) to prevent RangeError: Maximum call stack size exceeded
    when denormalizing cross-type chains with thousands of unique entities
    (e.g., Department → Building → Department → ...). Entities beyond the depth limit
    are returned with unresolved ids instead of fully denormalized nested objects.

  • #3774 0e0ff1a - GCPolicy interval no longer blocks Node.js process exit

    Call .unref() on GCPolicy's setInterval in Node.js environments, preventing the GC sweep timer from keeping Jest workers or other Node.js processes alive.

  • Updated dependencies [869f28f]:

    • @data-client/normalizr@1.0.0

@data-client/graphql@1.0.0

Patch Changes

  • Updated dependencies [1f34136]:
    • @data-client/endpoint@1.0.0

@data-client/img@1.0.0

Patch Changes

@data-client/normalizr@1.0.0

Patch Changes

  • #3823 869f28f - Fix stack overflow during denormalization of large bidirectional entity graphs.

    Add entity depth limit (128) to prevent RangeError: Maximum call stack size exceeded
    when denormalizing cross-type chains with thousands of unique entities
    (e.g., Department → Building → Department → ...). Entities beyond the depth limit
    are returned with unresolved ids instead of fully denormalized nested objects.

@data-client/test@1.0.0

Patch Changes

  • #3774 0e0ff1a - Add automatic cleanup after each test

    renderDataHook() and makeRenderDataClient() now register an afterEach hook at import time that automatically cleans up all active managers. Manual renderDataHook.cleanup() calls in afterEach are no longer needed.

    // Before: ❌
    afterEach(() => {
      renderDataHook.cleanup();
    });
    
    // After: ✓ (no afterEach needed — cleanup is automatic)
  • #3772 1a20f4e - Add per-render cleanup() and allSettled() to makeRenderDataHook return value

    Each renderDataHook() call now returns cleanup and allSettled directly on the result object, ensuring each render's managers can be independently cleaned up. This prevents manager leaks when renderDataHook() is called multiple times in a test.

    New exports: RenderDataHookResult

    const { result, cleanup, allSettled } = renderDataHook(
      () => useSuspense(MyResource.get, { id: 5 }),
      { initialFixtures },
    );
    // ... assertions ...
    cleanup();
  • Updated dependencies [869f28f, 3c3bfe8, 5783267]:

    • @data-client/react@1.0.0

example-benchmark@0.4.81

Patch Changes

  • Updated dependencies [1f34136, 869f28f, 0e0ff1a]:
    • @data-client/endpoint@1.0.0
    • @data-client/normalizr@1.0.0
    • @data-client/core@1.0.0

example-benchmark-react@0.1.1

Patch Changes

coinbase-lite@0.0.16

Patch Changes

normalizr-github-example@0.1.56

Patch Changes

  • Updated dependencies [1f34136, 869f28f]:
    • @data-client/endpoint@1.0.0
    • @data-client/normalizr@1.0.0

normalizr-redux-example@0.1.54

Patch Changes

  • Updated dependencies [1f34136, 869f28f]:
    • @data-client/endpoint@1.0.0
    • @data-client/normalizr@1.0.0

normalizr-relationships@0.1.56

Patch Changes

  • Updated dependencies [1f34136, 869f28f]:
    • @data-client/endpoint@1.0.0
    • @data-client/normalizr@1.0.0

test-bundlesize@0.1.8

Patch Changes

@github-actions github-actions bot force-pushed the changeset-release/master branch 8 times, most recently from 9e60db7 to 3b2fccc Compare March 27, 2026 18:49
@github-actions github-actions bot force-pushed the changeset-release/master branch from 3b2fccc to 50c9ce5 Compare March 28, 2026 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants