Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 25, 2025

Overview

Adds getQueryClient utility function to @suspensive/react-query-4, @suspensive/react-query-5, and @suspensive/react-query.

This function manages QueryClient instances in a server-safe manner:

  • Server: Creates a new QueryClient per request (prevents state sharing between requests)
  • Browser: Returns a singleton QueryClient (prevents recreation during React suspense)

Essential for SSR frameworks like Next.js.

Changes

  • Added getQueryClient.ts implementation to both react-query-4 and react-query-5 packages
  • Added type definition tests (getQueryClient.test-d.tsx)
  • Added runtime tests (getQueryClient.spec.tsx) with 100% code coverage
  • Exported from index.ts, v4.ts, and v5.ts

Runtime Tests Coverage

  • Returns a QueryClient instance
  • Browser singleton behavior (same instance on multiple calls)
  • Server multi-instance behavior (new instance per call)
  • Config handling (applied to initial instance, ignored on subsequent calls in browser)

Usage

import { getQueryClient } from '@suspensive/react-query'
import { QueryClientProvider } from '@tanstack/react-query'

function Providers({ children }: { children: React.ReactNode }) {
  const queryClient = getQueryClient()
  return (
    <QueryClientProvider client={queryClient}>
      {children}
    </QueryClientProvider>
  )
}

PR Checklist

  • I did below actions if need
  1. I read the Contributing Guide
  2. I added documents and tests.
Original prompt

This section details on the original issue you should resolve

<issue_title>[Feature]: add getQueryClient for @suspensive/react-query-4, @suspensive/react-query-5, @suspensive/react-query</issue_title>
<issue_description>### Package Scope

@suspensive/react-query-5, @suspensive/react-query-4, @suspensive/react-query

Description

add getQueryClient for @suspensive/react-query-4, @suspensive/react-query-5, @suspensive/react-query

Possible Solution

No response

etc.

No response</issue_description>

Comments on the Issue (you are @copilot in this section)


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@changeset-bot
Copy link

changeset-bot bot commented Nov 25, 2025

🦋 Changeset detected

Latest commit: b48c998

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 7 packages
Name Type
@suspensive/react-query-4 Minor
@suspensive/react-query-5 Minor
@suspensive/react-query Minor
@suspensive/react Minor
@suspensive/react-dom Minor
@suspensive/jotai Minor
@suspensive/codemods Minor

Not sure what this means? Click here to learn what changesets are.

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

@vercel
Copy link

vercel bot commented Nov 25, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
suspensive-next-streaming-react-query Ready Ready Preview Comment Nov 25, 2025 2:45pm
v2.suspensive.org Ready Ready Preview Comment Nov 25, 2025 2:45pm
v3.suspensive.org Ready Ready Preview Comment Nov 25, 2025 2:45pm
visualization.suspensive.org Ready Ready Preview Comment Nov 25, 2025 2:45pm

…/react-query-5, and @suspensive/react-query

Co-authored-by: manudeli <[email protected]>
@manudeli
Copy link
Member

@copilot getQueryClient should be tested at runtime carefully too

@coauthors
Copy link

coauthors bot commented Nov 25, 2025

People can be co-author:

Candidate Reasons Count Add this as commit message
@Copilot #1842 (comment) #1842 2 Co-authored-by: Copilot <[email protected]>
@manudeli #1842 (comment) 1 Co-authored-by: manudeli <[email protected]>
@codecov-commenter #1842 (comment) 1 Co-authored-by: codecov-commenter <[email protected]>

Copy link
Contributor Author

Copilot AI commented Nov 25, 2025

@copilot getQueryClient should be tested at runtime carefully too

Added runtime tests for getQueryClient in both react-query-4 and react-query-5 packages (b48c998). The tests cover:

  • Returns a QueryClient instance
  • Browser singleton behavior (same instance on multiple calls)
  • Server multi-instance behavior (new instance per call)
  • Config handling (applied to initial instance, ignored on subsequent calls)
  • 100% code coverage

