diff --git a/.all-contributorsrc b/.all-contributorsrc
index 9ed31f428a..c3efeeeacb 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -3,9 +3,7 @@
   "projectOwner": "TanStack",
   "repoType": "github",
   "repoHost": "https://github.com",
-  "files": [
-    "README.md"
-  ],
+  "files": ["README.md"],
   "imageSize": 100,
   "commit": false,
   "commitConvention": "none",
@@ -15,306 +13,224 @@
       "name": "Tanner Linsley",
       "avatar_url": "https://avatars0.githubusercontent.com/u/5580297?v=4",
       "profile": "https://tannerlinsley.com",
-      "contributions": [
-        "code",
-        "ideas",
-        "example",
-        "maintenance",
-        "review"
-      ]
+      "contributions": ["code", "ideas", "example", "maintenance", "review"]
     },
     {
       "login": "cherniavskii",
       "name": "Andrew Cherniavskii",
       "avatar_url": "https://avatars2.githubusercontent.com/u/13808724?v=4",
       "profile": "http://cherniavskii.com",
-      "contributions": [
-        "code",
-        "bug"
-      ]
+      "contributions": ["code", "bug"]
     },
     {
       "login": "tibotiber",
       "name": "Thibaut Tiberghien",
       "avatar_url": "https://avatars3.githubusercontent.com/u/5635553?v=4",
       "profile": "http://twitter.com/tibotiber",
-      "contributions": [
-        "doc"
-      ]
+      "contributions": ["doc"]
     },
     {
       "login": "gargroh",
       "name": "Rohit Garg",
       "avatar_url": "https://avatars3.githubusercontent.com/u/42495927?v=4",
       "profile": "https://github.com/gargroh",
-      "contributions": [
-        "tool"
-      ]
+      "contributions": ["tool"]
     },
     {
       "login": "Avi98",
       "name": "Avinash",
       "avatar_url": "https://avatars1.githubusercontent.com/u/26133749?v=4",
       "profile": "https://github.com/Avi98",
-      "contributions": [
-        "code",
-        "bug"
-      ]
+      "contributions": ["code", "bug"]
     },
     {
       "login": "CreativeTechGuy",
       "name": "Jason O'Neill",
       "avatar_url": "https://avatars1.githubusercontent.com/u/12002072?v=4",
       "profile": "https://github.com/CreativeTechGuy",
-      "contributions": [
-        "maintenance",
-        "test"
-      ]
+      "contributions": ["maintenance", "test"]
     },
     {
       "login": "bugzpodder",
       "name": "Jack Zhao",
       "avatar_url": "https://avatars3.githubusercontent.com/u/14841421?v=4",
       "profile": "http://fb.me/yz",
-      "contributions": [
-        "code",
-        "bug"
-      ]
+      "contributions": ["code", "bug"]
     },
     {
       "login": "dpyzo0o",
       "name": "dpyzo0o",
       "avatar_url": "https://avatars1.githubusercontent.com/u/24768249?v=4",
       "profile": "https://github.com/dpyzo0o",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "jelteliekens",
       "name": "Jelte Liekens",
       "avatar_url": "https://avatars1.githubusercontent.com/u/3418474?v=4",
       "profile": "https://github.com/jelteliekens",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "jgettings",
       "name": "Jen Gettings",
       "avatar_url": "https://avatars0.githubusercontent.com/u/4183742?v=4",
       "profile": "https://github.com/jgettings",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "justincy",
       "name": "Justin",
       "avatar_url": "https://avatars2.githubusercontent.com/u/1037458?v=4",
       "profile": "https://github.com/justincy",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "MarceloAlves",
       "name": "Marcelo Alves",
       "avatar_url": "https://avatars1.githubusercontent.com/u/216782?v=4",
       "profile": "http://www.marceloalves.com",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "zorzysty",
       "name": "Zorza",
       "avatar_url": "https://avatars0.githubusercontent.com/u/5398733?v=4",
       "profile": "https://github.com/zorzysty",
-      "contributions": [
-        "bug",
-        "code",
-        "doc"
-      ]
+      "contributions": ["bug", "code", "doc"]
     },
     {
       "login": "tkdodo",
       "name": "Dominik Dorfmeister",
       "avatar_url": "https://avatars0.githubusercontent.com/u/1021430?v=4",
       "profile": "https://tkdodo.eu",
-      "contributions": [
-        "code",
-        "doc",
-        "maintenance",
-        "question",
-        "review"
-      ]
+      "contributions": ["code", "doc", "maintenance", "question", "review"]
     },
     {
       "login": "KATT",
       "name": "Alex Johansson",
       "avatar_url": "https://avatars.githubusercontent.com/u/459267?v=4",
       "profile": "https://katt.dev",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "EddyVinck",
       "name": "Eddy",
       "avatar_url": "https://avatars.githubusercontent.com/u/23434753?v=4",
       "profile": "http://www.eddyvinck.nl",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "prateek3255",
       "name": "Prateek Surana",
       "avatar_url": "https://avatars.githubusercontent.com/u/21277179?v=4",
       "profile": "http://prateeksurana.me",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "babycourageous",
       "name": "Rene Dellefont",
       "avatar_url": "https://avatars.githubusercontent.com/u/14936212?v=4",
       "profile": "https://github.com/babycourageous",
-      "contributions": [
-        "code",
-        "doc"
-      ]
+      "contributions": ["code", "doc"]
     },
     {
       "login": "jvuoti",
       "name": "Janne Vuoti",
       "avatar_url": "https://avatars.githubusercontent.com/u/3702781?v=4",
       "profile": "https://github.com/jvuoti",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "arnaudbzn",
       "name": "Arnaud",
       "avatar_url": "https://avatars.githubusercontent.com/u/20332397?v=4",
       "profile": "http://seaviewlab.com",
-      "contributions": [
-        "code",
-        "doc"
-      ]
+      "contributions": ["code", "doc"]
     },
     {
       "login": "zrwsk",
       "name": "Jakub Żurawski",
       "avatar_url": "https://avatars.githubusercontent.com/u/9089600?v=4",
       "profile": "https://github.com/zrwsk",
-      "contributions": [
-        "doc"
-      ]
+      "contributions": ["doc"]
     },
     {
       "login": "ardeora",
       "name": "Aryan Deora",
       "avatar_url": "https://avatars.githubusercontent.com/u/45807386?v=4",
       "profile": "http://www.aryandeora.com",
-      "contributions": [
-        "code",
-        "maintenance"
-      ]
+      "contributions": ["code", "maintenance"]
     },
     {
       "login": "jennyckaplan",
       "name": "Jen Kaplan",
       "avatar_url": "https://avatars.githubusercontent.com/u/25395806?v=4",
       "profile": "https://github.com/jennyckaplan",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "lukesmurray",
       "name": "Luke Murray",
       "avatar_url": "https://avatars.githubusercontent.com/u/34020210?v=4",
       "profile": "https://lukesmurray.com/",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "oscartbeaumont",
       "name": "Oscar Beaumont",
       "avatar_url": "https://avatars.githubusercontent.com/u/21004798?v=4",
       "profile": "https://otbeaumont.me",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "DamianOsipiuk",
       "name": "Damian Osipiuk",
       "avatar_url": "https://avatars.githubusercontent.com/u/28151934?v=4",
       "profile": "https://github.com/DamianOsipiuk",
-      "contributions": [
-        "code",
-        "maintenance"
-      ]
+      "contributions": ["code", "maintenance"]
     },
     {
       "login": "matthewhausman",
       "name": "Matthew Hausman",
       "avatar_url": "https://avatars.githubusercontent.com/u/25216513?v=4",
       "profile": "https://www.linkedin.com/in/matthew-hausman/",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "Newbie012",
       "name": "Eliya Cohen",
       "avatar_url": "https://avatars.githubusercontent.com/u/10504365?v=4",
       "profile": "https://github.com/Newbie012",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "KubaJastrz",
       "name": "Jakub Jastrzębski",
       "avatar_url": "https://avatars.githubusercontent.com/u/6443113?v=4",
       "profile": "https://kubajastrz.com",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "balazsmatepetro",
       "name": "Balázs Máté Petró",
       "avatar_url": "https://avatars.githubusercontent.com/u/1608725?v=4",
       "profile": "https://github.com/balazsmatepetro",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "Mamoanwar97",
       "name": "Mahmoud M. Anwar",
       "avatar_url": "https://avatars.githubusercontent.com/u/36894846?v=4",
       "profile": "http://linkedin.com/in/mamoanwar97/",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     },
     {
       "login": "Moshyfawn",
       "name": "moshyfawn",
       "avatar_url": "https://avatars.githubusercontent.com/u/16290753?v=4",
       "profile": "http://moshyfawn.dev",
-      "contributions": [
-        "code"
-      ]
+      "contributions": ["code"]
     }
   ],
   "contributorsPerLine": 7,
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index e995e1aafc..82619e2a15 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -34,7 +34,10 @@ const config = {
     },
   },
   rules: {
-    '@typescript-eslint/array-type': ['error', { default: 'generic', readonly: 'generic' }],
+    '@typescript-eslint/array-type': [
+      'error',
+      { default: 'generic', readonly: 'generic' },
+    ],
     '@typescript-eslint/ban-types': 'off',
     '@typescript-eslint/ban-ts-comment': 'off',
     '@typescript-eslint/consistent-type-imports': [
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index e36ac20ce0..b740afe1bc 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -3,9 +3,9 @@ name: pr
 on:
   pull_request:
     paths-ignore:
-      - "docs/**"
-      - "media/**"
-      - "**/*.md"
+      - 'docs/**'
+      - 'media/**'
+      - '**/*.md'
 
 concurrency:
   group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
diff --git a/.prettierignore b/.prettierignore
index af4a55b2cb..4596205e79 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -5,3 +5,4 @@
 **/coverage
 **/dist
 **/codemods/**/__testfixtures__
+pnpm-lock.yaml
diff --git a/docs/react/adapters/react-query.md b/docs/react/adapters/react-query.md
index 31a67e9c5f..b928726e34 100644
--- a/docs/react/adapters/react-query.md
+++ b/docs/react/adapters/react-query.md
@@ -7,7 +7,11 @@ The `react-query` package offers a 1st-class API for using TanStack Query via Re
 ## Example
 
 ```tsx
-import { QueryClient, QueryClientProvider, useQuery } from '@tanstack/react-query'
+import {
+  QueryClient,
+  QueryClientProvider,
+  useQuery,
+} from '@tanstack/react-query'
 
 const queryClient = new QueryClient()
 
@@ -19,15 +23,15 @@ function Example() {
       {query.isPending
         ? 'Loading...'
         : query.isError
-        ? 'Error!'
-        : query.data
-        ? query.data.map((todo) => 
{todo.title}
)
-        : null}
+          ? 'Error!'
+          : query.data
+            ? query.data.map((todo) => {todo.title}
)
+            : null}
     
   )
 }
 
-function App () {
+function App() {
   return (
     
       Error: {query.error.message}
         
         
-          
-            {(todo) => {todo.title}
}
-           
+          {(todo) => {todo.title}
} 
          
       
     
@@ -44,7 +46,6 @@ function App() {
      
   )
 }
-
 ```
 
 ## Available Functions
@@ -61,26 +62,23 @@ Solid Query offers useful primitives and functions that will make managing serve
 - `QueryClient`
 - `QueryClientProvider`
 
-
-
-
 ## Important Differences between Solid Query & React Query
 
-Solid Query offers an API similar to  React Query, but there are some key differences to be mindful of.
+Solid Query offers an API similar to React Query, but there are some key differences to be mindful of.
 
 - To maintain their reactivity, Query keys need to be wrapped inside a function while using `createQuery`, `createQueries`, `createInfiniteQuery` and `useIsFetching`.
 
 ```tsx
 // ❌ react version
 useQuery({
-  queryKey: ["todos", todo], 
-  queryFn: fetchTodos
+  queryKey: ['todos', todo],
+  queryFn: fetchTodos,
 })
 
 // ✅ solid version
 createQuery({
-  queryKey: () => ["todos", todo()], 
-  queryFn: fetchTodos
+  queryKey: () => ['todos', todo()],
+  queryFn: fetchTodos,
 })
 ```
 
@@ -91,14 +89,14 @@ import { For, Suspense } from 'solid-js'
 
 function Example() {
   const query = createQuery({
-    queryKey: () => ['todos'], 
-    queryFn: fetchTodos
+    queryKey: () => ['todos'],
+    queryFn: fetchTodos,
   })
 
   return (
     
       {/* ✅ Will trigger loading fallback, data accessed in a suspense context. */}
-      
+      
         {(todo) => {todo.title}
} 
        
       {/* ❌ Will not trigger loading fallback, data not accessed in a suspense context. */}
@@ -111,7 +109,11 @@ function Example() {
 - Solid Query primitives (`createX`) do not support destructuring. The return value from these functions is a store, and their properties are only tracked in a reactive context.
 
 ```tsx
-import { QueryClient, QueryClientProvider, createQuery } from '@tanstack/solid-query'
+import {
+  QueryClient,
+  QueryClientProvider,
+  createQuery,
+} from '@tanstack/solid-query'
 import { Match, Switch } from 'solid-js'
 
 const queryClient = new QueryClient()
@@ -175,7 +177,7 @@ const queryClient = new QueryClient()
 
 function Example() {
   const [enabled, setEnabled] = createSignal(false)
-  const query = createQuery({ 
+  const query = createQuery({
     queryKey: () => ['todos'],
     queryFn: fetchTodos,
     // ❌ passing a signal directly is not reactive
@@ -197,9 +199,7 @@ function Example() {
           Error: {query.error.message}
         
         
-          
-            {(todo) => {todo.title}
}
-           
+          {(todo) => {todo.title}
} 
          
       
        setEnabled(!enabled())}>Toggle enabled 
@@ -218,4 +218,4 @@ function App() {
 
 - Errors can be caught and reset using SolidJS' native `ErrorBoundary` component. `QueryErrorResetBoundary` is not needed with Solid Query
 
-- Since Property tracking is handled through Solid's fine grained reactivity, options like `notifyOnChangeProps` are not needed
\ No newline at end of file
+- Since Property tracking is handled through Solid's fine grained reactivity, options like `notifyOnChangeProps` are not needed
diff --git a/docs/react/adapters/vue-query.md b/docs/react/adapters/vue-query.md
index 9c5d7e64d1..f8a55f6dd0 100644
--- a/docs/react/adapters/vue-query.md
+++ b/docs/react/adapters/vue-query.md
@@ -14,28 +14,31 @@ This example very briefly illustrates the 3 core concepts of Vue Query:
 
 ```vue
 
 
diff --git a/docs/react/comparison.md b/docs/react/comparison.md
index f41463ddc2..78e8d2512c 100644
--- a/docs/react/comparison.md
+++ b/docs/react/comparison.md
@@ -12,54 +12,54 @@ Feature/Capability Key:
 - 🔶 Supported and documented, but requires extra user-code to implement
 - 🛑 Not officially supported or documented.
 
-|                                                    | React Query                | SWR [_(Website)_][swr]      | Apollo Client [_(Website)_][apollo]        | RTK-Query [_(Website)_][rtk-query]   | React Router [_(Website)_][react-router]                                  |
-|----------------------------------------------------| -------------------------- | --------------------------- | ------------------------------------------ | ------------------------------------ | ------------------------------------------------------------------------- |
-| Github Repo / Stars                                | [![][stars-react-query]][gh-react-query] | [![][stars-swr]][gh-swr]    | [![][stars-apollo]][gh-apollo]             | [![][stars-rtk-query]][gh-rtk-query] | [![][stars-react-router]][gh-react-router]                                |
-| Platform Requirements                              | React                      | React                       | React, GraphQL                             | Redux                                | React                                                                     |
-| Their Comparison                                   |                            | (none)                      | (none)                                     | [Comparison][rtk-query-comparison]   | (none)                                                                    |
-| Supported Query Syntax                             | Promise, REST, GraphQL     | Promise, REST, GraphQL      | GraphQL, Any (Reactive Variables)                                    | Promise, REST, GraphQL               | Promise, REST, GraphQL                                                    |
-| Supported Frameworks                               | React                      | React                       | React + Others                             | Any                                  | React                                                                     |
-| Caching Strategy                                   | Hierarchical Key -> Value  | Unique Key -> Value         | Normalized Schema                          | Unique Key -> Value                  | Nested Route -> value                                                     |
-| Cache Key Strategy                                 | JSON                       | JSON                        | GraphQL Query                              | JSON                                 | Route Path                                                                |
+|                                                    | React Query                              | SWR [_(Website)_][swr]                   | Apollo Client [_(Website)_][apollo]        | RTK-Query [_(Website)_][rtk-query]   | React Router [_(Website)_][react-router]                                  |
+| -------------------------------------------------- | ---------------------------------------- | ---------------------------------------- | ------------------------------------------ | ------------------------------------ | ------------------------------------------------------------------------- |
+| Github Repo / Stars                                | [![][stars-react-query]][gh-react-query] | [![][stars-swr]][gh-swr]                 | [![][stars-apollo]][gh-apollo]             | [![][stars-rtk-query]][gh-rtk-query] | [![][stars-react-router]][gh-react-router]                                |
+| Platform Requirements                              | React                                    | React                                    | React, GraphQL                             | Redux                                | React                                                                     |
+| Their Comparison                                   |                                          | (none)                                   | (none)                                     | [Comparison][rtk-query-comparison]   | (none)                                                                    |
+| Supported Query Syntax                             | Promise, REST, GraphQL                   | Promise, REST, GraphQL                   | GraphQL, Any (Reactive Variables)          | Promise, REST, GraphQL               | Promise, REST, GraphQL                                                    |
+| Supported Frameworks                               | React                                    | React                                    | React + Others                             | Any                                  | React                                                                     |
+| Caching Strategy                                   | Hierarchical Key -> Value                | Unique Key -> Value                      | Normalized Schema                          | Unique Key -> Value                  | Nested Route -> value                                                     |
+| Cache Key Strategy                                 | JSON                                     | JSON                                     | GraphQL Query                              | JSON                                 | Route Path                                                                |
 | Cache Change Detection                             | Deep Compare Keys (Stable Serialization) | Deep Compare Keys (Stable Serialization) | Deep Compare Keys (Unstable Serialization) | Key Referential Equality (===)       | Route Change                                                              |
-| Data Change Detection                              | Deep Comparison + Structural Sharing | Deep Compare (via `stable-hash`) | Deep Compare (Unstable Serialization)      | Key Referential Equality (===)       | Loader Run                                                                |
-| Data Memoization                                   | Full Structural Sharing    | Identity (===)              | Normalized Identity                        | Identity (===)                       | Identity (===)                                                            |
-| Bundle Size                                        | [![][bp-react-query]][bpl-react-query] | [![][bp-swr]][bpl-swr]      | [![][bp-apollo]][bpl-apollo]               | [![][bp-rtk-query]][bpl-rtk-query]   | [![][bp-react-router]][bpl-react-router] + [![][bp-history]][bpl-history] |
-| API Definition Location                            | Component, External Config | Component                   | GraphQL Schema                             | External Config                      | Route Tree Configuration                                                  |
-| Queries                                            | ✅                         | ✅                          | ✅                                         | ✅                                   | ✅                                                                        |
-| Cache Persistence                                  | ✅                         | ✅                          | ✅                                         | ✅                                   | 🛑 Active Routes Only 8                                         |
-| Devtools                                           | ✅                         | ✅                         | ✅                                         | ✅                                   | 🛑                                                                        |
-| Polling/Intervals                                  | ✅                         | ✅                          | ✅                                         | ✅                                   | 🛑                                                                        |
-| Parallel Queries                                   | ✅                         | ✅                          | ✅                                         | ✅                                   | ✅                                                                        |
-| Dependent Queries                                  | ✅                         | ✅                          | ✅                                         | ✅                                   | ✅                                                                        |
-| Paginated Queries                                  | ✅                         | ✅                          | ✅                                         | ✅                                   | ✅                                                                        |
-| Infinite Queries                                   | ✅                         | ✅                          | ✅                                         | 🛑                                   | 🛑                                                                        |
-| Bi-directional Infinite Queries                    | ✅                         | 🔶                          | 🔶                                         | 🛑                                   | 🛑                                                                        |
-| Infinite Query Refetching                          | ✅                         | ✅                          | 🛑                                         | 🛑                                   | 🛑                                                                        |
-| Lagged Query Data1                       | ✅                         | ✅                         | 🛑                                         | ✅                                   | ✅                                                                        |
-| Selectors                                          | ✅                         | 🛑                          | ✅                                         | ✅                                   | N/A                                                                       |
-| Initial Data                                       | ✅                         | ✅                          | ✅                                         | ✅                                   | ✅                                                                        |
-| Scroll Recovery                                    | ✅                         | ✅                          | ✅                                         | ✅                                   | ✅                                                                        |
-| Cache Manipulation                                 | ✅                         | ✅                          | ✅                                         | ✅                                   | 🛑                                                                        |
-| Outdated Query Dismissal                           | ✅                         | ✅                          | ✅                                         | ✅                                   | ✅                                                                        |
-| Render Batching & Optimization2          | ✅                         | ✅                         | 🛑                                         | ✅                                   | ✅                                                                        |
-| Auto Garbage Collection                            | ✅                         | 🛑                          | 🛑                                         | ✅                                   | N/A                                                                       |
-| Mutation Hooks                                     | ✅                         | ✅                         | ✅                                         | ✅                                   | ✅                                                                        |
-| Offline Mutation Support                           | ✅                         | 🛑                          | 🟡                                         | 🛑                                   | 🛑                                                                        |
-| Prefetching APIs                                   | ✅                         | ✅                         | ✅                                         | ✅                                   | ✅                                                                        |
-| Query Cancellation                                 | ✅                         | 🛑                          | 🛑                                         | 🛑                                   | ✅                                                                        |
-| Partial Query Matching3                  | ✅                         | 🔶                        | 🛑                                         | ✅                                   | N/A                                                                       |
-| Stale While Revalidate                             | ✅                         | ✅                          | ✅                                         | ✅                                   | 🛑                                                                        |
-| Stale Time Configuration                           | ✅                         | 🛑7               | 🛑                                         | ✅                                   | 🛑                                                                        |
-| Pre-usage Query/Mutation Configuration4  | ✅                         | 🛑                          | 🛑                                         | ✅                                   | ✅                                                                        |
-| Window Focus Refetching                            | ✅                         | ✅                          | 🛑                                         | ✅                                   | 🛑                                                                        |
-| Network Status Refetching                          | ✅                         | ✅                          | ✅                                         | ✅                                   | 🛑                                                                        |
-| General Cache Dehydration/Rehydration              | ✅                         | 🛑                          | ✅                                         | ✅                                   | ✅                                                                        |
-| Offline Caching                                    | ✅                         | 🛑                          | ✅                                         | 🔶                                   | 🛑                                                                        |
-| React Suspense                                     | ✅                         | ✅                          | 🛑                                         | 🛑                                   | ✅                                                                        |
-| Abstracted/Agnostic Core                           | ✅                         | 🛑                          | ✅                                         | ✅                                   | 🛑                                                                        |
-| Automatic Refetch after Mutation5        | 🔶                         | 🔶                          | ✅                                         | ✅                                   | ✅                                                                        |
-| Normalized Caching6                      | 🛑                         | 🛑                          | ✅                                         | 🛑                                   | 🛑                                                                        |
+| Data Change Detection                              | Deep Comparison + Structural Sharing     | Deep Compare (via `stable-hash`)         | Deep Compare (Unstable Serialization)      | Key Referential Equality (===)       | Loader Run                                                                |
+| Data Memoization                                   | Full Structural Sharing                  | Identity (===)                           | Normalized Identity                        | Identity (===)                       | Identity (===)                                                            |
+| Bundle Size                                        | [![][bp-react-query]][bpl-react-query]   | [![][bp-swr]][bpl-swr]                   | [![][bp-apollo]][bpl-apollo]               | [![][bp-rtk-query]][bpl-rtk-query]   | [![][bp-react-router]][bpl-react-router] + [![][bp-history]][bpl-history] |
+| API Definition Location                            | Component, External Config               | Component                                | GraphQL Schema                             | External Config                      | Route Tree Configuration                                                  |
+| Queries                                            | ✅                                       | ✅                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Cache Persistence                                  | ✅                                       | ✅                                       | ✅                                         | ✅                                   | 🛑 Active Routes Only 8                                         |
+| Devtools                                           | ✅                                       | ✅                                       | ✅                                         | ✅                                   | 🛑                                                                        |
+| Polling/Intervals                                  | ✅                                       | ✅                                       | ✅                                         | ✅                                   | 🛑                                                                        |
+| Parallel Queries                                   | ✅                                       | ✅                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Dependent Queries                                  | ✅                                       | ✅                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Paginated Queries                                  | ✅                                       | ✅                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Infinite Queries                                   | ✅                                       | ✅                                       | ✅                                         | 🛑                                   | 🛑                                                                        |
+| Bi-directional Infinite Queries                    | ✅                                       | 🔶                                       | 🔶                                         | 🛑                                   | 🛑                                                                        |
+| Infinite Query Refetching                          | ✅                                       | ✅                                       | 🛑                                         | 🛑                                   | 🛑                                                                        |
+| Lagged Query Data1                       | ✅                                       | ✅                                       | 🛑                                         | ✅                                   | ✅                                                                        |
+| Selectors                                          | ✅                                       | 🛑                                       | ✅                                         | ✅                                   | N/A                                                                       |
+| Initial Data                                       | ✅                                       | ✅                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Scroll Recovery                                    | ✅                                       | ✅                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Cache Manipulation                                 | ✅                                       | ✅                                       | ✅                                         | ✅                                   | 🛑                                                                        |
+| Outdated Query Dismissal                           | ✅                                       | ✅                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Render Batching & Optimization2          | ✅                                       | ✅                                       | 🛑                                         | ✅                                   | ✅                                                                        |
+| Auto Garbage Collection                            | ✅                                       | 🛑                                       | 🛑                                         | ✅                                   | N/A                                                                       |
+| Mutation Hooks                                     | ✅                                       | ✅                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Offline Mutation Support                           | ✅                                       | 🛑                                       | 🟡                                         | 🛑                                   | 🛑                                                                        |
+| Prefetching APIs                                   | ✅                                       | ✅                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Query Cancellation                                 | ✅                                       | 🛑                                       | 🛑                                         | 🛑                                   | ✅                                                                        |
+| Partial Query Matching3                  | ✅                                       | 🔶                                       | 🛑                                         | ✅                                   | N/A                                                                       |
+| Stale While Revalidate                             | ✅                                       | ✅                                       | ✅                                         | ✅                                   | 🛑                                                                        |
+| Stale Time Configuration                           | ✅                                       | 🛑7                            | 🛑                                         | ✅                                   | 🛑                                                                        |
+| Pre-usage Query/Mutation Configuration4  | ✅                                       | 🛑                                       | 🛑                                         | ✅                                   | ✅                                                                        |
+| Window Focus Refetching                            | ✅                                       | ✅                                       | 🛑                                         | ✅                                   | 🛑                                                                        |
+| Network Status Refetching                          | ✅                                       | ✅                                       | ✅                                         | ✅                                   | 🛑                                                                        |
+| General Cache Dehydration/Rehydration              | ✅                                       | 🛑                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Offline Caching                                    | ✅                                       | 🛑                                       | ✅                                         | 🔶                                   | 🛑                                                                        |
+| React Suspense                                     | ✅                                       | ✅                                       | 🛑                                         | 🛑                                   | ✅                                                                        |
+| Abstracted/Agnostic Core                           | ✅                                       | 🛑                                       | ✅                                         | ✅                                   | 🛑                                                                        |
+| Automatic Refetch after Mutation5        | 🔶                                       | 🔶                                       | ✅                                         | ✅                                   | ✅                                                                        |
+| Normalized Caching6                      | 🛑                                       | 🛑                                       | ✅                                         | 🛑                                   | 🛑                                                                        |
 
 ### Notes
 
@@ -83,19 +83,16 @@ Feature/Capability Key:
 [bp-react-query]: https://badgen.net/bundlephobia/minzip/react-query?label=💾
 [gh-react-query]: https://github.com/tannerlinsley/react-query
 [stars-react-query]: https://img.shields.io/github/stars/tannerlinsley/react-query?label=%F0%9F%8C%9F
-
 [swr]: https://github.com/vercel/swr
 [bp-swr]: https://badgen.net/bundlephobia/minzip/swr?label=💾
 [gh-swr]: https://github.com/vercel/swr
 [stars-swr]: https://img.shields.io/github/stars/vercel/swr?label=%F0%9F%8C%9F
 [bpl-swr]: https://bundlephobia.com/result?p=swr
-
 [apollo]: https://github.com/apollographql/apollo-client
 [bp-apollo]: https://badgen.net/bundlephobia/minzip/@apollo/client?label=💾
 [gh-apollo]: https://github.com/apollographql/apollo-client
 [stars-apollo]: https://img.shields.io/github/stars/apollographql/apollo-client?label=%F0%9F%8C%9F
 [bpl-apollo]: https://bundlephobia.com/result?p=@apollo/client
-
 [rtk-query]: https://redux-toolkit.js.org/rtk-query/overview
 [rtk-query-comparison]: https://redux-toolkit.js.org/rtk-query/comparison
 [rtk-query-bundle-size]: https://redux-toolkit.js.org/rtk-query/comparison#bundle-size
@@ -105,7 +102,6 @@ Feature/Capability Key:
 [stars-rtk-query]: https://img.shields.io/github/stars/reduxjs/redux-toolkit?label=🌟
 [bpl-rtk]: https://bundlephobia.com/result?p=@reduxjs/toolkit
 [bpl-rtk-query]: https://bundlephobia.com/package/@reduxjs/toolkit
-
 [react-router]: https://github.com/remix-run/react-router
 [bp-react-router]: https://badgen.net/bundlephobia/minzip/react-router-dom?label=💾
 [gh-react-router]: https://github.com/remix-run/react-router
diff --git a/docs/react/eslint/eslint-plugin-query.md b/docs/react/eslint/eslint-plugin-query.md
index 5b45abfc31..397ca7ad15 100644
--- a/docs/react/eslint/eslint-plugin-query.md
+++ b/docs/react/eslint/eslint-plugin-query.md
@@ -27,7 +27,6 @@ To enable all of the recommended rules for our plugin, add `plugin:@tanstack/esl
 }
 ```
 
-
 ### Alternative config
 
 Alternatively, add `@tanstack/eslint-plugin-query` to the plugins section of your `.eslintrc` configuration file:
diff --git a/docs/react/eslint/exhaustive-deps.md b/docs/react/eslint/exhaustive-deps.md
index c56f398008..a4b1bd1214 100644
--- a/docs/react/eslint/exhaustive-deps.md
+++ b/docs/react/eslint/exhaustive-deps.md
@@ -14,26 +14,25 @@ Examples of **incorrect** code for this rule:
 /* eslint "@tanstack/query/exhaustive-deps": "error" */
 
 useQuery({
-    queryKey: ["todo"],
-    queryFn: () => api.getTodo(todoId)
+  queryKey: ['todo'],
+  queryFn: () => api.getTodo(todoId),
 })
 
 const todoQueries = {
-    detail: (id) => ({ queryKey: ["todo"], queryFn: () => api.getTodo(id) })
+  detail: (id) => ({ queryKey: ['todo'], queryFn: () => api.getTodo(id) }),
 }
 ```
 
-
 Examples of **correct** code for this rule:
 
 ```tsx
 useQuery({
-    queryKey: ["todo", todoId],
-    queryFn: () => api.getTodo(todoId)
+  queryKey: ['todo', todoId],
+  queryFn: () => api.getTodo(todoId),
 })
 
 const todoQueries = {
-    detail: (id) => ({ queryKey: ["todo", id], queryFn: () => api.getTodo(id) })
+  detail: (id) => ({ queryKey: ['todo', id], queryFn: () => api.getTodo(id) }),
 }
 ```
 
diff --git a/docs/react/eslint/stable-query-client.md b/docs/react/eslint/stable-query-client.md
index 8e7df6a8aa..9af0414c0f 100644
--- a/docs/react/eslint/stable-query-client.md
+++ b/docs/react/eslint/stable-query-client.md
@@ -24,7 +24,6 @@ function App() {
 }
 ```
 
-
 Examples of **correct** code for this rule:
 
 ```tsx
diff --git a/docs/react/guides/disabling-queries.md b/docs/react/guides/disabling-queries.md
index 81a0c2ef6d..9de977e0d0 100644
--- a/docs/react/guides/disabling-queries.md
+++ b/docs/react/guides/disabling-queries.md
@@ -18,12 +18,11 @@ When `enabled` is `false`:
 
 ```tsx
 function Todos() {
-  const { isLoading, isError, data, error, refetch, isFetching } =
-    useQuery({
-      queryKey: ['todos'],
-      queryFn: fetchTodoList,
-      enabled: false,
-    })
+  const { isLoading, isError, data, error, refetch, isFetching } = useQuery({
+    queryKey: ['todos'],
+    queryFn: fetchTodoList,
+    enabled: false,
+  })
 
   return (
     
diff --git a/docs/react/guides/filters.md b/docs/react/guides/filters.md
index c55d8f9301..daca12f69f 100644
--- a/docs/react/guides/filters.md
+++ b/docs/react/guides/filters.md
@@ -52,7 +52,7 @@ A mutation filter is an object with certain conditions to match a mutation with:
 await queryClient.isMutating()
 
 // Filter mutations by mutationKey
-await queryClient.isMutating({ mutationKey: ["post"] })
+await queryClient.isMutating({ mutationKey: ['post'] })
 
 // Filter mutations using a predicate function
 await queryClient.isMutating({
diff --git a/docs/react/guides/infinite-queries.md b/docs/react/guides/infinite-queries.md
index c9950f5896..d842293536 100644
--- a/docs/react/guides/infinite-queries.md
+++ b/docs/react/guides/infinite-queries.md
@@ -87,8 +87,8 @@ function Projects() {
           {isFetchingNextPage
             ? 'Loading more...'
             : hasNextPage
-            ? 'Load More'
-            : 'Nothing more to load'}
+              ? 'Load More'
+              : 'Nothing more to load'}
         
       
       {isFetching && !isFetchingNextPage ? 'Fetching...' : null}
@@ -110,9 +110,7 @@ To ensure a seamless querying process without conflicts, it's highly recommended
 [//]: # 'Example1'
 
 ```jsx
- !isFetching && fetchNextPage()}
-/>
+ !isFetching && fetchNextPage()} />
 ```
 
 [//]: # 'Example1'
@@ -197,8 +195,8 @@ queryClient.setQueryData(['projects'], (data) => ({
 
 ```tsx
 queryClient.setQueryData(['projects'], (data) => ({
-  pages: data.pages.slice(0,1),
-  pageParams: data.pageParams.slice(0,1),
+  pages: data.pages.slice(0, 1),
+  pageParams: data.pageParams.slice(0, 1),
 }))
 ```
 
@@ -206,7 +204,6 @@ queryClient.setQueryData(['projects'], (data) => ({
 
 Make sure to always keep the same data structure of pages and pageParams!
 
-
 [//]: # 'Example8'
 
 ## What if I want to limit the number of pages?
@@ -235,7 +232,7 @@ useInfiniteQuery({
 
 ## What if my API doesn't return a cursor?
 
-If your API doesn't return a cursor, you can use the `pageParam` as a cursor. Because  `getNextPageParam` and `getPreviousPageParam` also get the `pageParam`of the current page, you can use it to calculate the next / previous page param.
+If your API doesn't return a cursor, you can use the `pageParam` as a cursor. Because `getNextPageParam` and `getPreviousPageParam` also get the `pageParam`of the current page, you can use it to calculate the next / previous page param.
 
 [//]: # 'Example9'
 
@@ -246,13 +243,13 @@ return useInfiniteQuery({
   initialPageParam: 0,
   getNextPageParam: (lastPage, allPages, lastPageParam) => {
     if (lastPage.length === 0) {
-        return undefined
+      return undefined
     }
     return lastPageParam + 1
   },
   getPreviousPageParam: (firstPage, allPages, firstPageParam) => {
     if (firstPageParam <= 1) {
-        return undefined
+      return undefined
     }
     return firstPageParam - 1
   },
diff --git a/docs/react/guides/migrating-to-react-query-3.md b/docs/react/guides/migrating-to-react-query-3.md
index e251f38c63..aed7f6aa06 100644
--- a/docs/react/guides/migrating-to-react-query-3.md
+++ b/docs/react/guides/migrating-to-react-query-3.md
@@ -137,7 +137,7 @@ useQuery(['post', id], () => fetchPost(id))
 If you still insist on not using inline functions, you can use the newly passed `QueryFunctionContext`:
 
 ```tsx
-useQuery(['post', id], context => fetchPost(context.queryKey[1]))
+useQuery(['post', id], (context) => fetchPost(context.queryKey[1]))
 ```
 
 ### Infinite Query Page params are now passed via `QueryFunctionContext.pageParam`
@@ -183,18 +183,14 @@ The `useInfiniteQuery()` interface has changed to fully support bi-directional i
 One direction:
 
 ```tsx
-const {
-  data,
-  fetchNextPage,
-  hasNextPage,
-  isFetchingNextPage,
-} = useInfiniteQuery(
-  'projects',
-  ({ pageParam = 0 }) => fetchProjects(pageParam),
-  {
-    getNextPageParam: (lastPage, pages) => lastPage.nextCursor,
-  }
-)
+const { data, fetchNextPage, hasNextPage, isFetchingNextPage } =
+  useInfiniteQuery(
+    'projects',
+    ({ pageParam = 0 }) => fetchProjects(pageParam),
+    {
+      getNextPageParam: (lastPage, pages) => lastPage.nextCursor,
+    },
+  )
 ```
 
 Both directions:
@@ -214,29 +210,25 @@ const {
   {
     getNextPageParam: (lastPage, pages) => lastPage.nextCursor,
     getPreviousPageParam: (firstPage, pages) => firstPage.prevCursor,
-  }
+  },
 )
 ```
 
 One direction reversed:
 
 ```tsx
-const {
-  data,
-  fetchNextPage,
-  hasNextPage,
-  isFetchingNextPage,
-} = useInfiniteQuery(
-  'projects',
-  ({ pageParam = 0 }) => fetchProjects(pageParam),
-  {
-    select: data => ({
-      pages: [...data.pages].reverse(),
-      pageParams: [...data.pageParams].reverse(),
-    }),
-    getNextPageParam: (lastPage, pages) => lastPage.nextCursor,
-  }
-)
+const { data, fetchNextPage, hasNextPage, isFetchingNextPage } =
+  useInfiniteQuery(
+    'projects',
+    ({ pageParam = 0 }) => fetchProjects(pageParam),
+    {
+      select: (data) => ({
+        pages: [...data.pages].reverse(),
+        pageParams: [...data.pageParams].reverse(),
+      }),
+      getNextPageParam: (lastPage, pages) => lastPage.nextCursor,
+    },
+  )
 ```
 
 ### Infinite Query data now contains the array of pages and pageParams used to fetch those pages.
@@ -244,7 +236,7 @@ const {
 This allows for easier manipulation of the data and the page params, like, for example, removing the first page of data along with it's params:
 
 ```tsx
-queryClient.setQueryData(['projects'], data => ({
+queryClient.setQueryData(['projects'], (data) => ({
   pages: data.pages.slice(1),
   pageParams: data.pageParams.slice(1),
 }))
@@ -277,10 +269,10 @@ The `mutate` function can be used when using callbacks:
 const { mutate } = useMutation({ mutationFn: addTodo })
 
 mutate('todo', {
-  onSuccess: data => {
+  onSuccess: (data) => {
     console.log(data)
   },
-  onError: error => {
+  onError: (error) => {
     console.error(error)
   },
   onSettled: () => {
@@ -393,7 +385,7 @@ import { setLogger } from 'react-query'
 
 // Log with Sentry
 setLogger({
-  error: error => {
+  error: (error) => {
     Sentry.captureException(error)
   },
 })
@@ -418,13 +410,14 @@ setConsole({
 
 In version 3 **this is done automatically when React Query is used in React Native**.
 
-
 ### Typescript
+
 #### `QueryStatus` has been changed from an [enum](https://www.typescriptlang.org/docs/handbook/enums.html#string-enums) to a [union type](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types)
 
 So, if you were checking the status property of a query or mutation against a QueryStatus enum property you will have to check it now against the string literal the enum previously held for each property.
 
 Therefore you have to change the enum properties to their equivalent string literal, like this:
+
 - `QueryStatus.Idle` -> `'idle'`
 - `QueryStatus.Loading` -> `'loading'`
 - `QueryStatus.Error` -> `'error'`
@@ -460,7 +453,7 @@ import { useQuery } from 'react-query'
 
 function User() {
   const { data } = useQuery(['user'], fetchUser, {
-    select: user => user.username,
+    select: (user) => user.username,
   })
   return Username: {data}
 }
@@ -512,7 +505,7 @@ A `QueryObserver` can be used to create and/or watch a query:
 ```tsx
 const observer = new QueryObserver(queryClient, { queryKey: 'posts' })
 
-const unsubscribe = observer.subscribe(result => {
+const unsubscribe = observer.subscribe((result) => {
   console.log(result)
   unsubscribe()
 })
@@ -530,7 +523,7 @@ const observer = new InfiniteQueryObserver(queryClient, {
   getPreviousPageParam: (firstPage, allPages) => firstPage.prevCursor,
 })
 
-const unsubscribe = observer.subscribe(result => {
+const unsubscribe = observer.subscribe((result) => {
   console.log(result)
   unsubscribe()
 })
@@ -546,7 +539,7 @@ const observer = new QueriesObserver(queryClient, [
   { queryKey: ['post', 2], queryFn: fetchPost },
 ])
 
-const unsubscribe = observer.subscribe(result => {
+const unsubscribe = observer.subscribe((result) => {
   console.log(result)
   unsubscribe()
 })
diff --git a/docs/react/guides/migrating-to-react-query-4.md b/docs/react/guides/migrating-to-react-query-4.md
index 467ebd4712..38779170af 100644
--- a/docs/react/guides/migrating-to-react-query-4.md
+++ b/docs/react/guides/migrating-to-react-query-4.md
@@ -139,7 +139,9 @@ In order to make bailing out of updates possible by returning `undefined`, we ha
 Further, it is an easy bug to produce `Promise` by adding logging in the queryFn:
 
 ```tsx
-useQuery(['key'], () => axios.get(url).then(result => console.log(result.data)))
+useQuery(['key'], () =>
+  axios.get(url).then((result) => console.log(result.data)),
+)
 ```
 
 This is now disallowed on type level; at runtime, `undefined` will be transformed to a _failed Promise_, which means you will get an `error`, which will also be logged to the console in development mode.
@@ -420,8 +422,8 @@ React Query defaults to "tracking" query properties, which should give you a nic
 When using the [functional updater form of setQueryData](../reference/QueryClient#queryclientsetquerydata), you can now bail out of the update by returning `undefined`. This is helpful if `undefined` is given to you as `previousValue`, which means that currently, no cached entry exists and you don't want to / cannot create one, like in the example of toggling a todo:
 
 ```tsx
-queryClient.setQueryData(['todo', id], previousTodo =>
-  previousTodo ? { ...previousTodo, done: true } : undefined
+queryClient.setQueryData(['todo', id], (previousTodo) =>
+  previousTodo ? { ...previousTodo, done: true } : undefined,
 )
 ```
 
diff --git a/docs/react/guides/mutations.md b/docs/react/guides/mutations.md
index 2f6526464e..16b5e64253 100644
--- a/docs/react/guides/mutations.md
+++ b/docs/react/guides/mutations.md
@@ -231,7 +231,8 @@ useMutation({
   },
 })
 
-[('Todo 1', 'Todo 2', 'Todo 3')].forEach((todo) => {
+const todos = ['Todo 1', 'Todo 2', 'Todo 3']
+todos.forEach((todo) => {
   mutate(todo, {
     onSuccess: (data, error, variables, context) => {
       // Will execute only once, for the last mutation (Todo 3),
diff --git a/docs/react/guides/optimistic-updates.md b/docs/react/guides/optimistic-updates.md
index 45eb734236..f733d305b1 100644
--- a/docs/react/guides/optimistic-updates.md
+++ b/docs/react/guides/optimistic-updates.md
@@ -10,33 +10,33 @@ React Query provides two ways to optimistically update your UI before a mutation
 This is the simpler variant, as it doesn't interact with the cache directly.
 
 [//]: # 'ExampleUI1'
+
 ```tsx
-  const { isPending, submittedAt, variables, mutate, isError } = useMutation({
-    mutationFn: (newTodo: string) => axios.post('/api/data', { text: newTodo }),
-    // make sure to _return_ the Promise from the query invalidation
-    // so that the mutation stays in `pending` state until the refetch is finished
-    onSettled: async () => {
-      return await queryClient.invalidateQueries({ queryKey: ['todos'] })
-    },
-  })
+const { isPending, submittedAt, variables, mutate, isError } = useMutation({
+  mutationFn: (newTodo: string) => axios.post('/api/data', { text: newTodo }),
+  // make sure to _return_ the Promise from the query invalidation
+  // so that the mutation stays in `pending` state until the refetch is finished
+  onSettled: async () => {
+    return await queryClient.invalidateQueries({ queryKey: ['todos'] })
+  },
+})
 ```
+
 [//]: # 'ExampleUI1'
 
 you will then have access to `addTodoMutation.variables`, which contain the added todo. In your UI list, where the query is rendered, you can append another item to the list while the mutation is `pending`:
 
 [//]: # 'ExampleUI2'
+
 ```tsx
 
   {todoQuery.items.map((todo) => (
     {todo.text} 
   ))}
-  {isPending && (
-    
-      {variables}
-     
-  )}
+  {isPending && {variables} }
  
 ```
+
 [//]: # 'ExampleUI2'
 
 We're rendering a temporary item with a different `opacity` as long as the mutation is pending. Once it completes, the item will automatically no longer be rendered. Given that the refetch succeeded, we should see the item as a "normal item" in our list.
@@ -44,18 +44,18 @@ We're rendering a temporary item with a different `opacity` as long as the mutat
 If the mutation errors, the item will also disappear. But we could continue to show it, if we want, by checking for the `isError` state of the mutation. `variables` are _not_ cleared when the mutation errors, so we can still access them, maybe even show a retry button:
 
 [//]: # 'ExampleUI3'
+
 ```tsx
-{isError && (
-  
-    {variables}
-     mutate(variables)}>
-      Retry
-     
-   
-)}
+{
+  isError && (
+    
+      {variables}
+       mutate(variables)}>Retry 
+     
+  )
+}
 ```
+
 [//]: # 'ExampleUI3'
 
 ### If the mutation and the query don't live in the same component
@@ -63,20 +63,22 @@ If the mutation errors, the item will also disappear. But we could continue to s
 This approach works very well if the mutation and the query live in the same component, However, you also get access to all mutations in other components via the dedicated `useMutationState` hook. It is best combined with a `mutationKey`:
 
 [//]: # 'ExampleUI4'
+
 ```tsx
 // somewhere in your app
 const { mutate } = useMutation({
   mutationFn: (newTodo: string) => axios.post('/api/data', { text: newTodo }),
   onSettled: () => queryClient.invalidateQueries({ queryKey: ['todos'] }),
-  mutationKey: ['addTodo']
+  mutationKey: ['addTodo'],
 })
 
 // access variables somewhere else
 const variables = useMutationState({
   filters: { mutationKey: ['addTodo'], status: 'pending' },
-  select: (mutation) => mutation.state.variables
+  select: (mutation) => mutation.state.variables,
 })
 ```
+
 [//]: # 'ExampleUI4'
 
 `variables` will be an `Array`, because there might be multiple mutations running at the same time. If we need a unique key for the items, we can also select `mutation.state.submittedAt`. This will even make displaying concurrent optimistic updates a breeze.
@@ -122,11 +124,13 @@ useMutation({
   },
 })
 ```
+
 [//]: # 'Example'
 
 ### Updating a single todo
 
 [//]: # 'Example2'
+
 ```tsx
 useMutation({
   mutationFn: updateTodo,
@@ -158,11 +162,13 @@ useMutation({
   },
 })
 ```
+
 [//]: # 'Example2'
 
 You can also use the `onSettled` function in place of the separate `onError` and `onSuccess` handlers if you wish:
 
 [//]: # 'Example3'
+
 ```tsx
 useMutation({
   mutationFn: updateTodo,
@@ -174,8 +180,8 @@ useMutation({
   },
 })
 ```
-[//]: # 'Example3'
 
+[//]: # 'Example3'
 
 ## When to use what
 
diff --git a/docs/react/guides/paginated-queries.md b/docs/react/guides/paginated-queries.md
index c0138ad141..7ddb8b348a 100644
--- a/docs/react/guides/paginated-queries.md
+++ b/docs/react/guides/paginated-queries.md
@@ -6,12 +6,14 @@ title: Paginated / Lagged Queries
 Rendering paginated data is a very common UI pattern and in TanStack Query, it "just works" by including the page information in the query key:
 
 [//]: # 'Example'
+
 ```tsx
 const result = useQuery({
   queryKey: ['projects', page],
-  queryFn: fetchProjects
+  queryFn: fetchProjects,
 })
 ```
+
 [//]: # 'Example'
 
 However, if you run this simple example, you might notice something strange:
@@ -29,27 +31,23 @@ Consider the following example where we would ideally want to increment a pageIn
 - `isPlaceholderData` is made available to know what data the query is currently providing you
 
 [//]: # 'Example2'
+
 ```tsx
-import { keepPreviousData, useQuery } from "@tanstack/react-query";
-import React from "react";
+import { keepPreviousData, useQuery } from '@tanstack/react-query'
+import React from 'react'
 
 function Todos() {
   const [page, setPage] = React.useState(0)
 
-  const fetchProjects = (page = 0) => fetch('/api/projects?page=' + page).then((res) => res.json())
-
-  const {
-    isPending,
-    isError,
-    error,
-    data,
-    isFetching,
-    isPlaceholderData,
-  } = useQuery({
-    queryKey: ['projects', page],
-    queryFn: () => fetchProjects(page),
-    placeholderData: keepPreviousData,
-  })
+  const fetchProjects = (page = 0) =>
+    fetch('/api/projects?page=' + page).then((res) => res.json())
+
+  const { isPending, isError, error, data, isFetching, isPlaceholderData } =
+    useQuery({
+      queryKey: ['projects', page],
+      queryFn: () => fetchProjects(page),
+      placeholderData: keepPreviousData,
+    })
 
   return (
     
@@ -59,14 +57,14 @@ function Todos() {
         
Error: {error.message}
       ) : (
         
-          {data.projects.map(project => (
+          {data.projects.map((project) => (
             
{project.name}
           ))}
         
       )}
       
Current Page: {page + 1} 
        setPage(old => Math.max(old - 1, 0))}
+        onClick={() => setPage((old) => Math.max(old - 1, 0))}
         disabled={page === 0}
       >
         Previous Page
@@ -74,7 +72,7 @@ function Todos() {
        {
           if (!isPlaceholderData && data.hasMore) {
-            setPage(old => old + 1)
+            setPage((old) => old + 1)
           }
         }}
         // Disable the Next Page button until we know a next page is available
@@ -87,6 +85,7 @@ function Todos() {
   )
 }
 ```
+
 [//]: # 'Example2'
 
 ## Lagging Infinite Query results with `placeholderData`
diff --git a/docs/react/guides/placeholder-query-data.md b/docs/react/guides/placeholder-query-data.md
index 400c8e30fe..b625d03ed8 100644
--- a/docs/react/guides/placeholder-query-data.md
+++ b/docs/react/guides/placeholder-query-data.md
@@ -76,7 +76,7 @@ In some circumstances, you may be able to provide the placeholder data for a que
 
 ```tsx
 function Todo({ blogPostId }) {
-  const queryClient = useQueryClient();
+  const queryClient = useQueryClient()
   const result = useQuery({
     queryKey: ['blogPost', blogPostId],
     queryFn: () => fetch(`/blogPosts/${blogPostId}`),
diff --git a/docs/react/guides/query-keys.md b/docs/react/guides/query-keys.md
index 15e3f7bd3b..e6966ede73 100644
--- a/docs/react/guides/query-keys.md
+++ b/docs/react/guides/query-keys.md
@@ -91,7 +91,7 @@ function Todos({ todoId }) {
 
 [//]: # 'Example5'
 
-Note that query keys act as dependencies for your query functions. Adding dependent variables to your query key will ensure that queries are cached independently, and that any time a variable changes, *queries will be refetched automatically* (depending on your `staleTime` settings). See the [exhaustive-deps](../eslint/exhaustive-deps) section for more information and examples.
+Note that query keys act as dependencies for your query functions. Adding dependent variables to your query key will ensure that queries are cached independently, and that any time a variable changes, _queries will be refetched automatically_ (depending on your `staleTime` settings). See the [exhaustive-deps](../eslint/exhaustive-deps) section for more information and examples.
 
 [//]: # 'Materials'
 
diff --git a/docs/react/guides/query-retries.md b/docs/react/guides/query-retries.md
index 8d48c058c6..1929ff7e4a 100644
--- a/docs/react/guides/query-retries.md
+++ b/docs/react/guides/query-retries.md
@@ -17,7 +17,6 @@ You can configure retries both on a global level and an individual query level.
 > On the server, retries default to `0` to make server rendering as fast as possible.
 
 [//]: # 'Info'
-
 [//]: # 'Example'
 
 ```tsx
diff --git a/docs/react/guides/ssr.md b/docs/react/guides/ssr.md
index 59751e1953..42e84251fd 100644
--- a/docs/react/guides/ssr.md
+++ b/docs/react/guides/ssr.md
@@ -541,7 +541,7 @@ In case you are creating the `QueryClient` for every request, React Query create
 
 On the server, `gcTime` defaults to `Infinity` which disables manual garbage collection and will automatically clear memory once a request has finished. If you are explicitly setting a non-Infinity `gcTime` then you will be responsible for clearing the cache early.
 
-Avoid setting `gcTime` to `0` as it may result in a hydration error. This occurs because the [Hydration Boundary](../reference/hydration#hydrationboundary) places necessary data into the cache for rendering, but if the garbage collector removes the data before the rendering completes, issues may arise. If you require a shorter `gcTime`, we recommend setting it to `2 * 1000` to allow sufficient time for the app to reference the data. 
+Avoid setting `gcTime` to `0` as it may result in a hydration error. This occurs because the [Hydration Boundary](../reference/hydration#hydrationboundary) places necessary data into the cache for rendering, but if the garbage collector removes the data before the rendering completes, issues may arise. If you require a shorter `gcTime`, we recommend setting it to `2 * 1000` to allow sufficient time for the app to reference the data.
 
 To clear the cache after it is not needed and to lower memory consumption, you can add a call to [`queryClient.clear()`](../reference/QueryClient#queryclientclear) after the request is handled and dehydrated state has been sent to the client.
 
diff --git a/docs/react/guides/suspense.md b/docs/react/guides/suspense.md
index 59af6cbaec..521c4426e3 100644
--- a/docs/react/guides/suspense.md
+++ b/docs/react/guides/suspense.md
@@ -43,11 +43,10 @@ import { useSuspenseQuery } from '@tanstack/react-query'
 const { data, error } = useSuspenseQuery({ queryKey, queryFn })
 
 if (error) {
-    throw error
+  throw error
 }
 
 // continue rendering data
-
 ```
 
 ## Resetting Error Boundaries
diff --git a/docs/react/guides/testing.md b/docs/react/guides/testing.md
index caf628b9ec..7a9bf3d00d 100644
--- a/docs/react/guides/testing.md
+++ b/docs/react/guides/testing.md
@@ -15,7 +15,7 @@ npm install @testing-library/react-hooks react-test-renderer --save-dev
 
 (The `react-test-renderer` library is needed as a peer dependency of `@testing-library/react-hooks`, and needs to correspond to the version of React that you are using.)
 
-*Note*: when using React 18 or later, `renderHook` is available directly through the `@testing-library/react` package, and `@testing-library/react-hooks` is no longer required.
+_Note_: when using React 18 or later, `renderHook` is available directly through the `@testing-library/react` package, and `@testing-library/react-hooks` is no longer required.
 
 ## Our First Test
 
@@ -23,25 +23,23 @@ Once installed, a simple test can be written. Given the following custom hook:
 
 ```tsx
 export function useCustomHook() {
-  return useQuery({ queryKey: ['customHook'], queryFn: () => 'Hello' });
+  return useQuery({ queryKey: ['customHook'], queryFn: () => 'Hello' })
 }
 ```
 
 Using React 17 or earlier, we can write a test for this as follows:
 
 ```tsx
-const queryClient = new QueryClient();
+const queryClient = new QueryClient()
 const wrapper = ({ children }) => (
-  
-    {children}
-   
-);
+  {children} 
+)
 
-const { result, waitFor } = renderHook(() => useCustomHook(), { wrapper });
+const { result, waitFor } = renderHook(() => useCustomHook(), { wrapper })
 
-await waitFor(() => result.current.isSuccess);
+await waitFor(() => result.current.isSuccess)
 
-expect(result.current.data).toEqual("Hello");
+expect(result.current.data).toEqual('Hello')
 ```
 
 Using React 18 or later, the semantics of `waitFor` have changed, and the above test needs to be modified as follows:
@@ -74,10 +72,8 @@ const queryClient = new QueryClient({
   },
 })
 const wrapper = ({ children }) => (
-  
-    {children}
-   
-);
+  {children} 
+)
 ```
 
 This will set the defaults for all queries in the component tree to "no retries". It is important to know that this will only work if your actual useQuery has no explicit retries set. If you have a query that wants 5 retries, this will still take precedence, because defaults are only taken as a fallback.
@@ -99,36 +95,32 @@ function useFetchData() {
   return useQuery({
     queryKey: ['fetchData'],
     queryFn: () => request('/api/data'),
-  });
+  })
 }
 ```
 
 We can write a test for this as follows:
 
 ```tsx
-const queryClient = new QueryClient();
+const queryClient = new QueryClient()
 const wrapper = ({ children }) => (
-  
-    {children}
-   
-);
+  {children} 
+)
 
-const expectation = nock('http://example.com')
-  .get('/api/data')
-  .reply(200, {
-    answer: 42
-  });
+const expectation = nock('http://example.com').get('/api/data').reply(200, {
+  answer: 42,
+})
 
-const { result, waitFor } = renderHook(() => useFetchData(), { wrapper });
+const { result, waitFor } = renderHook(() => useFetchData(), { wrapper })
 
 await waitFor(() => {
-  return result.current.isSuccess;
-});
+  return result.current.isSuccess
+})
 
-expect(result.current.data).toEqual({answer: 42});
+expect(result.current.data).toEqual({ answer: 42 })
 ```
 
-Here we are making use of `waitFor` and waiting until the query status indicates that the request has succeeded. This way we know that our hook has finished and should have the correct data. *Note*: when using React 18, the semantics of `waitFor` have changed as noted above.
+Here we are making use of `waitFor` and waiting until the query status indicates that the request has succeeded. This way we know that our hook has finished and should have the correct data. _Note_: when using React 18, the semantics of `waitFor` have changed as noted above.
 
 ## Testing Load More / Infinite Scroll
 
@@ -152,10 +144,10 @@ const expectation = nock('http://example.com')
   .query(true)
   .get('/api/data')
   .reply(200, (uri) => {
-    const url = new URL(`http://example.com${uri}`);
-    const { page } = Object.fromEntries(url.searchParams);
-    return generateMockedResponse(page);
-  });
+    const url = new URL(`http://example.com${uri}`)
+    const { page } = Object.fromEntries(url.searchParams)
+    return generateMockedResponse(page)
+  })
 ```
 
 (Notice the `.persist()`, because we'll be calling from this endpoint multiple times)
@@ -163,28 +155,27 @@ const expectation = nock('http://example.com')
 Now we can safely run our tests, the trick here is to await for the data assertion to pass:
 
 ```tsx
-const { result, waitFor } = renderHook(
-  () => useInfiniteQueryCustomHook(),
-  { wrapper },
-);
+const { result, waitFor } = renderHook(() => useInfiniteQueryCustomHook(), {
+  wrapper,
+})
 
-await waitFor(() => result.current.isSuccess);
+await waitFor(() => result.current.isSuccess)
 
-expect(result.current.data.pages).toStrictEqual(generateMockedResponse(1));
+expect(result.current.data.pages).toStrictEqual(generateMockedResponse(1))
 
-result.current.fetchNextPage();
+result.current.fetchNextPage()
 
 await waitFor(() =>
   expect(result.current.data.pages).toStrictEqual([
     ...generateMockedResponse(1),
     ...generateMockedResponse(2),
   ]),
-);
+)
 
-expectation.done();
+expectation.done()
 ```
 
-*Note*: when using React 18, the semantics of `waitFor` have changed as noted above.
+_Note_: when using React 18, the semantics of `waitFor` have changed as noted above.
 
 ## Further reading
 
diff --git a/docs/react/guides/updates-from-mutation-responses.md b/docs/react/guides/updates-from-mutation-responses.md
index fb3486fc8d..c2d5a6e65a 100644
--- a/docs/react/guides/updates-from-mutation-responses.md
+++ b/docs/react/guides/updates-from-mutation-responses.md
@@ -6,14 +6,15 @@ title: Updates from Mutation Responses
 When dealing with mutations that **update** objects on the server, it's common for the new object to be automatically returned in the response of the mutation. Instead of refetching any queries for that item and wasting a network call for data we already have, we can take advantage of the object returned by the mutation function and update the existing query with the new data immediately using the [Query Client's `setQueryData`](../reference/QueryClient#queryclientsetquerydata) method:
 
 [//]: # 'Example'
+
 ```tsx
 const queryClient = useQueryClient()
 
 const mutation = useMutation({
   mutationFn: editTodo,
-  onSuccess: data => {
+  onSuccess: (data) => {
     queryClient.setQueryData(['todo', { id: 5 }], data)
-  }
+  },
 })
 
 mutation.mutate({
@@ -28,12 +29,14 @@ const { status, data, error } = useQuery({
   queryFn: fetchTodoById,
 })
 ```
+
 [//]: # 'Example'
 
 You might want to tie the `onSuccess` logic into a reusable mutation, for that you can
 create a custom hook like this:
 
 [//]: # 'Example2'
+
 ```tsx
 const useMutateTodo = () => {
   const queryClient = useQueryClient()
@@ -47,6 +50,7 @@ const useMutateTodo = () => {
   })
 }
 ```
+
 [//]: # 'Example2'
 
 ## Immutability
@@ -54,24 +58,27 @@ const useMutateTodo = () => {
 Updates via `setQueryData` must be performed in an _immutable_ way. **DO NOT** attempt to write directly to the cache by mutating data (that you retrieved from the cache) in place. It might work at first but can lead to subtle bugs along the way.
 
 [//]: # 'Example3'
+
 ```tsx
-queryClient.setQueryData(
-  ['posts', { id }],
-  (oldData) => {
-    if (oldData) {
-      // ❌ do not try this
-      oldData.title = 'my new post title'
-    }
-    return oldData
-  })
+queryClient.setQueryData(['posts', { id }], (oldData) => {
+  if (oldData) {
+    // ❌ do not try this
+    oldData.title = 'my new post title'
+  }
+  return oldData
+})
 
 queryClient.setQueryData(
   ['posts', { id }],
   // ✅ this is the way
-  (oldData) => oldData ? {
-    ...oldData,
-    title: 'my new post title'
-  } : oldData
+  (oldData) =>
+    oldData
+      ? {
+          ...oldData,
+          title: 'my new post title',
+        }
+      : oldData,
 )
 ```
+
 [//]: # 'Example3'
diff --git a/docs/react/overview.md b/docs/react/overview.md
index e57a14b9b0..291a95c234 100644
--- a/docs/react/overview.md
+++ b/docs/react/overview.md
@@ -69,8 +69,8 @@ function Example() {
   const { isPending, error, data } = useQuery({
     queryKey: ['repoData'],
     queryFn: () =>
-      fetch('https://api.github.com/repos/TanStack/query').then(
-        (res) => res.json(),
+      fetch('https://api.github.com/repos/TanStack/query').then((res) =>
+        res.json(),
       ),
   })
 
diff --git a/docs/react/plugins/createAsyncStoragePersister.md b/docs/react/plugins/createAsyncStoragePersister.md
index 39d92b8516..2bda27e9a0 100644
--- a/docs/react/plugins/createAsyncStoragePersister.md
+++ b/docs/react/plugins/createAsyncStoragePersister.md
@@ -6,14 +6,19 @@ title: createAsyncStoragePersister
 ## Installation
 
 This utility comes as a separate package and is available under the `'@tanstack/query-async-storage-persister'` import.
+
 ```bash
 npm install @tanstack/query-async-storage-persister @tanstack/react-query-persist-client
 ```
+
 or
+
 ```bash
 pnpm add @tanstack/query-async-storage-persister @tanstack/react-query-persist-client
 ```
+
 or
+
 ```bash
 yarn add @tanstack/query-async-storage-persister @tanstack/react-query-persist-client
 ```
@@ -40,7 +45,7 @@ const queryClient = new QueryClient({
 })
 
 const asyncStoragePersister = createAsyncStoragePersister({
-  storage: AsyncStorage
+  storage: AsyncStorage,
 })
 
 const Root = () => (
@@ -50,9 +55,9 @@ const Root = () => (
   >
     
-   setItem: (key: string, value: string) => Promise
-   removeItem: (key: string) => Promise
+  getItem: (key: string) => Promise
+  setItem: (key: string, value: string) => Promise
+  removeItem: (key: string) => Promise
 }
 ```
 
diff --git a/docs/react/plugins/createPersister.md b/docs/react/plugins/createPersister.md
index 5aa5679bdd..ba72da4f54 100644
--- a/docs/react/plugins/createPersister.md
+++ b/docs/react/plugins/createPersister.md
@@ -49,7 +49,7 @@ const queryClient = new QueryClient({
       gcTime: 1000 * 30, // 30 seconds
       persister: experimental_createPersister({
         storage: AsyncStorage,
-        maxAge: 1000 * 60 * 60 * 12 // 12 hours
+        maxAge: 1000 * 60 * 60 * 12, // 12 hours
       }),
     },
   },
diff --git a/docs/react/plugins/createSyncStoragePersister.md b/docs/react/plugins/createSyncStoragePersister.md
index c241384a41..9f0e97c74c 100644
--- a/docs/react/plugins/createSyncStoragePersister.md
+++ b/docs/react/plugins/createSyncStoragePersister.md
@@ -6,14 +6,19 @@ title: createSyncStoragePersister
 ## Installation
 
 This utility comes as a separate package and is available under the `'@tanstack/query-sync-storage-persister'` import.
+
 ```bash
 npm install @tanstack/query-sync-storage-persister @tanstack/react-query-persist-client
 ```
+
 or
+
 ```bash
 pnpm add @tanstack/query-sync-storage-persister @tanstack/react-query-persist-client
 ```
+
 or
+
 ```bash
 yarn add @tanstack/query-sync-storage-persister @tanstack/react-query-persist-client
 ```
@@ -36,7 +41,9 @@ const queryClient = new QueryClient({
   },
 })
 
-const localStoragePersister = createSyncStoragePersister({ storage: window.localStorage })
+const localStoragePersister = createSyncStoragePersister({
+  storage: window.localStorage,
+})
 // const sessionStoragePersister = createSyncStoragePersister({ storage: window.sessionStorage })
 
 persistQueryClient({
@@ -69,7 +76,7 @@ Per default, no retry will occur. You can use one of the predefined strategies t
 ```tsx
 const localStoragePersister = createSyncStoragePersister({
   storage: window.localStorage,
-  retry: removeOldestQuery
+  retry: removeOldestQuery,
 })
 ```
 
@@ -115,25 +122,28 @@ The default options are:
 ```
 
 #### `serialize` and `deserialize` options
+
 There is a limit to the amount of data which can be stored in `localStorage`.
 If you need to store more data in `localStorage`, you can override the `serialize` and `deserialize` functions to compress and decrompress the data using a library like [lz-string](https://github.com/pieroxy/lz-string/).
 
 ```tsx
-import { QueryClient } from '@tanstack/react-query';
+import { QueryClient } from '@tanstack/react-query'
 import { persistQueryClient } from '@tanstack/react-query-persist-client'
 import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'
 
-import { compress, decompress } from 'lz-string';
+import { compress, decompress } from 'lz-string'
 
-const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: Infinity } } });
+const queryClient = new QueryClient({
+  defaultOptions: { queries: { staleTime: Infinity } },
+})
 
 persistQueryClient({
   queryClient: queryClient,
   persister: createSyncStoragePersister({
     storage: window.localStorage,
-    serialize: data => compress(JSON.stringify(data)),
-    deserialize: data => JSON.parse(decompress(data)),
+    serialize: (data) => compress(JSON.stringify(data)),
+    deserialize: (data) => JSON.parse(decompress(data)),
   }),
   maxAge: Infinity,
-});
+})
 ```
diff --git a/docs/react/plugins/persistQueryClient.md b/docs/react/plugins/persistQueryClient.md
index 6f259c9199..246a1c4388 100644
--- a/docs/react/plugins/persistQueryClient.md
+++ b/docs/react/plugins/persistQueryClient.md
@@ -33,7 +33,7 @@ const queryClient = new QueryClient({
 
 ### Cache Busting
 
-Sometimes you may make changes to your application or data that immediately invalidate any and all cached data. If and when this happens, you can pass a `buster` string option. If the cache that is found does not also have that buster string, it will be discarded.  The following several functions accept this option:
+Sometimes you may make changes to your application or data that immediately invalidate any and all cached data. If and when this happens, you can pass a `buster` string option. If the cache that is found does not also have that buster string, it will be discarded. The following several functions accept this option:
 
 ```tsx
 persistQueryClient({ queryClient, persister, buster: buildHash })
@@ -57,7 +57,7 @@ the persister `removeClient()` is called and the cache is immediately discarded.
 ### `persistQueryClientSave`
 
 - Your query/mutation are [`dehydrated`](../reference/hydration#dehydrate) and stored by the persister you provided.
-- `createSyncStoragePersister` and `createAsyncStoragePersister` throttle this action to happen at most every 1 second to save on potentially expensive writes.  Review their documentation to see how to customize their throttle timing.
+- `createSyncStoragePersister` and `createAsyncStoragePersister` throttle this action to happen at most every 1 second to save on potentially expensive writes. Review their documentation to see how to customize their throttle timing.
 
 You can use this to explicitly persist the cache at the moment(s) you choose.
 
@@ -146,12 +146,13 @@ interface PersistQueryClientOptions {
    * Not used on `persistQueryClientSave` or `persistQueryClientSubscribe` */
   hydrateOptions?: HydrateOptions
   /** The options passed to the dehydrate function
-  * Not used on `persistQueryClientRestore` */
+   * Not used on `persistQueryClientRestore` */
   dehydrateOptions?: DehydrateOptions
 }
 ```
 
 There are actually three interfaces available:
+
 - `PersistedQueryClientSaveOptions` is used for `persistQueryClientSave` and `persistQueryClientSubscribe` (doesn't use `hydrateOptions`).
 - `PersistedQueryClientRestoreOptions` is used for `persistQueryClientRestore` (doesn't use `dehydrateOptions`).
 - `PersistQueryClientOptions` is used for `persistQueryClient`
@@ -180,7 +181,6 @@ ReactDOM.createRoot(rootElement).render((idbValidKey);
+      return await get(idbValidKey)
     },
     removeClient: async () => {
-      await del(idbValidKey);
+      await del(idbValidKey)
     },
-  } as Persister;
+  } as Persister
 }
 ```
diff --git a/docs/react/quick-start.md b/docs/react/quick-start.md
index 58eb15900c..8f390dec42 100644
--- a/docs/react/quick-start.md
+++ b/docs/react/quick-start.md
@@ -53,11 +53,7 @@ function Todos() {
 
   return (
     
-      
-        {query.data?.map((todo) => (
-          {todo.title} 
-        ))}
-       
+      
{query.data?.map((todo) => {todo.title} )} 
 
        {
diff --git a/docs/react/react-native.md b/docs/react/react-native.md
index c325353c65..88f400f34c 100644
--- a/docs/react/react-native.md
+++ b/docs/react/react-native.md
@@ -20,8 +20,8 @@ To add this behavior in React Native you have to use React Query `onlineManager`
 import NetInfo from '@react-native-community/netinfo'
 import { onlineManager } from '@tanstack/react-query'
 
-onlineManager.setEventListener(setOnline => {
-  return NetInfo.addEventListener(state => {
+onlineManager.setEventListener((setOnline) => {
+  return NetInfo.addEventListener((state) => {
     setOnline(!!state.isConnected)
   })
 })
@@ -32,9 +32,9 @@ onlineManager.setEventListener(setOnline => {
 Instead of event listeners on `window`, React Native provides focus information through the [`AppState` module](https://reactnative.dev/docs/appstate#app-states). You can use the `AppState` "change" event to trigger an update when the app state changes to "active":
 
 ```tsx
-import { useEffect } from "react"
+import { useEffect } from 'react'
 import { AppState, Platform } from 'react-native'
-import type { AppStateStatus } from "react-native"
+import type { AppStateStatus } from 'react-native'
 import { focusManager } from '@tanstack/react-query'
 
 function onAppStateChange(status: AppStateStatus) {
@@ -65,12 +65,12 @@ export function useRefreshOnFocus(refetch: () => Promise) {
   useFocusEffect(
     React.useCallback(() => {
       if (firstTimeRef.current) {
-         firstTimeRef.current = false;
-         return;
+        firstTimeRef.current = false
+        return
       }
 
       refetch()
-    }, [refetch])
+    }, [refetch]),
   )
 }
 ```
@@ -88,7 +88,9 @@ import React from 'react'
 import { NotifyOnChangeProps } from '@tanstack/query-core'
 import { useFocusEffect } from '@react-navigation/native'
 
-export function useFocusNotifyOnChangeProps(notifyOnChangeProps?: NotifyOnChangeProps) {
+export function useFocusNotifyOnChangeProps(
+  notifyOnChangeProps?: NotifyOnChangeProps,
+) {
   const focusedRef = React.useRef(true)
 
   useFocusEffect(
@@ -98,7 +100,7 @@ export function useFocusNotifyOnChangeProps(notifyOnChangeProps?: NotifyOnChange
       return () => {
         focusedRef.current = false
       }
-    }, [])
+    }, []),
   )
 
   return () => {
@@ -123,17 +125,19 @@ Example usage:
 
 ```tsx
 function MyComponent() {
-  const notifyOnChangeProps = useFocusNotifyOnChangeProps();
+  const notifyOnChangeProps = useFocusNotifyOnChangeProps()
 
   const { dataUpdatedAt } = useQuery({
     queryKey: ['myKey'],
     queryFn: async () => {
-      const response = await fetch('https://api.github.com/repos/tannerlinsley/react-query');
-      return response.json();
+      const response = await fetch(
+        'https://api.github.com/repos/tannerlinsley/react-query',
+      )
+      return response.json()
     },
     notifyOnChangeProps,
-  });
+  })
 
-  return DataUpdatedAt: {dataUpdatedAt}
;
-};
+  return DataUpdatedAt: {dataUpdatedAt}
+}
 ```
diff --git a/docs/react/reference/InfiniteQueryObserver.md b/docs/react/reference/InfiniteQueryObserver.md
index 3bb95f2c12..b0ae3ac426 100644
--- a/docs/react/reference/InfiniteQueryObserver.md
+++ b/docs/react/reference/InfiniteQueryObserver.md
@@ -15,7 +15,7 @@ const observer = new InfiniteQueryObserver(queryClient, {
   getPreviousPageParam: (firstPage, allPages) => firstPage.prevCursor,
 })
 
-const unsubscribe = observer.subscribe(result => {
+const unsubscribe = observer.subscribe((result) => {
   console.log(result)
   unsubscribe()
 })
diff --git a/docs/react/reference/MutationCache.md b/docs/react/reference/MutationCache.md
index 787917c045..9e8ef2e61a 100644
--- a/docs/react/reference/MutationCache.md
+++ b/docs/react/reference/MutationCache.md
@@ -11,10 +11,10 @@ The `MutationCache` is the storage for mutations.
 import { MutationCache } from '@tanstack/react-query'
 
 const mutationCache = new MutationCache({
-  onError: error => {
+  onError: (error) => {
     console.log(error)
   },
-  onSuccess: data => {
+  onSuccess: (data) => {
     console.log(data)
   },
 })
@@ -72,7 +72,7 @@ const mutations = mutationCache.getAll()
 The `subscribe` method can be used to subscribe to the mutation cache as a whole and be informed of safe/known updates to the cache like mutation states changing or mutations being updated, added or removed.
 
 ```tsx
-const callback = event => {
+const callback = (event) => {
   console.log(event.type, event.mutation)
 }
 
diff --git a/docs/react/reference/QueriesObserver.md b/docs/react/reference/QueriesObserver.md
index 93015df009..18ced545fd 100644
--- a/docs/react/reference/QueriesObserver.md
+++ b/docs/react/reference/QueriesObserver.md
@@ -13,7 +13,7 @@ const observer = new QueriesObserver(queryClient, [
   { queryKey: ['post', 2], queryFn: fetchPost },
 ])
 
-const unsubscribe = observer.subscribe(result => {
+const unsubscribe = observer.subscribe((result) => {
   console.log(result)
   unsubscribe()
 })
diff --git a/docs/react/reference/QueryClient.md b/docs/react/reference/QueryClient.md
index 80fb8c759c..38b8d30562 100644
--- a/docs/react/reference/QueryClient.md
+++ b/docs/react/reference/QueryClient.md
@@ -83,7 +83,11 @@ Specify a `staleTime` to only fetch when the data is older than a certain amount
 
 ```tsx
 try {
-  const data = await queryClient.fetchQuery({ queryKey, queryFn, staleTime: 10000 })
+  const data = await queryClient.fetchQuery({
+    queryKey,
+    queryFn,
+    staleTime: 10000,
+  })
 } catch (error) {
   console.log(error)
 }
@@ -245,7 +249,7 @@ If the value is `undefined`, the query data is not updated.
 For convenience in syntax, you can also pass an updater function which receives the current data value and returns the new one:
 
 ```tsx
-setQueryData(queryKey, oldData => newData)
+setQueryData(queryKey, (oldData) => newData)
 ```
 
 If the updater function returns `undefined`, the query data will not be updated. If the updater function receives `undefined` as input, you can return `undefined` to bail out of the update and thus _not_ create a new cache entry.
@@ -290,11 +294,14 @@ The `invalidateQueries` method can be used to invalidate and refetch single or m
 - If you **want inactive queries to refetch** as well, use the `refetchType: 'all'` option
 
 ```tsx
-await queryClient.invalidateQueries({
-  queryKey: ['posts'],
-  exact,
-  refetchType: 'active',
-}, { throwOnError, cancelRefetch })
+await queryClient.invalidateQueries(
+  {
+    queryKey: ['posts'],
+    exact,
+    refetchType: 'active',
+  },
+  { throwOnError, cancelRefetch },
+)
 ```
 
 **Options**
@@ -332,7 +339,11 @@ await queryClient.refetchQueries({ stale: true })
 await queryClient.refetchQueries({ queryKey: ['posts'], type: 'active' })
 
 // refetch all active queries exactly matching a query key:
-await queryClient.refetchQueries({ queryKey: ['posts', 1], type: 'active', exact: true })
+await queryClient.refetchQueries({
+  queryKey: ['posts', 1],
+  type: 'active',
+  exact: true,
+})
 ```
 
 **Options**
diff --git a/docs/react/reference/QueryObserver.md b/docs/react/reference/QueryObserver.md
index 9eb96bab13..46988f1df1 100644
--- a/docs/react/reference/QueryObserver.md
+++ b/docs/react/reference/QueryObserver.md
@@ -10,7 +10,7 @@ The `QueryObserver` can be used to observe and switch between queries.
 ```tsx
 const observer = new QueryObserver(queryClient, { queryKey: ['posts'] })
 
-const unsubscribe = observer.subscribe(result => {
+const unsubscribe = observer.subscribe((result) => {
   console.log(result)
   unsubscribe()
 })
diff --git a/docs/react/reference/focusManager.md b/docs/react/reference/focusManager.md
index 1d8abe6144..9e4c9ee87f 100644
--- a/docs/react/reference/focusManager.md
+++ b/docs/react/reference/focusManager.md
@@ -41,7 +41,7 @@ focusManager.setEventListener((handleFocus) => {
 ```tsx
 import { focusManager } from '@tanstack/react-query'
 
-const unsubscribe = focusManager.subscribe(isVisible => {
+const unsubscribe = focusManager.subscribe((isVisible) => {
   console.log('isVisible', isVisible)
 })
 ```
diff --git a/docs/react/reference/infiniteQueryOptions.md b/docs/react/reference/infiniteQueryOptions.md
index fd40a41be9..72c0497d41 100644
--- a/docs/react/reference/infiniteQueryOptions.md
+++ b/docs/react/reference/infiniteQueryOptions.md
@@ -6,7 +6,7 @@ title: infiniteQueryOptions
 ```tsx
 infiniteQueryOptions({
   queryKey,
-  ...options
+  ...options,
 })
 ```
 
diff --git a/docs/react/reference/onlineManager.md b/docs/react/reference/onlineManager.md
index b563010ae8..efc4f560a6 100644
--- a/docs/react/reference/onlineManager.md
+++ b/docs/react/reference/onlineManager.md
@@ -28,8 +28,8 @@ Its available methods are:
 import NetInfo from '@react-native-community/netinfo'
 import { onlineManager } from '@tanstack/react-query'
 
-onlineManager.setEventListener(setOnline => {
-  return NetInfo.addEventListener(state => {
+onlineManager.setEventListener((setOnline) => {
+  return NetInfo.addEventListener((state) => {
     setOnline(!!state.isConnected)
   })
 })
@@ -42,7 +42,7 @@ onlineManager.setEventListener(setOnline => {
 ```tsx
 import { onlineManager } from '@tanstack/react-query'
 
-const unsubscribe = onlineManager.subscribe(isOnline => {
+const unsubscribe = onlineManager.subscribe((isOnline) => {
   console.log('isOnline', isOnline)
 })
 ```
diff --git a/docs/react/reference/queryOptions.md b/docs/react/reference/queryOptions.md
index 6778b69faa..79f7307541 100644
--- a/docs/react/reference/queryOptions.md
+++ b/docs/react/reference/queryOptions.md
@@ -6,7 +6,7 @@ title: queryOptions
 ```tsx
 queryOptions({
   queryKey,
-  ...options
+  ...options,
 })
 ```
 
diff --git a/docs/react/reference/useInfiniteQuery.md b/docs/react/reference/useInfiniteQuery.md
index b0951f5bef..87190c0bbe 100644
--- a/docs/react/reference/useInfiniteQuery.md
+++ b/docs/react/reference/useInfiniteQuery.md
@@ -66,10 +66,10 @@ The returned properties for `useInfiniteQuery` are identical to the [`useQuery`
   - Will be `true` while fetching the previous page with `fetchPreviousPage`.
 - `fetchNextPage: (options?: FetchNextPageOptions) => Promise`
   - This function allows you to fetch the next "page" of results.
-`getNextPageParam`.
+    `getNextPageParam`.
   - `options.cancelRefetch: boolean` if set to `true`, calling `fetchNextPage` repeatedly will invoke `fetchPage` every time, whether the previous
-  invocation has resolved or not. Also, the result from previous invocations will be ignored. If set to `false`, calling `fetchNextPage`
-  repeatedly won't have any effect until the first invocation has resolved. Default is `true`.
+    invocation has resolved or not. Also, the result from previous invocations will be ignored. If set to `false`, calling `fetchNextPage`
+    repeatedly won't have any effect until the first invocation has resolved. Default is `true`.
 - `fetchPreviousPage: (options?: FetchPreviousPageOptions) => Promise`
   - This function allows you to fetch the previous "page" of results.
   - `options.cancelRefetch: boolean` same as for `fetchNextPage`.
@@ -81,4 +81,4 @@ The returned properties for `useInfiniteQuery` are identical to the [`useQuery`
   - Is `true` whenever a background refetch is in-flight, which _does not_ include initial `pending` or fetching of next or previous page
   - Is the same as `isFetching && !isPending && !isFetchingNextPage && !isFetchingPreviousPage`
 
-Keep in mind that imperative fetch calls, such as `fetchNextPage`, may interfere with the default refetch behaviour, resulting in outdated data. Make sure to call these functions only in response to user actions, or add conditions like `hasNextPage && !isFetching`.
\ No newline at end of file
+Keep in mind that imperative fetch calls, such as `fetchNextPage`, may interfere with the default refetch behaviour, resulting in outdated data. Make sure to call these functions only in response to user actions, or add conditions like `hasNextPage && !isFetching`.
diff --git a/docs/react/reference/useSuspenseInfiniteQuery.md b/docs/react/reference/useSuspenseInfiniteQuery.md
index e55b45a391..a1d1fa43b0 100644
--- a/docs/react/reference/useSuspenseInfiniteQuery.md
+++ b/docs/react/reference/useSuspenseInfiniteQuery.md
@@ -10,6 +10,7 @@ const result = useSuspenseInfiniteQuery(options)
 **Options**
 
 The same as for [useInfiniteQuery](../reference/useInfiniteQuery), except for:
+
 - `suspense`
 - `throwOnError`
 - `enabled`
@@ -18,6 +19,7 @@ The same as for [useInfiniteQuery](../reference/useInfiniteQuery), except for:
 **Returns**
 
 Same object as [useInfiniteQuery](../reference/useInfiniteQuery), except that:
+
 - `data` is guaranteed to be defined
 - `isPlaceholderData` is missing
 - `status` is always `success`
diff --git a/docs/react/reference/useSuspenseQueries.md b/docs/react/reference/useSuspenseQueries.md
index f14f88cf00..0ec84fc758 100644
--- a/docs/react/reference/useSuspenseQueries.md
+++ b/docs/react/reference/useSuspenseQueries.md
@@ -10,6 +10,7 @@ const result = useSuspenseQueries(options)
 **Options**
 
 The same as for [useQueries](../reference/useQueries), except that each `query` can't have:
+
 - `suspense`
 - `throwOnError`
 - `enabled`
@@ -18,6 +19,7 @@ The same as for [useQueries](../reference/useQueries), except that each `query`
 **Returns**
 
 Same structure as [useQueries](../reference/useQueries), except that for each `query`:
+
 - `data` is guaranteed to be defined
 - `isPlaceholderData` is missing
 - `status` is always `success`
diff --git a/docs/react/reference/useSuspenseQuery.md b/docs/react/reference/useSuspenseQuery.md
index c86ec3a82c..594a4c13aa 100644
--- a/docs/react/reference/useSuspenseQuery.md
+++ b/docs/react/reference/useSuspenseQuery.md
@@ -10,6 +10,7 @@ const result = useSuspenseQuery(options)
 **Options**
 
 The same as for [useQuery](../reference/useQuery), except for:
+
 - `suspense`
 - `throwOnError`
 - `enabled`
@@ -18,6 +19,7 @@ The same as for [useQuery](../reference/useQuery), except for:
 **Returns**
 
 Same object as [useQuery](../reference/useQuery), except that:
+
 - `data` is guaranteed to be defined
 - `isPlaceholderData` is missing
 - `status` is always `success`
diff --git a/docs/react/typescript.md b/docs/react/typescript.md
index 324cd4b22b..51004cd5eb 100644
--- a/docs/react/typescript.md
+++ b/docs/react/typescript.md
@@ -87,7 +87,6 @@ if (isSuccess) {
 The type for error defaults to `Error`, because that is what most users expect.
 
 [//]: # 'TypingError'
-
 [//]: # 'TypingError'
 
 ```tsx
@@ -137,7 +136,7 @@ TanStack Query v5 allows for a way to set a global Error type for everything, wi
 [//]: # 'RegisterErrorType'
 
 ```tsx
-import '@tanstack/react-query';
+import '@tanstack/react-query'
 
 declare module '@tanstack/react-query' {
   interface Register {
@@ -150,7 +149,6 @@ const { error } = useQuery({ queryKey: ['groups'], queryFn: fetchGroups })
 ```
 
 [//]: # 'RegisterErrorType'
-
 [//]: # 'TypingMeta'
 
 ## Typing meta
@@ -162,18 +160,18 @@ const { error } = useQuery({ queryKey: ['groups'], queryFn: fetchGroups })
 Similarly to registering a [global error type](#registering-a-global-error) you can also register a global `Meta` type. This ensures the optional `meta` field on [queries](./reference/useQuery.md) and [mutations](./reference/useMutation.md) stays consistent and is type-safe.
 
 ```ts
-import '@tanstack/react-query';
+import '@tanstack/react-query'
 
 declare module '@tanstack/react-query' {
   interface Register {
-    queryMeta: MyMeta,
+    queryMeta: MyMeta
     mutationMeta: MyMeta
   }
 }
 ```
+
 [//]: # 'RegisterMetaType'
 [//]: # 'TypingMeta'
-
 [//]: # 'TypingQueryOptions'
 
 ## Typing Query Options
diff --git a/docs/solid/overview.md b/docs/solid/overview.md
index 99d904a363..5c504bce52 100644
--- a/docs/solid/overview.md
+++ b/docs/solid/overview.md
@@ -141,7 +141,7 @@ function Example() {
     queryKey: ['repoData'],
     queryFn: () =>
       fetch('https://api.github.com/repos/tannerlinsley/react-query').then(
-        (res) => res.json()
+        (res) => res.json(),
       ),
   }))
 
diff --git a/docs/svelte/reactivity.md b/docs/svelte/reactivity.md
index c59a1c58e3..af5e1e6dc9 100644
--- a/docs/svelte/reactivity.md
+++ b/docs/svelte/reactivity.md
@@ -41,7 +41,7 @@ To solve this, we can convert `intervalMs` into a writable store. The query opti
       queryKey: ['refetch'],
       queryFn: async () => await fetch(endpoint).then((r) => r.json()),
       refetchInterval: $intervalMs,
-    }))
+    })),
   )
 
 
diff --git a/docs/svelte/ssr.md b/docs/svelte/ssr.md
index aae23414a3..9302c009cf 100644
--- a/docs/svelte/ssr.md
+++ b/docs/svelte/ssr.md
@@ -36,7 +36,6 @@ Svelte Query supports two ways of prefetching data on the server and passing tha
 
 If you wish to view the ideal SSR setup, please have a look at the [SSR example](../examples/svelte/ssr).
 
-
 ### Using `initialData`
 
 Together with SvelteKit's [`load`](https://kit.svelte.dev/docs/load), you can pass the data loaded server-side into `createQuery`'s' `initialData` option:
@@ -62,7 +61,7 @@ export async function load() {
   const query = createQuery({
     queryKey: ['posts'],
     queryFn: getPosts,
-    initialData: data.posts
+    initialData: data.posts,
   })
 
 ```
@@ -125,7 +124,7 @@ export async function load({ parent, fetch }) {
   // You need to use the SvelteKit fetch function here
   await queryClient.prefetchQuery({
     queryKey: ['posts'],
-    queryFn: async () => (await fetch('/api/posts')).json()
+    queryFn: async () => (await fetch('/api/posts')).json(),
   })
 }
 ```
@@ -139,7 +138,7 @@ export async function load({ parent, fetch }) {
   // This data is cached by prefetchQuery in +page.ts so no fetch actually happens here
   const query = createQuery({
     queryKey: ['posts'],
-    queryFn: async () => (await fetch('/api/posts')).json()
+    queryFn: async () => (await fetch('/api/posts')).json(),
   })
 
 ```
diff --git a/docs/vue/guides/disabling-queries.md b/docs/vue/guides/disabling-queries.md
index 177cf95377..b971b71f76 100644
--- a/docs/vue/guides/disabling-queries.md
+++ b/docs/vue/guides/disabling-queries.md
@@ -10,12 +10,11 @@ ref: docs/react/guides/disabling-queries.md
 
 
 
diff --git a/docs/vue/guides/does-this-replace-client-state.md b/docs/vue/guides/does-this-replace-client-state.md
index a62cecefef..43ba3ac579 100644
--- a/docs/vue/guides/does-this-replace-client-state.md
+++ b/docs/vue/guides/does-this-replace-client-state.md
@@ -2,6 +2,5 @@
 id: does-this-replace-client-state
 title: Does Vue Query replace Vuex, Pinia or other global state managers?
 ref: docs/react/guides/does-this-replace-client-state.md
-replace:
-  { 'Redux, MobX': 'Vuex, Pinia' }
+replace: { 'Redux, MobX': 'Vuex, Pinia' }
 ---
diff --git a/docs/vue/guides/ssr.md b/docs/vue/guides/ssr.md
index 8731bda94a..238d9c7012 100644
--- a/docs/vue/guides/ssr.md
+++ b/docs/vue/guides/ssr.md
@@ -12,8 +12,16 @@ Vue Query supports prefetching multiple queries on the server and then _dehydrat
 First create `vue-query.ts` file in your `plugins` directory with the following content:
 
 ```ts
-import type { DehydratedState, VueQueryPluginOptions } from '@tanstack/vue-query'
-import { VueQueryPlugin, QueryClient, hydrate, dehydrate } from '@tanstack/vue-query'
+import type {
+  DehydratedState,
+  VueQueryPluginOptions,
+} from '@tanstack/vue-query'
+import {
+  VueQueryPlugin,
+  QueryClient,
+  hydrate,
+  dehydrate,
+} from '@tanstack/vue-query'
 // Nuxt 3 app aliases
 import { defineNuxtPlugin, useState } from '#imports'
 
@@ -150,7 +158,12 @@ Sync VueQuery client state with [vite-ssr](https://github.com/frandiox/vite-ssr)
 // main.js (entry point)
 import App from './App.vue'
 import viteSSR from 'vite-ssr/vue'
-import { QueryClient, VueQueryPlugin, hydrate, dehydrate } from '@tanstack/vue-query'
+import {
+  QueryClient,
+  VueQueryPlugin,
+  hydrate,
+  dehydrate,
+} from '@tanstack/vue-query'
 
 export default viteSSR(App, { routes: [] }, ({ app, initialState }) => {
   // -- This is Vite SSR main hook, which is called once per request
diff --git a/docs/vue/installation.md b/docs/vue/installation.md
index 0b57729c65..ccaa572b45 100644
--- a/docs/vue/installation.md
+++ b/docs/vue/installation.md
@@ -28,7 +28,7 @@ Vue Query is compatible with Vue 2.x and 3.x
 Before using Vue Query, you need to initialize it using `VueQueryPlugin`
 
 ```tsx
-import { VueQueryPlugin } from "@tanstack/vue-query";
+import { VueQueryPlugin } from '@tanstack/vue-query'
 
 app.use(VueQueryPlugin)
 ```
@@ -43,7 +43,7 @@ If you are not a fan of `