@github-actions
Copy link

github-actions bot commented Nov 25, 2025

Size Change: +147 B (+0.16%)

Total Size: 89.9 kB

Filename Size Change
packages/react-query-4/dist/index.cjs 581 B +25 B (+4.5%)
packages/react-query-4/dist/index.mjs 494 B +18 B (+3.78%)
packages/react-query-4/dist/infiniteQueryOptions-********.mjs 299 B -3 B (-0.99%)
packages/react-query-4/dist/IsFetching-********.mjs 266 B -1 B (-0.37%)
packages/react-query-4/dist/mutationOptions-********.cjs 201 B +1 B (+0.5%)
packages/react-query-4/dist/queryOptions-********.mjs 297 B +3 B (+1.02%)
packages/react-query-4/dist/SuspenseInfiniteQuery-********.mjs 566 B +4 B (+0.71%)
packages/react-query-4/dist/SuspenseInfiniteQuery.mjs 145 B +3 B (+2.11%)
packages/react-query-4/dist/usePrefetchQuery-********.mjs 392 B -3 B (-0.76%)
packages/react-query-4/dist/useSuspenseInfiniteQuery-********.cjs 381 B +2 B (+0.53%)
packages/react-query-4/dist/useSuspenseQueries-********.cjs 374 B -2 B (-0.53%)
packages/react-query-4/dist/useSuspenseQuery-********.mjs 297 B -1 B (-0.34%)
packages/react-query-5/dist/index.cjs 575 B +25 B (+4.55%) 🔍
packages/react-query-5/dist/index.mjs 495 B +22 B (+4.65%) 🔍
packages/react-query-5/dist/infiniteQueryOptions-********.cjs 370 B +3 B (+0.82%)
packages/react-query-5/dist/IsFetching-********.mjs 350 B -1 B (-0.28%)
packages/react-query-5/dist/Mutation-********.mjs 315 B +1 B (+0.32%)
packages/react-query-5/dist/mutationOptions-********.cjs 367 B -1 B (-0.27%)
packages/react-query-5/dist/PrefetchInfiniteQuery-********.mjs 396 B +1 B (+0.25%)
packages/react-query-5/dist/queryOptions-********.mjs 290 B -1 B (-0.34%)
packages/react-query-5/dist/queryOptions-********.cjs 363 B +1 B (+0.28%)
packages/react-query-5/dist/SuspenseInfiniteQuery.mjs 143 B -1 B (-0.69%)
packages/react-query-5/dist/SuspenseQuery-********.mjs 541 B -1 B (-0.18%)
packages/react-query-5/dist/usePrefetchInfiniteQuery-********.cjs 374 B +1 B (+0.27%)
packages/react-query-5/dist/usePrefetchInfiniteQuery-********.mjs 302 B +2 B (+0.67%)
packages/react-query-5/dist/usePrefetchQuery-********.cjs 367 B +1 B (+0.27%)
packages/react-query-5/dist/useSuspenseInfiniteQuery.cjs 117 B -1 B (-0.85%)
packages/react-query-5/dist/useSuspenseQueries-********.mjs 295 B +2 B (+0.68%)
packages/react-query/dist/index.cjs 347 B +10 B (+2.97%)
packages/react-query/dist/index.mjs 197 B +6 B (+3.14%)
packages/react-query/dist/v4.cjs 347 B +10 B (+2.97%)
packages/react-query/dist/v4.mjs 197 B +6 B (+3.14%)
packages/react-query/dist/v5.cjs 347 B +10 B (+2.97%)
packages/react-query/dist/v5.mjs 197 B +6 B (+3.14%)
ℹ️ View Unchanged
Filename Size
packages/jotai/dist/Atom-********.mjs 263 B
packages/jotai/dist/Atom-********.cjs 328 B
packages/jotai/dist/Atom.cjs 93 B
packages/jotai/dist/Atom.mjs 87 B
packages/jotai/dist/AtomValue-********.cjs 315 B
packages/jotai/dist/AtomValue-********.mjs 247 B
packages/jotai/dist/AtomValue.cjs 99 B
packages/jotai/dist/AtomValue.mjs 93 B
packages/jotai/dist/index.cjs 150 B
packages/jotai/dist/index.mjs 133 B
packages/jotai/dist/SetAtom-********.cjs 313 B
packages/jotai/dist/SetAtom-********.mjs 246 B
packages/jotai/dist/SetAtom.cjs 97 B
packages/jotai/dist/SetAtom.mjs 91 B
packages/next/dist/index.cjs 257 B
packages/next/dist/index.mjs 251 B
packages/next/dist/react-******.cjs 217 B
packages/next/dist/react-******.mjs 213 B
packages/react-dom/dist/FadeIn-********.cjs 471 B
packages/react-dom/dist/FadeIn-********.mjs 402 B
packages/react-dom/dist/FadeIn.cjs 132 B
packages/react-dom/dist/FadeIn.mjs 124 B
packages/react-dom/dist/index.cjs 176 B
packages/react-dom/dist/index.mjs 154 B
packages/react-dom/dist/InView-********.mjs 670 B
packages/react-dom/dist/InView-********.cjs 734 B
packages/react-dom/dist/InView.cjs 114 B
packages/react-dom/dist/InView.mjs 107 B
packages/react-dom/dist/useFadeIn-********.cjs 496 B
packages/react-dom/dist/useFadeIn-********.mjs 432 B
packages/react-dom/dist/useFadeIn.cjs 122 B
packages/react-dom/dist/useFadeIn.mjs 115 B
packages/react-dom/dist/useInView-********.mjs 1.61 kB
packages/react-dom/dist/useInView-********.cjs 1.66 kB
packages/react-dom/dist/useInView.cjs 99 B
packages/react-dom/dist/useInView.mjs 93 B
packages/react-native/dist/index.cjs 98 B
packages/react-native/dist/index.mjs 92 B
packages/react-native/dist/TestText-********.cjs 285 B
packages/react-native/dist/TestText-********.mjs 216 B
packages/react-native/dist/TestText.cjs 98 B
packages/react-native/dist/TestText.mjs 92 B
packages/react-query-4/dist/ClientOnly-********.mjs 323 B
packages/react-query-4/dist/ClientOnly-********.cjs 394 B
packages/react-query-4/dist/getQueryClient-********.cjs 834 B
packages/react-query-4/dist/getQueryClient-********.mjs 763 B
packages/react-query-4/dist/getQueryClient.cjs 91 B
packages/react-query-4/dist/getQueryClient.mjs 85 B
packages/react-query-4/dist/infiniteQueryOptions-********.cjs 374 B
packages/react-query-4/dist/infiniteQueryOptions.cjs 98 B
packages/react-query-4/dist/infiniteQueryOptions.mjs 91 B
packages/react-query-4/dist/IsFetching-********.cjs 347 B
packages/react-query-4/dist/IsFetching.cjs 103 B
packages/react-query-4/dist/IsFetching.mjs 97 B
packages/react-query-4/dist/Mutation-********.cjs 391 B
packages/react-query-4/dist/Mutation-********.mjs 316 B
packages/react-query-4/dist/Mutation.cjs 138 B
packages/react-query-4/dist/Mutation.mjs 131 B
packages/react-query-4/dist/mutationOptions-********.mjs 148 B
packages/react-query-4/dist/mutationOptions.cjs 90 B
packages/react-query-4/dist/mutationOptions.mjs 84 B
packages/react-query-4/dist/objectWithoutProperties-********.cjs 406 B
packages/react-query-4/dist/objectWithoutProperties-********.mjs 366 B
packages/react-query-4/dist/PrefetchInfiniteQuery-********.mjs 407 B
packages/react-query-4/dist/PrefetchInfiniteQuery-********.cjs 476 B
packages/react-query-4/dist/PrefetchInfiniteQuery.cjs 134 B
packages/react-query-4/dist/PrefetchInfiniteQuery.mjs 126 B
packages/react-query-4/dist/PrefetchQuery-********.cjs 463 B
packages/react-query-4/dist/PrefetchQuery-********.mjs 396 B
packages/react-query-4/dist/PrefetchQuery.cjs 125 B
packages/react-query-4/dist/PrefetchQuery.mjs 118 B
packages/react-query-4/dist/QueriesHydration-********.mjs 2.1 kB
packages/react-query-4/dist/QueriesHydration-********.cjs 2.16 kB
packages/react-query-4/dist/QueriesHydration.cjs 155 B
packages/react-query-4/dist/QueriesHydration.mjs 146 B
packages/react-query-4/dist/QueryClientConsumer-********.cjs 358 B
packages/react-query-4/dist/QueryClientConsumer-********.mjs 284 B
packages/react-query-4/dist/QueryClientConsumer.cjs 110 B
packages/react-query-4/dist/QueryClientConsumer.mjs 103 B
packages/react-query-4/dist/queryOptions-********.cjs 365 B
packages/react-query-4/dist/queryOptions.cjs 89 B
packages/react-query-4/dist/queryOptions.mjs 83 B
packages/react-query-4/dist/SuspenseInfiniteQuery-********.cjs 651 B
packages/react-query-4/dist/SuspenseInfiniteQuery.cjs 150 B
packages/react-query-4/dist/SuspenseQueries-********.cjs 570 B
packages/react-query-4/dist/SuspenseQueries-********.mjs 487 B
packages/react-query-4/dist/SuspenseQueries.cjs 108 B
packages/react-query-4/dist/SuspenseQueries.mjs 102 B
packages/react-query-4/dist/SuspenseQuery-********.cjs 640 B
packages/react-query-4/dist/SuspenseQuery-********.mjs 552 B
packages/react-query-4/dist/SuspenseQuery.cjs 144 B
packages/react-query-4/dist/SuspenseQuery.mjs 136 B
packages/react-query-4/dist/usePrefetchInfiniteQuery-********.cjs 464 B
packages/react-query-4/dist/usePrefetchInfiniteQuery-********.mjs 400 B
packages/react-query-4/dist/usePrefetchInfiniteQuery.cjs 118 B
packages/react-query-4/dist/usePrefetchInfiniteQuery.mjs 111 B
packages/react-query-4/dist/usePrefetchQuery-********.cjs 455 B
packages/react-query-4/dist/usePrefetchQuery.cjs 109 B
packages/react-query-4/dist/usePrefetchQuery.mjs 103 B
packages/react-query-4/dist/useSuspenseInfiniteQuery-********.mjs 305 B
packages/react-query-4/dist/useSuspenseInfiniteQuery.cjs 118 B
packages/react-query-4/dist/useSuspenseInfiniteQuery.mjs 111 B
packages/react-query-4/dist/useSuspenseQueries-********.mjs 302 B
packages/react-query-4/dist/useSuspenseQueries.cjs 112 B
packages/react-query-4/dist/useSuspenseQueries.mjs 105 B
packages/react-query-4/dist/useSuspenseQuery-********.cjs 369 B
packages/react-query-4/dist/useSuspenseQuery.cjs 109 B
packages/react-query-4/dist/useSuspenseQuery.mjs 103 B
packages/react-query-5/dist/ClientOnly-********.mjs 323 B
packages/react-query-5/dist/ClientOnly-********.cjs 394 B
packages/react-query-5/dist/getQueryClient-********.mjs 765 B
packages/react-query-5/dist/getQueryClient-********.cjs 833 B
packages/react-query-5/dist/getQueryClient.cjs 91 B
packages/react-query-5/dist/getQueryClient.mjs 85 B
packages/react-query-5/dist/infiniteQueryOptions-********.mjs 297 B
packages/react-query-5/dist/infiniteQueryOptions.cjs 98 B
packages/react-query-5/dist/infiniteQueryOptions.mjs 91 B
packages/react-query-5/dist/IsFetching-********.cjs 430 B
packages/react-query-5/dist/IsFetching.cjs 140 B
packages/react-query-5/dist/IsFetching.mjs 133 B
packages/react-query-5/dist/Mutation-********.cjs 391 B
packages/react-query-5/dist/Mutation.cjs 138 B
packages/react-query-5/dist/Mutation.mjs 131 B
packages/react-query-5/dist/mutationOptions-********.mjs 296 B
packages/react-query-5/dist/mutationOptions.cjs 90 B
packages/react-query-5/dist/mutationOptions.mjs 84 B
packages/react-query-5/dist/objectWithoutProperties-********.mjs 366 B
packages/react-query-5/dist/objectWithoutProperties-********.cjs 406 B
packages/react-query-5/dist/PrefetchInfiniteQuery-********.cjs 469 B
packages/react-query-5/dist/PrefetchInfiniteQuery.cjs 115 B
packages/react-query-5/dist/PrefetchInfiniteQuery.mjs 108 B
packages/react-query-5/dist/PrefetchQuery-********.mjs 390 B
packages/react-query-5/dist/PrefetchQuery-********.cjs 462 B
packages/react-query-5/dist/PrefetchQuery.cjs 106 B
packages/react-query-5/dist/PrefetchQuery.mjs 100 B
packages/react-query-5/dist/QueriesHydration-********.mjs 2.11 kB
packages/react-query-5/dist/QueriesHydration-********.cjs 2.17 kB
packages/react-query-5/dist/QueriesHydration.cjs 155 B
packages/react-query-5/dist/QueriesHydration.mjs 146 B
packages/react-query-5/dist/QueryClientConsumer-********.mjs 281 B
packages/react-query-5/dist/QueryClientConsumer-********.cjs 358 B
packages/react-query-5/dist/QueryClientConsumer.cjs 110 B
packages/react-query-5/dist/QueryClientConsumer.mjs 103 B
packages/react-query-5/dist/queryOptions.cjs 89 B
packages/react-query-5/dist/queryOptions.mjs 83 B
packages/react-query-5/dist/SuspenseInfiniteQuery-********.mjs 565 B
packages/react-query-5/dist/SuspenseInfiniteQuery-********.cjs 652 B
packages/react-query-5/dist/SuspenseInfiniteQuery.cjs 150 B
packages/react-query-5/dist/SuspenseQueries-********.mjs 503 B
packages/react-query-5/dist/SuspenseQueries-********.cjs 591 B
packages/react-query-5/dist/SuspenseQueries.cjs 108 B
packages/react-query-5/dist/SuspenseQueries.mjs 102 B
packages/react-query-5/dist/SuspenseQuery-********.cjs 627 B
packages/react-query-5/dist/SuspenseQuery.cjs 143 B
packages/react-query-5/dist/SuspenseQuery.mjs 136 B
packages/react-query-5/dist/usePrefetchInfiniteQuery.cjs 118 B
packages/react-query-5/dist/usePrefetchInfiniteQuery.mjs 111 B
packages/react-query-5/dist/usePrefetchQuery-********.mjs 296 B
packages/react-query-5/dist/usePrefetchQuery.cjs 109 B
packages/react-query-5/dist/usePrefetchQuery.mjs 103 B
packages/react-query-5/dist/useSuspenseInfiniteQuery-********.mjs 300 B
packages/react-query-5/dist/useSuspenseInfiniteQuery-********.cjs 371 B
packages/react-query-5/dist/useSuspenseInfiniteQuery.mjs 111 B
packages/react-query-5/dist/useSuspenseQueries-********.cjs 370 B
packages/react-query-5/dist/useSuspenseQueries.cjs 112 B
packages/react-query-5/dist/useSuspenseQueries.mjs 105 B
packages/react-query-5/dist/useSuspenseQuery-********.cjs 366 B
packages/react-query-5/dist/useSuspenseQuery-********.mjs 293 B
packages/react-query-5/dist/useSuspenseQuery.cjs 109 B
packages/react-query-5/dist/useSuspenseQuery.mjs 103 B
packages/react/dist/ClientOnly-********.mjs 535 B
packages/react/dist/ClientOnly-********.cjs 609 B
packages/react/dist/ClientOnly.cjs 159 B
packages/react/dist/ClientOnly.mjs 150 B
packages/react/dist/DefaultProps-********.cjs 996 B
packages/react/dist/DefaultProps-********.mjs 932 B
packages/react/dist/DefaultProps.cjs 164 B
packages/react/dist/DefaultProps.mjs 158 B
packages/react/dist/DefaultPropsContexts-********.mjs 258 B
packages/react/dist/DefaultPropsContexts-********.cjs 328 B
packages/react/dist/Delay-********.mjs 1.03 kB
packages/react/dist/Delay-********.cjs 1.09 kB
packages/react/dist/Delay.cjs 176 B
packages/react/dist/Delay.mjs 165 B
packages/react/dist/ErrorBoundary-********.mjs 2.1 kB
packages/react/dist/ErrorBoundary-********.cjs 2.15 kB
packages/react/dist/ErrorBoundary.cjs 193 B
packages/react/dist/ErrorBoundary.mjs 189 B
packages/react/dist/ErrorBoundaryGroup-********.mjs 1.12 kB
packages/react/dist/ErrorBoundaryGroup-********.cjs 1.19 kB
packages/react/dist/ErrorBoundaryGroup.cjs 182 B
packages/react/dist/ErrorBoundaryGroup.mjs 172 B
packages/react/dist/index.cjs 458 B
packages/react/dist/index.mjs 418 B
packages/react/dist/lazy-********.cjs 2.06 kB
packages/react/dist/lazy-********.mjs 1.99 kB
packages/react/dist/lazy.cjs 190 B
packages/react/dist/lazy.mjs 187 B
packages/react/dist/noop-********.mjs 144 B
packages/react/dist/noop-********.cjs 203 B
packages/react/dist/objectSpread2-********.mjs 774 B
packages/react/dist/objectSpread2-********.cjs 807 B
packages/react/dist/objectWithoutProperties-********.mjs 372 B
packages/react/dist/objectWithoutProperties-********.cjs 412 B
packages/react/dist/Suspense-********.mjs 832 B
packages/react/dist/Suspense-********.cjs 905 B
packages/react/dist/Suspense.cjs 220 B
packages/react/dist/Suspense.mjs 215 B
packages/react/dist/SuspensiveError-********.mjs 441 B
packages/react/dist/SuspensiveError-********.cjs 522 B
packages/react/dist/useIsClient-********.cjs 318 B
packages/react/dist/useIsClient-********.mjs 251 B
packages/react/dist/useIsClient.cjs 117 B
packages/react/dist/useIsClient.mjs 109 B

compressed-size-action

@codecov-commenter
Copy link

codecov-commenter commented Nov 25, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.49%. Comparing base (09e14da) to head (b48c998).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff            @@
##           main    #1842       +/-   ##
=========================================
+ Coverage      0   93.49%   +93.49%     
=========================================
  Files         0       46       +46     
  Lines         0      722      +722     
  Branches      0      180      +180     
=========================================
+ Hits          0      675      +675     
- Misses        0       41       +41     
- Partials      0        6        +6     
Components Coverage Δ
@suspensive/react 96.63% <ø> (∅)
@suspensive/react-dom 100.00% <ø> (∅)
@suspensive/react-native 100.00% <ø> (∅)
@suspensive/react-query 100.00% <ø> (∅)
@suspensive/react-query-4 100.00% <100.00%> (∅)
@suspensive/react-query-5 100.00% <100.00%> (∅)
@suspensive/jotai 100.00% <ø> (∅)
@suspensive/codemods 81.60% <ø> (∅)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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.

[Feature]: add getQueryClient for @suspensive/react-query-4, @suspensive/react-query-5, @suspensive/react-query

3 participants