diff --git a/docs/framework/angular/guides/caching.md b/docs/framework/angular/guides/caching.md
index 369df58c3a3..1fec944fcfb 100644
--- a/docs/framework/angular/guides/caching.md
+++ b/docs/framework/angular/guides/caching.md
@@ -3,7 +3,7 @@ id: caching
title: Caching Examples
---
-> Please thoroughly read the [Important Defaults](../important-defaults) before reading this guide
+> Please thoroughly read the [Important Defaults](./important-defaults.md) before reading this guide
## Basic Example
@@ -23,7 +23,7 @@ Let's assume we are using the default `gcTime` of **5 minutes** and the default
- A second instance of `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos })` initializes elsewhere.
- Since the cache already has data for the `['todos']` key from the first query, that data is immediately returned from the cache.
- The new instance triggers a new network request using its query function.
- - Note that regardless of whether both `fetchTodos` query functions are identical or not, both queries' [`status`](../../reference/injectQuery) are updated (including `isFetching`, `isPending`, and other related values) because they have the same query key.
+ - Note that regardless of whether both `fetchTodos` query functions are identical or not, both queries' [`status`](../../reference/injectQuery.md) are updated (including `isFetching`, `isPending`, and other related values) because they have the same query key.
- When the request completes successfully, the cache's data under the `['todos']` key is updated with the new data, and both instances are updated with the new data.
- Both instances of the `injectQuery(() => ({ queryKey: ['todos'], queryFn: fetchTodos })` query are destroyed and no longer in use.
- Since there are no more active instances of this query, a garbage collection timeout is set using `gcTime` to delete and garbage collect the query (defaults to **5 minutes**).
diff --git a/docs/framework/angular/guides/invalidations-from-mutations.md b/docs/framework/angular/guides/invalidations-from-mutations.md
index 8c05262d5e5..402463dedc5 100644
--- a/docs/framework/angular/guides/invalidations-from-mutations.md
+++ b/docs/framework/angular/guides/invalidations-from-mutations.md
@@ -38,4 +38,4 @@ export class TodosComponent {
[//]: # 'Example2'
-You can wire up your invalidations to happen using any of the callbacks available in the [`injectMutation` function](../mutations)
+You can wire up your invalidations to happen using any of the callbacks available in the [`injectMutation` function](../mutations.md)
diff --git a/docs/framework/angular/guides/mutation-options.md b/docs/framework/angular/guides/mutation-options.md
index 8fd372a0ba3..469a5b7c465 100644
--- a/docs/framework/angular/guides/mutation-options.md
+++ b/docs/framework/angular/guides/mutation-options.md
@@ -5,7 +5,7 @@ title: Mutation Options
One of the best ways to share mutation options between multiple places,
is to use the `mutationOptions` helper. At runtime, this helper just returns whatever you pass into it,
-but it has a lot of advantages when using it [with TypeScript](../../typescript#typing-query-options).
+but it has a lot of advantages when using it [with TypeScript](../../typescript#typing-query-options.md).
You can define all possible options for a mutation in one place,
and you'll also get type inference and type safety for all of them.
diff --git a/docs/framework/angular/overview.md b/docs/framework/angular/overview.md
index 09997f76d5f..e8bd94a4e75 100644
--- a/docs/framework/angular/overview.md
+++ b/docs/framework/angular/overview.md
@@ -110,4 +110,4 @@ interface Response {
## You talked me into it, so what now?
-- Learn TanStack Query at your own pace with our amazingly thorough [Walkthrough Guide](../installation) and [API Reference](../reference/functions/injectquery)
+- Learn TanStack Query at your own pace with our amazingly thorough [Walkthrough Guide](../installation.md) and [API Reference](../reference/functions/injectquery.md)
diff --git a/examples/angular/auto-refetching/package.json b/examples/angular/auto-refetching/package.json
index 0640dcb4dac..2d1c0811396 100644
--- a/examples/angular/auto-refetching/package.json
+++ b/examples/angular/auto-refetching/package.json
@@ -14,7 +14,7 @@
"@angular/core": "^19.2.4",
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/angular/basic-persister/.devcontainer/devcontainer.json b/examples/angular/basic-persister/.devcontainer/devcontainer.json
new file mode 100644
index 00000000000..365adf8f4c3
--- /dev/null
+++ b/examples/angular/basic-persister/.devcontainer/devcontainer.json
@@ -0,0 +1,4 @@
+{
+ "name": "Node.js",
+ "image": "mcr.microsoft.com/devcontainers/javascript-node:22"
+}
diff --git a/examples/angular/basic-persister/.eslintrc.cjs b/examples/angular/basic-persister/.eslintrc.cjs
new file mode 100644
index 00000000000..cca134ce166
--- /dev/null
+++ b/examples/angular/basic-persister/.eslintrc.cjs
@@ -0,0 +1,6 @@
+// @ts-check
+
+/** @type {import('eslint').Linter.Config} */
+const config = {}
+
+module.exports = config
diff --git a/examples/angular/basic-persister/README.md b/examples/angular/basic-persister/README.md
new file mode 100644
index 00000000000..47d5931979a
--- /dev/null
+++ b/examples/angular/basic-persister/README.md
@@ -0,0 +1,6 @@
+# TanStack Query Angular basic persister example
+
+To run this example:
+
+- `npm install` or `yarn` or `pnpm i` or `bun i`
+- `npm run start` or `yarn start` or `pnpm start` or `bun start`
diff --git a/examples/angular/basic-persister/angular.json b/examples/angular/basic-persister/angular.json
new file mode 100644
index 00000000000..64adfea7c48
--- /dev/null
+++ b/examples/angular/basic-persister/angular.json
@@ -0,0 +1,104 @@
+{
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
+ "version": 1,
+ "cli": {
+ "packageManager": "pnpm",
+ "analytics": false,
+ "cache": {
+ "enabled": false
+ }
+ },
+ "newProjectRoot": "projects",
+ "projects": {
+ "basic-persister": {
+ "projectType": "application",
+ "schematics": {
+ "@schematics/angular:component": {
+ "inlineTemplate": true,
+ "inlineStyle": true,
+ "skipTests": true
+ },
+ "@schematics/angular:class": {
+ "skipTests": true
+ },
+ "@schematics/angular:directive": {
+ "skipTests": true
+ },
+ "@schematics/angular:guard": {
+ "skipTests": true
+ },
+ "@schematics/angular:interceptor": {
+ "skipTests": true
+ },
+ "@schematics/angular:pipe": {
+ "skipTests": true
+ },
+ "@schematics/angular:resolver": {
+ "skipTests": true
+ },
+ "@schematics/angular:service": {
+ "skipTests": true
+ }
+ },
+ "root": "",
+ "sourceRoot": "src",
+ "prefix": "app",
+ "architect": {
+ "build": {
+ "builder": "@angular/build:application",
+ "options": {
+ "outputPath": "dist/basic-persister",
+ "index": "src/index.html",
+ "browser": "src/main.ts",
+ "polyfills": ["zone.js"],
+ "tsConfig": "tsconfig.app.json",
+ "assets": ["src/favicon.ico", "src/assets"],
+ "styles": [],
+ "scripts": []
+ },
+ "configurations": {
+ "production": {
+ "budgets": [
+ {
+ "type": "initial",
+ "maximumWarning": "500kb",
+ "maximumError": "1mb"
+ },
+ {
+ "type": "anyComponentStyle",
+ "maximumWarning": "2kb",
+ "maximumError": "4kb"
+ }
+ ],
+ "outputHashing": "all"
+ },
+ "development": {
+ "optimization": false,
+ "extractLicenses": false,
+ "sourceMap": true
+ }
+ },
+ "defaultConfiguration": "production"
+ },
+ "serve": {
+ "builder": "@angular/build:dev-server",
+ "configurations": {
+ "production": {
+ "buildTarget": "basic-persister:build:production"
+ },
+ "development": {
+ "buildTarget": "basic-persister:build:development"
+ }
+ },
+ "defaultConfiguration": "development"
+ },
+ "extract-i18n": {
+ "builder": "@angular/build:extract-i18n",
+ "options": {
+ "buildTarget": "basic-persister:build"
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/angular/basic-persister/package.json b/examples/angular/basic-persister/package.json
new file mode 100644
index 00000000000..a8056751980
--- /dev/null
+++ b/examples/angular/basic-persister/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@tanstack/query-example-angular-basic-persister",
+ "type": "module",
+ "scripts": {
+ "ng": "ng",
+ "start": "ng serve",
+ "build": "ng build",
+ "watch": "ng build --watch --configuration development"
+ },
+ "private": true,
+ "dependencies": {
+ "@angular/common": "^19.2.4",
+ "@angular/compiler": "^19.2.4",
+ "@angular/core": "^19.2.4",
+ "@angular/platform-browser": "^19.2.4",
+ "@angular/platform-browser-dynamic": "^19.2.4",
+ "@tanstack/angular-query-experimental": "^5.74.0",
+ "@tanstack/angular-query-persist-client": "^5.62.7",
+ "@tanstack/query-sync-storage-persister": "^5.74.0",
+ "rxjs": "^7.8.2",
+ "tslib": "^2.8.1",
+ "zone.js": "^0.15.0"
+ },
+ "devDependencies": {
+ "@angular/build": "^19.2.5",
+ "@angular/cli": "^19.2.5",
+ "@angular/compiler-cli": "^19.2.4",
+ "typescript": "5.8.3"
+ }
+}
diff --git a/examples/angular/basic-persister/src/app/app.component.html b/examples/angular/basic-persister/src/app/app.component.html
new file mode 100644
index 00000000000..4c21f9e8792
--- /dev/null
+++ b/examples/angular/basic-persister/src/app/app.component.html
@@ -0,0 +1,10 @@
+
+ Try to mock offline behavior with the button in the devtools. You can navigate
+ around as long as there is already data in the cache. You'll get a refetch as
+ soon as you go "online" again.
+
+@if (postId() > -1) {
+
+} @else {
+
+}
diff --git a/examples/angular/basic-persister/src/app/app.component.ts b/examples/angular/basic-persister/src/app/app.component.ts
new file mode 100644
index 00000000000..5958a1b5e7a
--- /dev/null
+++ b/examples/angular/basic-persister/src/app/app.component.ts
@@ -0,0 +1,13 @@
+import { ChangeDetectionStrategy, Component, signal } from '@angular/core'
+import { PostComponent } from './components/post.component'
+import { PostsComponent } from './components/posts.component'
+
+@Component({
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ selector: 'basic-example',
+ templateUrl: './app.component.html',
+ imports: [PostComponent, PostsComponent],
+})
+export class BasicExampleComponent {
+ postId = signal(-1)
+}
diff --git a/examples/angular/basic-persister/src/app/app.config.ts b/examples/angular/basic-persister/src/app/app.config.ts
new file mode 100644
index 00000000000..d449e215827
--- /dev/null
+++ b/examples/angular/basic-persister/src/app/app.config.ts
@@ -0,0 +1,35 @@
+import { provideHttpClient, withFetch } from '@angular/common/http'
+import {
+ QueryClient,
+ provideTanStackQuery,
+ withDevtools,
+} from '@tanstack/angular-query-experimental'
+import { withPersistQueryClient } from '@tanstack/angular-query-persist-client'
+import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'
+import type { ApplicationConfig } from '@angular/core'
+
+const localStoragePersister = createSyncStoragePersister({
+ storage: window.localStorage,
+})
+
+export const appConfig: ApplicationConfig = {
+ providers: [
+ provideHttpClient(withFetch()),
+ provideTanStackQuery(
+ new QueryClient({
+ defaultOptions: {
+ queries: {
+ staleTime: 1000 * 60, // 1 minute
+ gcTime: 1000 * 60 * 60 * 24, // 24 hours
+ },
+ },
+ }),
+ withDevtools(),
+ withPersistQueryClient({
+ persistOptions: {
+ persister: localStoragePersister,
+ },
+ }),
+ ),
+ ],
+}
diff --git a/examples/angular/basic-persister/src/app/components/post.component.html b/examples/angular/basic-persister/src/app/components/post.component.html
new file mode 100644
index 00000000000..34b36e94fcc
--- /dev/null
+++ b/examples/angular/basic-persister/src/app/components/post.component.html
@@ -0,0 +1,19 @@
+
+
+ @if (postQuery.isPending()) {
+ Loading...
+ } @else if (postQuery.isError()) {
+ Error: {{ postQuery.error().message }}
+ }
+ @if (postQuery.data(); as post) {
+
{{ post.title }}
+
+ @if (postQuery.isFetching()) {
+ Background Updating...
+ }
+ }
+
diff --git a/examples/angular/basic-persister/src/app/components/post.component.ts b/examples/angular/basic-persister/src/app/components/post.component.ts
new file mode 100644
index 00000000000..d77e707e99f
--- /dev/null
+++ b/examples/angular/basic-persister/src/app/components/post.component.ts
@@ -0,0 +1,39 @@
+import {
+ ChangeDetectionStrategy,
+ Component,
+ EventEmitter,
+ Output,
+ inject,
+ input,
+} from '@angular/core'
+import { QueryClient, injectQuery } from '@tanstack/angular-query-experimental'
+import { fromEvent, lastValueFrom, takeUntil } from 'rxjs'
+import { PostsService } from '../services/posts-service'
+
+@Component({
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ selector: 'post',
+ standalone: true,
+ templateUrl: './post.component.html',
+})
+export class PostComponent {
+ #postsService = inject(PostsService)
+
+ @Output() setPostId = new EventEmitter()
+
+ postId = input(0)
+
+ postQuery = injectQuery(() => ({
+ enabled: this.postId() > 0,
+ queryKey: ['post', this.postId()],
+ queryFn: async (context) => {
+ // Cancels the request when component is destroyed before the request finishes
+ const abort$ = fromEvent(context.signal, 'abort')
+ return lastValueFrom(
+ this.#postsService.postById$(this.postId()).pipe(takeUntil(abort$)),
+ )
+ },
+ }))
+
+ queryClient = inject(QueryClient)
+}
diff --git a/examples/angular/basic-persister/src/app/components/posts.component.html b/examples/angular/basic-persister/src/app/components/posts.component.html
new file mode 100644
index 00000000000..568a6a4df4e
--- /dev/null
+++ b/examples/angular/basic-persister/src/app/components/posts.component.html
@@ -0,0 +1,39 @@
+
+
Posts
+ @switch (postsQuery.status()) {
+ @case ('pending') {
+ Loading...
+ }
+ @case ('error') {
+ Error: {{ postsQuery.error()?.message }}
+ }
+ @default {
+
+ @for (post of postsQuery.data(); track post.id) {
+
+
+
+ {{ post.title }}
+
+ }
+
+ }
+ }
+
+ @if (postsQuery.isFetching()) {
+ Background Updating...
+ }
+
+
diff --git a/examples/angular/basic-persister/src/app/components/posts.component.ts b/examples/angular/basic-persister/src/app/components/posts.component.ts
new file mode 100644
index 00000000000..3c8bf7c79dd
--- /dev/null
+++ b/examples/angular/basic-persister/src/app/components/posts.component.ts
@@ -0,0 +1,28 @@
+import {
+ ChangeDetectionStrategy,
+ Component,
+ EventEmitter,
+ Output,
+ inject,
+} from '@angular/core'
+import { QueryClient, injectQuery } from '@tanstack/angular-query-experimental'
+import { lastValueFrom } from 'rxjs'
+import { PostsService } from '../services/posts-service'
+
+@Component({
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ selector: 'posts',
+ standalone: true,
+ templateUrl: './posts.component.html',
+})
+export class PostsComponent {
+ queryClient = inject(QueryClient)
+ #postsService = inject(PostsService)
+
+ @Output() setPostId = new EventEmitter()
+
+ postsQuery = injectQuery(() => ({
+ queryKey: ['posts'],
+ queryFn: () => lastValueFrom(this.#postsService.allPosts$()),
+ }))
+}
diff --git a/examples/angular/basic-persister/src/app/services/posts-service.ts b/examples/angular/basic-persister/src/app/services/posts-service.ts
new file mode 100644
index 00000000000..fed2a1b11c6
--- /dev/null
+++ b/examples/angular/basic-persister/src/app/services/posts-service.ts
@@ -0,0 +1,21 @@
+import { HttpClient } from '@angular/common/http'
+import { Injectable, inject } from '@angular/core'
+
+@Injectable({
+ providedIn: 'root',
+})
+export class PostsService {
+ #http = inject(HttpClient)
+
+ postById$ = (postId: number) =>
+ this.#http.get(`https://jsonplaceholder.typicode.com/posts/${postId}`)
+
+ allPosts$ = () =>
+ this.#http.get>('https://jsonplaceholder.typicode.com/posts')
+}
+
+export interface Post {
+ id: number
+ title: string
+ body: string
+}
diff --git a/examples/angular/basic-persister/src/favicon.ico b/examples/angular/basic-persister/src/favicon.ico
new file mode 100644
index 00000000000..57614f9c967
Binary files /dev/null and b/examples/angular/basic-persister/src/favicon.ico differ
diff --git a/examples/angular/basic-persister/src/index.html b/examples/angular/basic-persister/src/index.html
new file mode 100644
index 00000000000..2e262442e17
--- /dev/null
+++ b/examples/angular/basic-persister/src/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+ TanStack Query Angular basic persister example
+
+
+
+
+
+
+
+
diff --git a/examples/angular/basic-persister/src/main.ts b/examples/angular/basic-persister/src/main.ts
new file mode 100644
index 00000000000..aa33a0b9ff3
--- /dev/null
+++ b/examples/angular/basic-persister/src/main.ts
@@ -0,0 +1,7 @@
+import { bootstrapApplication } from '@angular/platform-browser'
+import { appConfig } from './app/app.config'
+import { BasicExampleComponent } from './app/app.component'
+
+bootstrapApplication(BasicExampleComponent, appConfig).catch((err) =>
+ console.error(err),
+)
diff --git a/examples/angular/basic-persister/tsconfig.app.json b/examples/angular/basic-persister/tsconfig.app.json
new file mode 100644
index 00000000000..5b9d3c5ecb0
--- /dev/null
+++ b/examples/angular/basic-persister/tsconfig.app.json
@@ -0,0 +1,9 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./out-tsc/app",
+ "types": []
+ },
+ "files": ["src/main.ts"],
+ "include": ["src/**/*.d.ts"]
+}
diff --git a/examples/angular/basic-persister/tsconfig.json b/examples/angular/basic-persister/tsconfig.json
new file mode 100644
index 00000000000..d0d73c8bebb
--- /dev/null
+++ b/examples/angular/basic-persister/tsconfig.json
@@ -0,0 +1,31 @@
+{
+ "compileOnSave": false,
+ "compilerOptions": {
+ "outDir": "./dist/out-tsc",
+ "forceConsistentCasingInFileNames": true,
+ "strict": true,
+ "noImplicitOverride": true,
+ "noPropertyAccessFromIndexSignature": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "skipLibCheck": true,
+ "isolatedModules": true,
+ "esModuleInterop": true,
+ "sourceMap": true,
+ "declaration": false,
+ "experimentalDecorators": true,
+ "moduleResolution": "bundler",
+ "importHelpers": true,
+ "target": "ES2022",
+ "module": "ES2022",
+ "useDefineForClassFields": false,
+ "lib": ["ES2022", "dom"]
+ },
+ "angularCompilerOptions": {
+ "enableI18nLegacyMessageIdFormat": false,
+ "strictInjectionParameters": true,
+ "strictInputAccessModifiers": true,
+ "strictStandalone": true,
+ "strictTemplates": true
+ }
+}
diff --git a/examples/angular/basic/package.json b/examples/angular/basic/package.json
index 3b49b3f26c2..616a81c04cd 100644
--- a/examples/angular/basic/package.json
+++ b/examples/angular/basic/package.json
@@ -14,7 +14,7 @@
"@angular/core": "^19.2.4",
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/angular/devtools-panel/package.json b/examples/angular/devtools-panel/package.json
index 1b04c0248af..8fc2d132e31 100644
--- a/examples/angular/devtools-panel/package.json
+++ b/examples/angular/devtools-panel/package.json
@@ -15,8 +15,8 @@
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
"@angular/router": "^19.2.4",
- "@tanstack/angular-query-devtools-experimental": "^5.73.3",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-devtools-experimental": "^5.74.0",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/angular/infinite-query-with-max-pages/package.json b/examples/angular/infinite-query-with-max-pages/package.json
index f1fa1f4e62c..7b8a1a5c9c7 100644
--- a/examples/angular/infinite-query-with-max-pages/package.json
+++ b/examples/angular/infinite-query-with-max-pages/package.json
@@ -14,7 +14,7 @@
"@angular/core": "^19.2.4",
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/angular/optimistic-updates/package.json b/examples/angular/optimistic-updates/package.json
index 9b9428a9f5e..d76c51d288e 100644
--- a/examples/angular/optimistic-updates/package.json
+++ b/examples/angular/optimistic-updates/package.json
@@ -15,7 +15,7 @@
"@angular/forms": "^19.2.4",
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/angular/pagination/package.json b/examples/angular/pagination/package.json
index e4eb191caad..4dd3aee8273 100644
--- a/examples/angular/pagination/package.json
+++ b/examples/angular/pagination/package.json
@@ -14,7 +14,7 @@
"@angular/core": "^19.2.4",
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/angular/query-options-from-a-service/package.json b/examples/angular/query-options-from-a-service/package.json
index db05db09a04..dbe1b922f9f 100644
--- a/examples/angular/query-options-from-a-service/package.json
+++ b/examples/angular/query-options-from-a-service/package.json
@@ -15,7 +15,7 @@
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
"@angular/router": "^19.2.4",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/angular/router/package.json b/examples/angular/router/package.json
index 6013ebab04d..120e5517c03 100644
--- a/examples/angular/router/package.json
+++ b/examples/angular/router/package.json
@@ -15,7 +15,7 @@
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
"@angular/router": "^19.2.4",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/angular/rxjs/package.json b/examples/angular/rxjs/package.json
index 307b3dd95e0..bee0e6ebbdd 100644
--- a/examples/angular/rxjs/package.json
+++ b/examples/angular/rxjs/package.json
@@ -15,7 +15,7 @@
"@angular/forms": "^19.2.4",
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/angular/simple/package.json b/examples/angular/simple/package.json
index e0e633a35d4..6a6d8d42168 100644
--- a/examples/angular/simple/package.json
+++ b/examples/angular/simple/package.json
@@ -14,7 +14,7 @@
"@angular/core": "^19.2.4",
"@angular/platform-browser": "^19.2.4",
"@angular/platform-browser-dynamic": "^19.2.4",
- "@tanstack/angular-query-experimental": "^5.73.3",
+ "@tanstack/angular-query-experimental": "^5.74.0",
"rxjs": "^7.8.2",
"tslib": "^2.8.1",
"zone.js": "0.15.0"
diff --git a/examples/react/algolia/package.json b/examples/react/algolia/package.json
index f26f48788b4..915a5f424c7 100644
--- a/examples/react/algolia/package.json
+++ b/examples/react/algolia/package.json
@@ -9,8 +9,8 @@
},
"dependencies": {
"@algolia/client-search": "5.2.1",
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
diff --git a/examples/react/auto-refetching/package.json b/examples/react/auto-refetching/package.json
index 0932b68afcd..84465d4f8b0 100644
--- a/examples/react/auto-refetching/package.json
+++ b/examples/react/auto-refetching/package.json
@@ -8,8 +8,8 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"next": "^15.1.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
diff --git a/examples/react/basic-graphql-request/package.json b/examples/react/basic-graphql-request/package.json
index 18bff357403..df9068c3384 100644
--- a/examples/react/basic-graphql-request/package.json
+++ b/examples/react/basic-graphql-request/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"graphql": "^16.9.0",
"graphql-request": "^7.1.2",
"react": "^19.0.0",
diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json
index 1407eca850b..5fc71aa9dfd 100644
--- a/examples/react/basic/package.json
+++ b/examples/react/basic/package.json
@@ -9,10 +9,10 @@
"test:eslint": "eslint ./src"
},
"dependencies": {
- "@tanstack/query-sync-storage-persister": "^5.73.3",
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
- "@tanstack/react-query-persist-client": "^5.73.3",
+ "@tanstack/query-sync-storage-persister": "^5.74.0",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
+ "@tanstack/react-query-persist-client": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
diff --git a/examples/react/chat/package.json b/examples/react/chat/package.json
index 8792493ad2a..24900e0067b 100644
--- a/examples/react/chat/package.json
+++ b/examples/react/chat/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
diff --git a/examples/react/default-query-function/package.json b/examples/react/default-query-function/package.json
index 7a622da2ce8..3d71d3b6182 100644
--- a/examples/react/default-query-function/package.json
+++ b/examples/react/default-query-function/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
diff --git a/examples/react/devtools-panel/package.json b/examples/react/devtools-panel/package.json
index 5d8b3f236a7..4b05d050482 100644
--- a/examples/react/devtools-panel/package.json
+++ b/examples/react/devtools-panel/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
diff --git a/examples/react/eslint-legacy/package.json b/examples/react/eslint-legacy/package.json
index f2660d7c7e8..59bcb219797 100644
--- a/examples/react/eslint-legacy/package.json
+++ b/examples/react/eslint-legacy/package.json
@@ -9,10 +9,10 @@
"test:eslint": "ESLINT_USE_FLAT_CONFIG=false eslint ./src/**/*.tsx"
},
"dependencies": {
- "@tanstack/query-sync-storage-persister": "^5.73.3",
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
- "@tanstack/react-query-persist-client": "^5.73.3",
+ "@tanstack/query-sync-storage-persister": "^5.74.0",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
+ "@tanstack/react-query-persist-client": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
diff --git a/examples/react/infinite-query-with-max-pages/package.json b/examples/react/infinite-query-with-max-pages/package.json
index e9594827fcf..e262759ffce 100644
--- a/examples/react/infinite-query-with-max-pages/package.json
+++ b/examples/react/infinite-query-with-max-pages/package.json
@@ -8,8 +8,8 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"next": "^15.1.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
diff --git a/examples/react/load-more-infinite-scroll/package.json b/examples/react/load-more-infinite-scroll/package.json
index 0e8987b1e69..3b53adefe77 100644
--- a/examples/react/load-more-infinite-scroll/package.json
+++ b/examples/react/load-more-infinite-scroll/package.json
@@ -8,8 +8,8 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"next": "^15.1.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
diff --git a/examples/react/nextjs-app-prefetching/package.json b/examples/react/nextjs-app-prefetching/package.json
index 040aebe64f4..8f6e12bef25 100644
--- a/examples/react/nextjs-app-prefetching/package.json
+++ b/examples/react/nextjs-app-prefetching/package.json
@@ -8,8 +8,8 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"next": "^15.1.2",
"react": "^19.0.0",
"react-dom": "^19.0.0"
diff --git a/examples/react/nextjs-suspense-streaming/package.json b/examples/react/nextjs-suspense-streaming/package.json
index 7fba8fffa86..49371749a38 100644
--- a/examples/react/nextjs-suspense-streaming/package.json
+++ b/examples/react/nextjs-suspense-streaming/package.json
@@ -8,9 +8,9 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
- "@tanstack/react-query-next-experimental": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
+ "@tanstack/react-query-next-experimental": "^5.74.0",
"next": "^15.1.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
diff --git a/examples/react/nextjs/package.json b/examples/react/nextjs/package.json
index 1372308f8f4..188f74b1255 100644
--- a/examples/react/nextjs/package.json
+++ b/examples/react/nextjs/package.json
@@ -8,8 +8,8 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"next": "^15.1.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
diff --git a/examples/react/offline/package.json b/examples/react/offline/package.json
index 7ced307c2e0..0294d998976 100644
--- a/examples/react/offline/package.json
+++ b/examples/react/offline/package.json
@@ -8,11 +8,11 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/query-sync-storage-persister": "^5.73.3",
+ "@tanstack/query-sync-storage-persister": "^5.74.0",
"@tanstack/react-location": "^3.7.4",
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
- "@tanstack/react-query-persist-client": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
+ "@tanstack/react-query-persist-client": "^5.74.0",
"msw": "^2.6.6",
"react": "^19.0.0",
"react-dom": "^19.0.0",
diff --git a/examples/react/optimistic-updates-cache/package.json b/examples/react/optimistic-updates-cache/package.json
index b77f49530a4..30144032816 100755
--- a/examples/react/optimistic-updates-cache/package.json
+++ b/examples/react/optimistic-updates-cache/package.json
@@ -8,8 +8,8 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"next": "^15.1.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
diff --git a/examples/react/optimistic-updates-ui/package.json b/examples/react/optimistic-updates-ui/package.json
index 261a80d992c..df63a98f5cd 100755
--- a/examples/react/optimistic-updates-ui/package.json
+++ b/examples/react/optimistic-updates-ui/package.json
@@ -8,8 +8,8 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"next": "^15.1.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
diff --git a/examples/react/pagination/package.json b/examples/react/pagination/package.json
index 132048c7213..0e544cc91cc 100644
--- a/examples/react/pagination/package.json
+++ b/examples/react/pagination/package.json
@@ -8,8 +8,8 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"next": "^15.1.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
diff --git a/examples/react/playground/package.json b/examples/react/playground/package.json
index 0c08a9705da..e216f374fe8 100644
--- a/examples/react/playground/package.json
+++ b/examples/react/playground/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
diff --git a/examples/react/prefetching/package.json b/examples/react/prefetching/package.json
index 0fbc517327e..d4d8f2bcc6c 100644
--- a/examples/react/prefetching/package.json
+++ b/examples/react/prefetching/package.json
@@ -8,8 +8,8 @@
"start": "next start"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"next": "^15.1.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
diff --git a/examples/react/react-native/package.json b/examples/react/react-native/package.json
index 3e19c6939b5..8f674c27c61 100644
--- a/examples/react/react-native/package.json
+++ b/examples/react/react-native/package.json
@@ -14,8 +14,8 @@
"@react-native-community/netinfo": "^11.4.1",
"@react-navigation/native": "^6.1.18",
"@react-navigation/stack": "^6.4.1",
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"expo": "^52.0.11",
"expo-constants": "^17.0.3",
"expo-status-bar": "^2.0.0",
diff --git a/examples/react/react-router/package.json b/examples/react/react-router/package.json
index 5cf5d6ad42f..b842dfc6848 100644
--- a/examples/react/react-router/package.json
+++ b/examples/react/react-router/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"localforage": "^1.10.0",
"match-sorter": "^6.3.4",
"react": "^19.0.0",
diff --git a/examples/react/rick-morty/package.json b/examples/react/rick-morty/package.json
index 1af75114ad9..0f60c0444bf 100644
--- a/examples/react/rick-morty/package.json
+++ b/examples/react/rick-morty/package.json
@@ -12,8 +12,8 @@
"@emotion/styled": "^11.13.5",
"@mui/material": "^6.1.8",
"@mui/styles": "^6.1.8",
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router": "^6.25.1",
diff --git a/examples/react/shadow-dom/package.json b/examples/react/shadow-dom/package.json
index 7651d2ae54e..327bb294936 100644
--- a/examples/react/shadow-dom/package.json
+++ b/examples/react/shadow-dom/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
diff --git a/examples/react/simple/package.json b/examples/react/simple/package.json
index cad16b2b6ad..6e3b3f943ea 100644
--- a/examples/react/simple/package.json
+++ b/examples/react/simple/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
diff --git a/examples/react/star-wars/package.json b/examples/react/star-wars/package.json
index bc7ec30a211..ad1b0e4338e 100644
--- a/examples/react/star-wars/package.json
+++ b/examples/react/star-wars/package.json
@@ -12,8 +12,8 @@
"@emotion/styled": "^11.13.5",
"@mui/material": "^6.1.8",
"@mui/styles": "^6.1.8",
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router": "^6.25.1",
diff --git a/examples/react/suspense/package.json b/examples/react/suspense/package.json
index 3e80e3a4058..9ab78b7eb96 100644
--- a/examples/react/suspense/package.json
+++ b/examples/react/suspense/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/react-query": "^5.73.3",
- "@tanstack/react-query-devtools": "^5.73.3",
+ "@tanstack/react-query": "^5.74.0",
+ "@tanstack/react-query-devtools": "^5.74.0",
"font-awesome": "^4.7.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
diff --git a/examples/solid/astro/package.json b/examples/solid/astro/package.json
index bd56d3bc56f..7ff993c95b9 100644
--- a/examples/solid/astro/package.json
+++ b/examples/solid/astro/package.json
@@ -15,8 +15,8 @@
"@astrojs/solid-js": "^5.0.7",
"@astrojs/tailwind": "^6.0.2",
"@astrojs/vercel": "^8.1.3",
- "@tanstack/solid-query": "^5.73.3",
- "@tanstack/solid-query-devtools": "^5.73.3",
+ "@tanstack/solid-query": "^5.74.0",
+ "@tanstack/solid-query-devtools": "^5.74.0",
"astro": "^5.5.6",
"solid-js": "^1.9.5",
"tailwindcss": "^3.4.7",
diff --git a/examples/solid/basic-graphql-request/package.json b/examples/solid/basic-graphql-request/package.json
index ceda64bfb53..c0b3b3c4b7c 100644
--- a/examples/solid/basic-graphql-request/package.json
+++ b/examples/solid/basic-graphql-request/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/solid-query": "^5.73.3",
- "@tanstack/solid-query-devtools": "^5.73.3",
+ "@tanstack/solid-query": "^5.74.0",
+ "@tanstack/solid-query-devtools": "^5.74.0",
"graphql": "^16.9.0",
"graphql-request": "^7.1.2",
"solid-js": "^1.9.5"
diff --git a/examples/solid/basic/package.json b/examples/solid/basic/package.json
index 73540187df0..3e37492caad 100644
--- a/examples/solid/basic/package.json
+++ b/examples/solid/basic/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/solid-query": "^5.73.3",
- "@tanstack/solid-query-devtools": "^5.73.3",
+ "@tanstack/solid-query": "^5.74.0",
+ "@tanstack/solid-query-devtools": "^5.74.0",
"solid-js": "^1.9.5"
},
"devDependencies": {
diff --git a/examples/solid/default-query-function/package.json b/examples/solid/default-query-function/package.json
index e81575cf051..a80c40554ac 100644
--- a/examples/solid/default-query-function/package.json
+++ b/examples/solid/default-query-function/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/solid-query": "^5.73.3",
- "@tanstack/solid-query-devtools": "^5.73.3",
+ "@tanstack/solid-query": "^5.74.0",
+ "@tanstack/solid-query-devtools": "^5.74.0",
"solid-js": "^1.9.5"
},
"devDependencies": {
diff --git a/examples/solid/simple/package.json b/examples/solid/simple/package.json
index 2ccd94df789..c5d1261b5c1 100644
--- a/examples/solid/simple/package.json
+++ b/examples/solid/simple/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/solid-query": "^5.73.3",
- "@tanstack/solid-query-devtools": "^5.73.3",
+ "@tanstack/solid-query": "^5.74.0",
+ "@tanstack/solid-query-devtools": "^5.74.0",
"solid-js": "^1.9.5"
},
"devDependencies": {
diff --git a/examples/solid/solid-start-streaming/package.json b/examples/solid/solid-start-streaming/package.json
index 20df3b72e2f..9fe734d6a69 100644
--- a/examples/solid/solid-start-streaming/package.json
+++ b/examples/solid/solid-start-streaming/package.json
@@ -12,8 +12,8 @@
"@solidjs/meta": "^0.29.4",
"@solidjs/router": "^0.15.3",
"@solidjs/start": "^1.1.3",
- "@tanstack/solid-query": "^5.73.3",
- "@tanstack/solid-query-devtools": "^5.73.3",
+ "@tanstack/solid-query": "^5.74.0",
+ "@tanstack/solid-query-devtools": "^5.74.0",
"solid-js": "^1.9.5",
"vinxi": "^0.5.3"
},
diff --git a/examples/svelte/auto-refetching/package.json b/examples/svelte/auto-refetching/package.json
index 06c0e7e2c42..08fc878dbf1 100644
--- a/examples/svelte/auto-refetching/package.json
+++ b/examples/svelte/auto-refetching/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/svelte-query": "^5.73.3",
- "@tanstack/svelte-query-devtools": "^5.73.3"
+ "@tanstack/svelte-query": "^5.74.0",
+ "@tanstack/svelte-query-devtools": "^5.74.0"
},
"devDependencies": {
"@sveltejs/adapter-auto": "^6.0.0",
diff --git a/examples/svelte/basic/package.json b/examples/svelte/basic/package.json
index 4b47f6cdc3c..6fd947a51bb 100644
--- a/examples/svelte/basic/package.json
+++ b/examples/svelte/basic/package.json
@@ -8,10 +8,10 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/query-sync-storage-persister": "^5.73.3",
- "@tanstack/svelte-query": "^5.73.3",
- "@tanstack/svelte-query-devtools": "^5.73.3",
- "@tanstack/svelte-query-persist-client": "^5.73.3"
+ "@tanstack/query-sync-storage-persister": "^5.74.0",
+ "@tanstack/svelte-query": "^5.74.0",
+ "@tanstack/svelte-query-devtools": "^5.74.0",
+ "@tanstack/svelte-query-persist-client": "^5.74.0"
},
"devDependencies": {
"@sveltejs/adapter-auto": "^6.0.0",
diff --git a/examples/svelte/load-more-infinite-scroll/package.json b/examples/svelte/load-more-infinite-scroll/package.json
index a2aaf3c2283..be30368d8a8 100644
--- a/examples/svelte/load-more-infinite-scroll/package.json
+++ b/examples/svelte/load-more-infinite-scroll/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/svelte-query": "^5.73.3",
- "@tanstack/svelte-query-devtools": "^5.73.3"
+ "@tanstack/svelte-query": "^5.74.0",
+ "@tanstack/svelte-query-devtools": "^5.74.0"
},
"devDependencies": {
"@sveltejs/adapter-auto": "^6.0.0",
diff --git a/examples/svelte/optimistic-updates/package.json b/examples/svelte/optimistic-updates/package.json
index ccf1990958a..b75be262dc6 100644
--- a/examples/svelte/optimistic-updates/package.json
+++ b/examples/svelte/optimistic-updates/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/svelte-query": "^5.73.3",
- "@tanstack/svelte-query-devtools": "^5.73.3"
+ "@tanstack/svelte-query": "^5.74.0",
+ "@tanstack/svelte-query-devtools": "^5.74.0"
},
"devDependencies": {
"@sveltejs/adapter-auto": "^6.0.0",
diff --git a/examples/svelte/playground/package.json b/examples/svelte/playground/package.json
index 369d327d2cf..8631774bfcc 100644
--- a/examples/svelte/playground/package.json
+++ b/examples/svelte/playground/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/svelte-query": "^5.73.3",
- "@tanstack/svelte-query-devtools": "^5.73.3"
+ "@tanstack/svelte-query": "^5.74.0",
+ "@tanstack/svelte-query-devtools": "^5.74.0"
},
"devDependencies": {
"@sveltejs/adapter-auto": "^6.0.0",
diff --git a/examples/svelte/simple/package.json b/examples/svelte/simple/package.json
index fe7e381af7f..ce2549bca21 100644
--- a/examples/svelte/simple/package.json
+++ b/examples/svelte/simple/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/svelte-query": "^5.73.3",
- "@tanstack/svelte-query-devtools": "^5.73.3"
+ "@tanstack/svelte-query": "^5.74.0",
+ "@tanstack/svelte-query-devtools": "^5.74.0"
},
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^5.0.3",
diff --git a/examples/svelte/ssr/package.json b/examples/svelte/ssr/package.json
index 3b5cd38e5fc..bbf77e57544 100644
--- a/examples/svelte/ssr/package.json
+++ b/examples/svelte/ssr/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/svelte-query": "^5.73.3",
- "@tanstack/svelte-query-devtools": "^5.73.3"
+ "@tanstack/svelte-query": "^5.74.0",
+ "@tanstack/svelte-query-devtools": "^5.74.0"
},
"devDependencies": {
"@sveltejs/adapter-auto": "^6.0.0",
diff --git a/examples/svelte/star-wars/package.json b/examples/svelte/star-wars/package.json
index bdc3db2ab7c..4c10b85f5a7 100644
--- a/examples/svelte/star-wars/package.json
+++ b/examples/svelte/star-wars/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/svelte-query": "^5.73.3",
- "@tanstack/svelte-query-devtools": "^5.73.3"
+ "@tanstack/svelte-query": "^5.74.0",
+ "@tanstack/svelte-query-devtools": "^5.74.0"
},
"devDependencies": {
"@sveltejs/adapter-auto": "^6.0.0",
diff --git a/examples/vue/2.6-basic/package.json b/examples/vue/2.6-basic/package.json
index 81a29b9650b..139104a5aaf 100644
--- a/examples/vue/2.6-basic/package.json
+++ b/examples/vue/2.6-basic/package.json
@@ -8,7 +8,7 @@
"_preview": "vite preview"
},
"dependencies": {
- "@tanstack/vue-query": "^5.73.3",
+ "@tanstack/vue-query": "^5.74.0",
"@vue/composition-api": "1.7.2",
"vue": "2.6.14",
"vue-template-compiler": "2.6.14"
diff --git a/examples/vue/2.7-basic/package.json b/examples/vue/2.7-basic/package.json
index c1ea9db69ca..6fcbf730375 100644
--- a/examples/vue/2.7-basic/package.json
+++ b/examples/vue/2.7-basic/package.json
@@ -8,7 +8,7 @@
"_serve": "vite preview"
},
"dependencies": {
- "@tanstack/vue-query": "^5.73.3",
+ "@tanstack/vue-query": "^5.74.0",
"vue": "2.7.16",
"vue-template-compiler": "2.7.16"
},
diff --git a/examples/vue/basic/package.json b/examples/vue/basic/package.json
index 997a14715e4..b9086c2f951 100644
--- a/examples/vue/basic/package.json
+++ b/examples/vue/basic/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/vue-query": "^5.73.3",
- "@tanstack/vue-query-devtools": "^5.73.3",
+ "@tanstack/vue-query": "^5.74.0",
+ "@tanstack/vue-query-devtools": "^5.74.0",
"vue": "^3.4.27"
},
"devDependencies": {
diff --git a/examples/vue/dependent-queries/package.json b/examples/vue/dependent-queries/package.json
index bcf6b378014..42094aa6366 100644
--- a/examples/vue/dependent-queries/package.json
+++ b/examples/vue/dependent-queries/package.json
@@ -8,7 +8,7 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/vue-query": "^5.73.3",
+ "@tanstack/vue-query": "^5.74.0",
"vue": "^3.4.27"
},
"devDependencies": {
diff --git a/examples/vue/nuxt3/package.json b/examples/vue/nuxt3/package.json
index 05f832d5934..0a039600c80 100644
--- a/examples/vue/nuxt3/package.json
+++ b/examples/vue/nuxt3/package.json
@@ -7,7 +7,7 @@
"_start": "node .output/server/index.mjs"
},
"dependencies": {
- "@tanstack/vue-query": "^5.73.3"
+ "@tanstack/vue-query": "^5.74.0"
},
"devDependencies": {
"nuxt": "^3.12.4"
diff --git a/examples/vue/persister/package.json b/examples/vue/persister/package.json
index 45c86f3259c..af4abcdfd3b 100644
--- a/examples/vue/persister/package.json
+++ b/examples/vue/persister/package.json
@@ -8,10 +8,10 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/query-core": "^5.73.3",
- "@tanstack/query-persist-client-core": "^5.73.3",
- "@tanstack/query-sync-storage-persister": "^5.73.3",
- "@tanstack/vue-query": "^5.73.3",
+ "@tanstack/query-core": "^5.74.0",
+ "@tanstack/query-persist-client-core": "^5.74.0",
+ "@tanstack/query-sync-storage-persister": "^5.74.0",
+ "@tanstack/vue-query": "^5.74.0",
"idb-keyval": "^6.2.1",
"vue": "^3.4.27"
},
diff --git a/examples/vue/simple/package.json b/examples/vue/simple/package.json
index 6fed2504717..c5396f7b044 100644
--- a/examples/vue/simple/package.json
+++ b/examples/vue/simple/package.json
@@ -8,8 +8,8 @@
"preview": "vite preview"
},
"dependencies": {
- "@tanstack/vue-query": "^5.73.3",
- "@tanstack/vue-query-devtools": "^5.73.3",
+ "@tanstack/vue-query": "^5.74.0",
+ "@tanstack/vue-query-devtools": "^5.74.0",
"vue": "^3.4.27"
},
"devDependencies": {
diff --git a/packages/angular-persist-query-client/.attw.json b/packages/angular-persist-query-client/.attw.json
new file mode 100644
index 00000000000..ce409e67a82
--- /dev/null
+++ b/packages/angular-persist-query-client/.attw.json
@@ -0,0 +1,3 @@
+{
+ "ignoreRules": ["cjs-resolves-to-esm", "no-resolution"]
+}
diff --git a/packages/angular-persist-query-client/eslint.config.js b/packages/angular-persist-query-client/eslint.config.js
new file mode 100644
index 00000000000..84b0029c8e7
--- /dev/null
+++ b/packages/angular-persist-query-client/eslint.config.js
@@ -0,0 +1,31 @@
+// @ts-check
+
+import pluginJsdoc from 'eslint-plugin-jsdoc'
+import rootConfig from './root.eslint.config.js'
+
+export default [
+ ...rootConfig,
+ pluginJsdoc.configs['flat/recommended-typescript'],
+ {
+ rules: {
+ 'cspell/spellchecker': [
+ 'warn',
+ {
+ cspell: {
+ ignoreRegExpList: ['\\ɵ.+'],
+ },
+ },
+ ],
+ 'jsdoc/require-hyphen-before-param-description': 1,
+ 'jsdoc/sort-tags': 1,
+ 'jsdoc/require-throws': 1,
+ 'jsdoc/check-tag-names': [
+ 'warn',
+ {
+ // Not compatible with Api Extractor @public
+ typed: false,
+ },
+ ],
+ },
+ },
+]
diff --git a/packages/angular-persist-query-client/package.json b/packages/angular-persist-query-client/package.json
new file mode 100644
index 00000000000..59d27f8e8cd
--- /dev/null
+++ b/packages/angular-persist-query-client/package.json
@@ -0,0 +1,75 @@
+{
+ "name": "@tanstack/angular-query-persist-client",
+ "private": true,
+ "version": "5.62.7",
+ "description": "Angular bindings to work with persisters in TanStack/angular-query",
+ "author": "Omer Gronich",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/TanStack/query.git",
+ "directory": "packages/angular-query-persist-client"
+ },
+ "homepage": "https://tanstack.com/query",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/tannerlinsley"
+ },
+ "scripts": {
+ "clean": "premove ./build ./coverage ./dist-ts",
+ "compile": "tsc --build",
+ "test:eslint": "eslint ./src",
+ "test:types": "npm-run-all --serial test:types:*",
+ "test:types:ts50": "node ../../node_modules/typescript50/lib/tsc.js --build",
+ "test:types:ts51": "node ../../node_modules/typescript51/lib/tsc.js --build",
+ "test:types:ts52": "node ../../node_modules/typescript52/lib/tsc.js --build",
+ "test:types:ts53": "node ../../node_modules/typescript53/lib/tsc.js --build",
+ "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js --build",
+ "test:types:ts55": "node ../../node_modules/typescript55/lib/tsc.js --build",
+ "test:types:ts56": "node ../../node_modules/typescript56/lib/tsc.js --build",
+ "test:types:ts57": "node ../../node_modules/typescript57/lib/tsc.js --build",
+ "test:types:tscurrent": "tsc --build",
+ "test:lib": "vitest",
+ "test:lib:dev": "pnpm run test:lib --watch",
+ "test:build": "publint --strict && attw --pack",
+ "build": "pnpm build:tsup",
+ "build:tsup": "tsup --tsconfig tsconfig.prod.json"
+ },
+ "type": "module",
+ "types": "build/index.d.ts",
+ "module": "build/index.mjs",
+ "exports": {
+ ".": {
+ "types": "./build/index.d.ts",
+ "default": "./build/index.mjs"
+ },
+ "./package.json": {
+ "default": "./package.json"
+ }
+ },
+ "sideEffects": false,
+ "files": [
+ "build",
+ "src",
+ "!src/__tests__"
+ ],
+ "dependencies": {
+ "@tanstack/query-persist-client-core": "workspace:*"
+ },
+ "devDependencies": {
+ "@angular/compiler": "^19.2.4",
+ "@angular/core": "^19.2.4",
+ "@angular/platform-browser": "^19.2.4",
+ "@angular/platform-browser-dynamic": "^19.2.4",
+ "@tanstack/angular-query-experimental": "workspace:*",
+ "@testing-library/angular": "^17.3.2",
+ "@testing-library/dom": "^10.4.0",
+ "eslint-plugin-jsdoc": "^50.5.0",
+ "npm-run-all2": "^5.0.0"
+ },
+ "peerDependencies": {
+ "@angular/common": ">=16.0.0",
+ "@angular/core": ">=16.0.0",
+ "@tanstack/angular-query-experimental": "workspace:*"
+ }
+}
diff --git a/packages/angular-persist-query-client/root.eslint.config.js b/packages/angular-persist-query-client/root.eslint.config.js
new file mode 120000
index 00000000000..35dedbe5a4a
--- /dev/null
+++ b/packages/angular-persist-query-client/root.eslint.config.js
@@ -0,0 +1 @@
+../../eslint.config.js
\ No newline at end of file
diff --git a/packages/angular-persist-query-client/root.vite.config.js b/packages/angular-persist-query-client/root.vite.config.js
new file mode 120000
index 00000000000..1faec0e8745
--- /dev/null
+++ b/packages/angular-persist-query-client/root.vite.config.js
@@ -0,0 +1 @@
+../../scripts/getViteAliases.js
\ No newline at end of file
diff --git a/packages/angular-persist-query-client/src/__tests__/utils.ts b/packages/angular-persist-query-client/src/__tests__/utils.ts
new file mode 100644
index 00000000000..73fb0ed26fa
--- /dev/null
+++ b/packages/angular-persist-query-client/src/__tests__/utils.ts
@@ -0,0 +1,12 @@
+let queryKeyCount = 0
+
+export function queryKey(): Array {
+ queryKeyCount++
+ return [`query_${queryKeyCount}`]
+}
+
+export function sleep(timeout: number): Promise {
+ return new Promise((resolve, _reject) => {
+ setTimeout(resolve, timeout)
+ })
+}
diff --git a/packages/angular-persist-query-client/src/__tests__/with-persist-query-client.test.ts b/packages/angular-persist-query-client/src/__tests__/with-persist-query-client.test.ts
new file mode 100644
index 00000000000..7085c753eac
--- /dev/null
+++ b/packages/angular-persist-query-client/src/__tests__/with-persist-query-client.test.ts
@@ -0,0 +1,406 @@
+import { describe, expect, test, vi } from 'vitest'
+import {
+ QueryClient,
+ injectQuery,
+ provideTanStackQuery,
+} from '@tanstack/angular-query-experimental'
+import { persistQueryClientSave } from '@tanstack/query-persist-client-core'
+import {
+ Component,
+ effect,
+ provideExperimentalZonelessChangeDetection,
+} from '@angular/core'
+import { render, screen, waitFor } from '@testing-library/angular'
+import { withPersistQueryClient } from '../with-persist-query-client'
+import { queryKey, sleep } from './utils'
+import type {
+ PersistedClient,
+ Persister,
+} from '@tanstack/query-persist-client-core'
+
+const createMockPersister = (): Persister => {
+ let storedState: PersistedClient | undefined
+
+ return {
+ persistClient(persistClient: PersistedClient) {
+ storedState = persistClient
+ },
+ async restoreClient() {
+ await sleep(10)
+ return storedState
+ },
+ removeClient() {
+ storedState = undefined
+ },
+ }
+}
+
+const createMockErrorPersister = (
+ removeClient: Persister['removeClient'],
+): [Error, Persister] => {
+ const error = new Error('restore failed')
+ return [
+ error,
+ {
+ async persistClient() {
+ // noop
+ },
+ async restoreClient() {
+ await sleep(10)
+ throw error
+ },
+ removeClient,
+ },
+ ]
+}
+
+describe('withPersistQueryClient', () => {
+ test('restores cache from persister', async () => {
+ const key = queryKey()
+ const states: Array<{
+ status: string
+ fetchStatus: string
+ data: string | undefined
+ }> = []
+
+ const queryClient = new QueryClient()
+ await queryClient.prefetchQuery({
+ queryKey: key,
+ queryFn: () => Promise.resolve('hydrated'),
+ })
+
+ const persister = createMockPersister()
+
+ await persistQueryClientSave({ queryClient, persister })
+
+ queryClient.clear()
+
+ @Component({
+ template: `
+
+
{{ state.data() }}
+ fetchStatus: {{ state.fetchStatus() }}
+
+ `,
+ })
+ class Page {
+ state = injectQuery(() => ({
+ queryKey: key,
+ queryFn: async () => {
+ await sleep(10)
+ return 'fetched'
+ },
+ }))
+ _ = effect(() => {
+ states.push({
+ status: this.state.status(),
+ fetchStatus: this.state.fetchStatus(),
+ data: this.state.data(),
+ })
+ })
+ }
+
+ render(Page, {
+ providers: [
+ provideExperimentalZonelessChangeDetection(),
+ provideTanStackQuery(
+ queryClient,
+ withPersistQueryClient({ persistOptions: { persister } }),
+ ),
+ ],
+ })
+
+ await waitFor(() => screen.getByText('fetchStatus: idle'))
+ await waitFor(() => screen.getByText('hydrated'))
+ await waitFor(() => screen.getByText('fetched'))
+
+ expect(states).toHaveLength(3)
+
+ expect(states[0]).toMatchObject({
+ status: 'pending',
+ fetchStatus: 'idle',
+ data: undefined,
+ })
+
+ expect(states[1]).toMatchObject({
+ status: 'success',
+ fetchStatus: 'fetching',
+ data: 'hydrated',
+ })
+
+ expect(states[2]).toMatchObject({
+ status: 'success',
+ fetchStatus: 'idle',
+ data: 'fetched',
+ })
+ })
+
+ test.todo(
+ '(Once injectQueries is functional) verify that injectQueries transitions to an idle state',
+ )
+
+ test('should show initialData while restoring', async () => {
+ const key = queryKey()
+ const states: Array<{
+ status: string
+ fetchStatus: string
+ data: string | undefined
+ }> = []
+
+ const queryClient = new QueryClient()
+ await queryClient.prefetchQuery({
+ queryKey: key,
+ queryFn: () => Promise.resolve('hydrated'),
+ })
+
+ const persister = createMockPersister()
+
+ await persistQueryClientSave({ queryClient, persister })
+
+ queryClient.clear()
+
+ @Component({
+ template: `
+
+
{{ state.data() }}
+ fetchStatus: {{ state.fetchStatus() }}
+
+ `,
+ })
+ class Page {
+ state = injectQuery(() => ({
+ queryKey: key,
+ queryFn: async () => {
+ await sleep(10)
+ return 'fetched'
+ },
+ initialData: 'initial',
+ // make sure that initial data is older than the hydration data
+ // otherwise initialData would be newer and takes precedence
+ initialDataUpdatedAt: 1,
+ }))
+ _ = effect(() => {
+ states.push({
+ status: this.state.status(),
+ fetchStatus: this.state.fetchStatus(),
+ data: this.state.data(),
+ })
+ })
+ }
+
+ render(Page, {
+ providers: [
+ provideExperimentalZonelessChangeDetection(),
+ provideTanStackQuery(
+ queryClient,
+ withPersistQueryClient({ persistOptions: { persister } }),
+ ),
+ ],
+ })
+
+ await waitFor(() => screen.getByText('fetched'))
+
+ expect(states).toHaveLength(3)
+
+ expect(states[0]).toMatchObject({
+ status: 'success',
+ fetchStatus: 'idle',
+ data: 'initial',
+ })
+
+ expect(states[1]).toMatchObject({
+ status: 'success',
+ fetchStatus: 'fetching',
+ data: 'hydrated',
+ })
+
+ expect(states[2]).toMatchObject({
+ status: 'success',
+ fetchStatus: 'idle',
+ data: 'fetched',
+ })
+ })
+
+ test('should not refetch after restoring when data is fresh', async () => {
+ const key = queryKey()
+ const states: Array<{
+ status: string
+ fetchStatus: string
+ data: string | undefined
+ }> = []
+
+ const queryClient = new QueryClient()
+ await queryClient.prefetchQuery({
+ queryKey: key,
+ queryFn: () => Promise.resolve('hydrated'),
+ })
+
+ const persister = createMockPersister()
+
+ await persistQueryClientSave({ queryClient, persister })
+
+ queryClient.clear()
+
+ let fetched = false
+
+ @Component({
+ template: `
+
+
data: {{ state.data() ?? 'null' }}
+ fetchStatus: {{ state.fetchStatus() }}
+
+ `,
+ })
+ class Page {
+ state = injectQuery(() => ({
+ queryKey: key,
+ queryFn: async () => {
+ fetched = true
+ await sleep(10)
+ return 'fetched'
+ },
+ staleTime: Infinity,
+ }))
+ _ = effect(() => {
+ states.push({
+ status: this.state.status(),
+ fetchStatus: this.state.fetchStatus(),
+ data: this.state.data(),
+ })
+ })
+ }
+
+ render(Page, {
+ providers: [
+ provideExperimentalZonelessChangeDetection(),
+ provideTanStackQuery(
+ queryClient,
+ withPersistQueryClient({ persistOptions: { persister } }),
+ ),
+ ],
+ })
+
+ await waitFor(() => screen.getByText('data: null'))
+ await waitFor(() => screen.getByText('data: hydrated'))
+
+ expect(states).toHaveLength(2)
+
+ expect(fetched).toBe(false)
+
+ expect(states[0]).toMatchObject({
+ status: 'pending',
+ fetchStatus: 'idle',
+ data: undefined,
+ })
+
+ expect(states[1]).toMatchObject({
+ status: 'success',
+ fetchStatus: 'idle',
+ data: 'hydrated',
+ })
+ })
+
+ test('should call onSuccess after successful restoring', async () => {
+ const key = queryKey()
+ const queryClient = new QueryClient()
+ await queryClient.prefetchQuery({
+ queryKey: key,
+ queryFn: () => Promise.resolve('hydrated'),
+ })
+
+ const persister = createMockPersister()
+ await persistQueryClientSave({ queryClient, persister })
+
+ queryClient.clear()
+
+ @Component({
+ template: `
+
+
{{ state.data() }}
+ fetchStatus: {{ state.fetchStatus() }}
+
+ `,
+ })
+ class Page {
+ state = injectQuery(() => ({
+ queryKey: key,
+ queryFn: async () => {
+ await sleep(10)
+ return 'fetched'
+ },
+ }))
+ }
+
+ const onSuccess = vi.fn()
+
+ render(Page, {
+ providers: [
+ provideExperimentalZonelessChangeDetection(),
+ provideTanStackQuery(
+ queryClient,
+ withPersistQueryClient({
+ persistOptions: { persister },
+ onSuccess,
+ }),
+ ),
+ ],
+ })
+
+ expect(onSuccess).toHaveBeenCalledTimes(0)
+ await waitFor(() => screen.getByText('fetched'))
+ expect(onSuccess).toHaveBeenCalledTimes(1)
+ })
+
+ test('should remove cache after non-successful restoring', async () => {
+ const key = queryKey()
+ const onErrorMock = vi
+ .spyOn(console, 'error')
+ .mockImplementation(() => undefined)
+ const queryClient = new QueryClient()
+ const removeClient = vi.fn()
+ const [error, persister] = createMockErrorPersister(removeClient)
+ const onSuccess = vi.fn()
+ const onError = vi.fn()
+
+ @Component({
+ template: `
+
+
{{ state.data() }}
+ fetchStatus: {{ state.fetchStatus() }}
+
+ `,
+ })
+ class Page {
+ state = injectQuery(() => ({
+ queryKey: key,
+ queryFn: async () => {
+ await sleep(10)
+ return 'fetched'
+ },
+ }))
+ }
+
+ render(Page, {
+ providers: [
+ provideExperimentalZonelessChangeDetection(),
+ provideTanStackQuery(
+ queryClient,
+ withPersistQueryClient({
+ persistOptions: { persister },
+ onSuccess,
+ onError,
+ }),
+ ),
+ ],
+ })
+
+ await waitFor(() => screen.getByText('fetched'))
+ expect(removeClient).toHaveBeenCalledTimes(1)
+ expect(onSuccess).toHaveBeenCalledTimes(0)
+ expect(onError).toHaveBeenCalledTimes(1)
+
+ expect(onErrorMock).toHaveBeenCalledTimes(1)
+ expect(onErrorMock).toHaveBeenNthCalledWith(1, error)
+ onErrorMock.mockRestore()
+ })
+})
diff --git a/packages/angular-persist-query-client/src/index.ts b/packages/angular-persist-query-client/src/index.ts
new file mode 100644
index 00000000000..2f7546d1967
--- /dev/null
+++ b/packages/angular-persist-query-client/src/index.ts
@@ -0,0 +1,4 @@
+// Re-export core
+export * from '@tanstack/query-persist-client-core'
+
+export * from './with-persist-query-client'
diff --git a/packages/angular-persist-query-client/src/test-setup.ts b/packages/angular-persist-query-client/src/test-setup.ts
new file mode 100644
index 00000000000..30c962a8e62
--- /dev/null
+++ b/packages/angular-persist-query-client/src/test-setup.ts
@@ -0,0 +1,10 @@
+import {
+ BrowserDynamicTestingModule,
+ platformBrowserDynamicTesting,
+} from '@angular/platform-browser-dynamic/testing'
+import { getTestBed } from '@angular/core/testing'
+
+getTestBed().initTestEnvironment(
+ BrowserDynamicTestingModule,
+ platformBrowserDynamicTesting(),
+)
diff --git a/packages/angular-persist-query-client/src/with-persist-query-client.ts b/packages/angular-persist-query-client/src/with-persist-query-client.ts
new file mode 100644
index 00000000000..2896cbc7b27
--- /dev/null
+++ b/packages/angular-persist-query-client/src/with-persist-query-client.ts
@@ -0,0 +1,88 @@
+import {
+ QueryClient,
+ provideIsRestoring,
+ queryFeature,
+} from '@tanstack/angular-query-experimental'
+import {
+ DestroyRef,
+ ENVIRONMENT_INITIALIZER,
+ PLATFORM_ID,
+ inject,
+ signal,
+} from '@angular/core'
+import { isPlatformBrowser } from '@angular/common'
+import {
+ persistQueryClientRestore,
+ persistQueryClientSubscribe,
+} from '@tanstack/query-persist-client-core'
+import type { PersistQueryClientOptions as PersistQueryClientOptionsCore } from '@tanstack/query-persist-client-core'
+import type { PersistQueryClientFeature } from '@tanstack/angular-query-experimental'
+
+type PersistQueryClientOptions = {
+ persistOptions: Omit
+ onSuccess?: () => Promise | unknown
+ onError?: () => Promise | unknown
+}
+
+/**
+ * Enables persistence.
+ *
+ * **Example**
+ *
+ * ```ts
+ * const localStoragePersister = createSyncStoragePersister({
+ * storage: window.localStorage,
+ * })
+ *
+ * export const appConfig: ApplicationConfig = {
+ * providers: [
+ * provideTanStackQuery(
+ * new QueryClient(),
+ * withPersistQueryClient({
+ * persistOptions: {
+ * persister: localStoragePersister,
+ * },
+ * onSuccess: () => console.log('Restoration completed successfully.'),
+ * })
+ * ),
+ * ],
+ * };
+ * ```
+ * @param persistQueryClientOptions - persistence options and optional onSuccess and onError callbacks which get called when the restoration process is complete.
+ * @returns A set of providers for use with `provideTanStackQuery`.
+ * @public
+ */
+export function withPersistQueryClient(
+ persistQueryClientOptions: PersistQueryClientOptions,
+): PersistQueryClientFeature {
+ const isRestoring = signal(false)
+ const providers = [
+ provideIsRestoring(isRestoring.asReadonly()),
+ {
+ provide: ENVIRONMENT_INITIALIZER,
+ multi: true,
+ useValue: () => {
+ if (!isPlatformBrowser(inject(PLATFORM_ID))) return
+ const destroyRef = inject(DestroyRef)
+ const queryClient = inject(QueryClient)
+
+ isRestoring.set(true)
+ const { onSuccess, onError, persistOptions } = persistQueryClientOptions
+ const options = { queryClient, ...persistOptions }
+ persistQueryClientRestore(options)
+ .then(() => {
+ onSuccess?.()
+ })
+ .catch(() => {
+ onError?.()
+ })
+ .finally(() => {
+ isRestoring.set(false)
+ const cleanup = persistQueryClientSubscribe(options)
+ destroyRef.onDestroy(cleanup)
+ })
+ },
+ },
+ ]
+ return queryFeature('PersistQueryClient', providers)
+}
diff --git a/packages/angular-persist-query-client/tsconfig.json b/packages/angular-persist-query-client/tsconfig.json
new file mode 100644
index 00000000000..1c0f8de7c8e
--- /dev/null
+++ b/packages/angular-persist-query-client/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./dist-ts",
+ "rootDir": ".",
+ "baseUrl": ".",
+ "moduleResolution": "Bundler",
+ "noImplicitOverride": true,
+ "noPropertyAccessFromIndexSignature": true,
+ "noFallthroughCasesInSwitch": true,
+ "useDefineForClassFields": false,
+ "target": "ES2022",
+ "types": ["vitest/globals"]
+ },
+ "include": ["src", "*.config.js", "*.config.ts", "package.json"],
+ "references": [
+ { "path": "../angular-query-experimental" },
+ { "path": "../query-persist-client-core" }
+ ]
+}
diff --git a/packages/angular-persist-query-client/tsconfig.prod.json b/packages/angular-persist-query-client/tsconfig.prod.json
new file mode 100644
index 00000000000..0f4c92da065
--- /dev/null
+++ b/packages/angular-persist-query-client/tsconfig.prod.json
@@ -0,0 +1,8 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "incremental": false,
+ "composite": false,
+ "rootDir": "../../"
+ }
+}
diff --git a/packages/angular-persist-query-client/tsup.config.js b/packages/angular-persist-query-client/tsup.config.js
new file mode 100644
index 00000000000..a1e9d23c1ca
--- /dev/null
+++ b/packages/angular-persist-query-client/tsup.config.js
@@ -0,0 +1,13 @@
+import { defineConfig } from 'tsup'
+
+export default defineConfig({
+ entry: ['src/index.ts'],
+ sourcemap: true,
+ clean: true,
+ format: ['esm'],
+ dts: true,
+ outDir: 'build',
+ outExtension({ format }) {
+ return format === 'esm' ? { js: '.mjs' } : { js: '.js' }
+ },
+})
diff --git a/packages/angular-persist-query-client/vite.config.ts b/packages/angular-persist-query-client/vite.config.ts
new file mode 100644
index 00000000000..e822fd87c6d
--- /dev/null
+++ b/packages/angular-persist-query-client/vite.config.ts
@@ -0,0 +1,23 @@
+import { defineConfig } from 'vitest/config'
+import tsconfigPaths from 'vite-tsconfig-paths'
+
+import { dynamicAliases } from './root.vite.config'
+import packageJson from './package.json'
+
+export default defineConfig({
+ plugins: [tsconfigPaths({ ignoreConfigErrors: true })],
+ resolve: {
+ alias: dynamicAliases,
+ },
+ test: {
+ name: packageJson.name,
+ dir: './src',
+ watch: false,
+ environment: 'jsdom',
+ setupFiles: ['src/test-setup.ts'],
+ coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] },
+ typecheck: { enabled: true },
+ globals: true,
+ restoreMocks: true,
+ },
+})
diff --git a/packages/angular-query-devtools-experimental/package.json b/packages/angular-query-devtools-experimental/package.json
index 2e282be8283..fc4b443c44a 100644
--- a/packages/angular-query-devtools-experimental/package.json
+++ b/packages/angular-query-devtools-experimental/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/angular-query-devtools-experimental",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Developer tools to interact with and visualize the TanStack/angular-query cache",
"author": "Arnoud de Vries",
"license": "MIT",
diff --git a/packages/angular-query-experimental/package.json b/packages/angular-query-experimental/package.json
index 616354f92e3..bc0b77147fb 100644
--- a/packages/angular-query-experimental/package.json
+++ b/packages/angular-query-experimental/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/angular-query-experimental",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Signals for managing, caching and syncing asynchronous and remote data in Angular",
"author": "Arnoud de Vries",
"license": "MIT",
diff --git a/packages/angular-query-experimental/src/create-base-query.ts b/packages/angular-query-experimental/src/create-base-query.ts
index 14494c9eb4b..84a87d4b08d 100644
--- a/packages/angular-query-experimental/src/create-base-query.ts
+++ b/packages/angular-query-experimental/src/create-base-query.ts
@@ -1,5 +1,4 @@
import {
- DestroyRef,
NgZone,
VERSION,
computed,
@@ -11,6 +10,7 @@ import {
import { QueryClient, notifyManager } from '@tanstack/query-core'
import { signalProxy } from './signal-proxy'
import { shouldThrowError } from './util'
+import { injectIsRestoring } from './inject-is-restoring'
import type {
QueryKey,
QueryObserver,
@@ -40,8 +40,8 @@ export function createBaseQuery<
Observer: typeof QueryObserver,
) {
const ngZone = inject(NgZone)
- const destroyRef = inject(DestroyRef)
const queryClient = inject(QueryClient)
+ const isRestoring = injectIsRestoring()
/**
* Signal that has the default options from query client applied
@@ -51,7 +51,9 @@ export function createBaseQuery<
*/
const defaultedOptionsSignal = computed(() => {
const defaultedOptions = queryClient.defaultQueryOptions(optionsFn())
- defaultedOptions._optimisticResults = 'optimistic'
+ defaultedOptions._optimisticResults = isRestoring()
+ ? 'isRestoring'
+ : 'optimistic'
return defaultedOptions
})
@@ -97,34 +99,34 @@ export function createBaseQuery<
},
)
- effect(() => {
+ effect((onCleanup) => {
// observer.trackResult is not used as this optimization is not needed for Angular
const observer = observerSignal()
-
- untracked(() => {
- const unsubscribe = ngZone.runOutsideAngular(() =>
- observer.subscribe(
- notifyManager.batchCalls((state) => {
- ngZone.run(() => {
- if (
- state.isError &&
- !state.isFetching &&
- // !isRestoring() && // todo: enable when client persistence is implemented
- shouldThrowError(observer.options.throwOnError, [
- state.error,
- observer.getCurrentQuery(),
- ])
- ) {
- ngZone.onError.emit(state.error)
- throw state.error
- }
- resultFromSubscriberSignal.set(state)
- })
- }),
- ),
- )
- destroyRef.onDestroy(unsubscribe)
- })
+ const unsubscribe = isRestoring()
+ ? () => undefined
+ : untracked(() =>
+ ngZone.runOutsideAngular(() =>
+ observer.subscribe(
+ notifyManager.batchCalls((state) => {
+ ngZone.run(() => {
+ if (
+ state.isError &&
+ !state.isFetching &&
+ shouldThrowError(observer.options.throwOnError, [
+ state.error,
+ observer.getCurrentQuery(),
+ ])
+ ) {
+ ngZone.onError.emit(state.error)
+ throw state.error
+ }
+ resultFromSubscriberSignal.set(state)
+ })
+ }),
+ ),
+ ),
+ )
+ onCleanup(unsubscribe)
})
return signalProxy(
diff --git a/packages/angular-query-experimental/src/index.ts b/packages/angular-query-experimental/src/index.ts
index aa6292d4b57..da68067d33c 100644
--- a/packages/angular-query-experimental/src/index.ts
+++ b/packages/angular-query-experimental/src/index.ts
@@ -22,6 +22,7 @@ export { infiniteQueryOptions } from './infinite-query-options'
export * from './inject-infinite-query'
export * from './inject-is-fetching'
export * from './inject-is-mutating'
+export * from './inject-is-restoring'
export * from './inject-mutation'
export * from './inject-mutation-state'
export * from './inject-queries'
diff --git a/packages/angular-query-experimental/src/inject-is-restoring.ts b/packages/angular-query-experimental/src/inject-is-restoring.ts
new file mode 100644
index 00000000000..aef8b7a532e
--- /dev/null
+++ b/packages/angular-query-experimental/src/inject-is-restoring.ts
@@ -0,0 +1,50 @@
+import {
+ InjectionToken,
+ Injector,
+ assertInInjectionContext,
+ computed,
+ inject,
+} from '@angular/core'
+import type { Provider, Signal } from '@angular/core'
+
+const IsRestoring = new InjectionToken>('IsRestoring')
+
+/**
+ * The `Injector` in which to create the isRestoring signal.
+ *
+ * If this is not provided, the current injection context will be used instead (via `inject`).
+ */
+interface InjectIsRestoringOptions {
+ injector?: Injector
+}
+
+/**
+ * Injects a signal that tracks whether a restore is currently in progress. {@link injectQuery} and friends also check this internally to avoid race conditions between the restore and mounting queries.
+ * @param options - Options for injectIsRestoring.
+ * @returns signal with boolean that indicates whether a restore is in progress.
+ * @public
+ */
+export function injectIsRestoring(
+ options?: InjectIsRestoringOptions,
+): Signal {
+ !options?.injector && assertInInjectionContext(injectIsRestoring)
+ const injector = options?.injector ?? inject(Injector)
+ return injector.get(
+ IsRestoring,
+ computed(() => false),
+ { optional: true },
+ )
+}
+
+/**
+ * Used by TanStack Query Angular persist client plugin to provide the signal that tracks the restore state
+ * @param isRestoring - a readonly signal that returns a boolean
+ * @returns Provider for the `isRestoring` signal
+ * @public
+ */
+export function provideIsRestoring(isRestoring: Signal): Provider {
+ return {
+ provide: IsRestoring,
+ useValue: isRestoring,
+ }
+}
diff --git a/packages/angular-query-experimental/src/inject-queries.ts b/packages/angular-query-experimental/src/inject-queries.ts
index ea96688f72b..677e9db222b 100644
--- a/packages/angular-query-experimental/src/inject-queries.ts
+++ b/packages/angular-query-experimental/src/inject-queries.ts
@@ -12,6 +12,7 @@ import {
signal,
} from '@angular/core'
import { assertInjector } from './util/assert-injector/assert-injector'
+import { injectIsRestoring } from './inject-is-restoring'
import type { Injector, Signal } from '@angular/core'
import type {
DefaultError,
@@ -217,12 +218,15 @@ export function injectQueries<
const destroyRef = inject(DestroyRef)
const ngZone = inject(NgZone)
const queryClient = inject(QueryClient)
+ const isRestoring = injectIsRestoring()
const defaultedQueries = computed(() => {
return queries().map((opts) => {
const defaultedOptions = queryClient.defaultQueryOptions(opts)
// Make sure the results are already in fetching state before subscribing or updating options
- defaultedOptions._optimisticResults = 'optimistic'
+ defaultedOptions._optimisticResults = isRestoring()
+ ? 'isRestoring'
+ : 'optimistic'
return defaultedOptions as QueryObserverOptions
})
@@ -250,10 +254,14 @@ export function injectQueries<
const result = signal(getCombinedResult() as any)
- const unsubscribe = ngZone.runOutsideAngular(() =>
- observer.subscribe(notifyManager.batchCalls(result.set)),
- )
- destroyRef.onDestroy(unsubscribe)
+ effect(() => {
+ const unsubscribe = isRestoring()
+ ? () => undefined
+ : ngZone.runOutsideAngular(() =>
+ observer.subscribe(notifyManager.batchCalls(result.set)),
+ )
+ destroyRef.onDestroy(unsubscribe)
+ })
return result
})
diff --git a/packages/angular-query-experimental/src/providers.ts b/packages/angular-query-experimental/src/providers.ts
index 19070be32c2..98ea2e04ed8 100644
--- a/packages/angular-query-experimental/src/providers.ts
+++ b/packages/angular-query-experimental/src/providers.ts
@@ -140,7 +140,7 @@ export interface QueryFeature {
* @param providers -
* @returns A Query feature.
*/
-function queryFeature(
+export function queryFeature(
kind: TFeatureKind,
providers: Array,
): QueryFeature {
@@ -155,6 +155,13 @@ function queryFeature(
*/
export type DeveloperToolsFeature = QueryFeature<'DeveloperTools'>
+/**
+ * A type alias that represents a feature which enables persistence.
+ * The type is used to describe the return value of the `withPersistQueryClient` function.
+ * @public
+ */
+export type PersistQueryClientFeature = QueryFeature<'PersistQueryClient'>
+
/**
* Options for configuring the TanStack Query devtools.
* @public
@@ -342,8 +349,8 @@ export function withDevtools(
* @public
* @see {@link provideTanStackQuery}
*/
-export type QueryFeatures = DeveloperToolsFeature // Union type of features but just one now
+export type QueryFeatures = DeveloperToolsFeature | PersistQueryClientFeature
-export const queryFeatures = ['DeveloperTools'] as const
+export const queryFeatures = ['DeveloperTools', 'PersistQueryClient'] as const
export type QueryFeatureKind = (typeof queryFeatures)[number]
diff --git a/packages/query-async-storage-persister/package.json b/packages/query-async-storage-persister/package.json
index c38d7fede28..1a96d9af93d 100644
--- a/packages/query-async-storage-persister/package.json
+++ b/packages/query-async-storage-persister/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/query-async-storage-persister",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "A persister for asynchronous storages, to be used with TanStack/Query",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/query-broadcast-client-experimental/package.json b/packages/query-broadcast-client-experimental/package.json
index a61d4cfb6ef..05ea8dfb509 100644
--- a/packages/query-broadcast-client-experimental/package.json
+++ b/packages/query-broadcast-client-experimental/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/query-broadcast-client-experimental",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "An experimental plugin to for broadcasting the state of your queryClient between browser tabs/windows",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/query-core/package.json b/packages/query-core/package.json
index 640d02c978b..dd90f6069de 100644
--- a/packages/query-core/package.json
+++ b/packages/query-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/query-core",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "The framework agnostic core that powers TanStack Query",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/query-persist-client-core/package.json b/packages/query-persist-client-core/package.json
index e507d5642bf..696fe287312 100644
--- a/packages/query-persist-client-core/package.json
+++ b/packages/query-persist-client-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/query-persist-client-core",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Set of utilities for interacting with persisters, which can save your queryClient for later use",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/query-sync-storage-persister/package.json b/packages/query-sync-storage-persister/package.json
index b4ee109b4fe..643d53bdf59 100644
--- a/packages/query-sync-storage-persister/package.json
+++ b/packages/query-sync-storage-persister/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/query-sync-storage-persister",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "A persister for synchronous storages, to be used with TanStack/Query",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/react-query-devtools/package.json b/packages/react-query-devtools/package.json
index 4856d2cd01c..f312a9f667a 100644
--- a/packages/react-query-devtools/package.json
+++ b/packages/react-query-devtools/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/react-query-devtools",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Developer tools to interact with and visualize the TanStack/react-query cache",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/react-query-next-experimental/package.json b/packages/react-query-next-experimental/package.json
index d0483c32a6f..d2608efe555 100644
--- a/packages/react-query-next-experimental/package.json
+++ b/packages/react-query-next-experimental/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/react-query-next-experimental",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Hydration utils for React Query in the NextJs app directory",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/react-query-persist-client/package.json b/packages/react-query-persist-client/package.json
index 4105542ace9..447827781ef 100644
--- a/packages/react-query-persist-client/package.json
+++ b/packages/react-query-persist-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/react-query-persist-client",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "React bindings to work with persisters in TanStack/react-query",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/react-query/package.json b/packages/react-query/package.json
index 047af612651..4cd341d5d36 100644
--- a/packages/react-query/package.json
+++ b/packages/react-query/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/react-query",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Hooks for managing, caching and syncing asynchronous and remote data in React",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/solid-query-devtools/package.json b/packages/solid-query-devtools/package.json
index 7b81e7a3dc4..ceef8580672 100644
--- a/packages/solid-query-devtools/package.json
+++ b/packages/solid-query-devtools/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/solid-query-devtools",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Developer tools to interact with and visualize the TanStack/solid-query Query cache",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/solid-query-persist-client/package.json b/packages/solid-query-persist-client/package.json
index cf54aa33a11..d6b003c9e20 100644
--- a/packages/solid-query-persist-client/package.json
+++ b/packages/solid-query-persist-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/solid-query-persist-client",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Solid.js bindings to work with persisters in TanStack/solid-query",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/solid-query/package.json b/packages/solid-query/package.json
index 1e05152aa7a..f1fde52827d 100644
--- a/packages/solid-query/package.json
+++ b/packages/solid-query/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/solid-query",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Primitives for managing, caching and syncing asynchronous and remote data in Solid",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/svelte-query-devtools/package.json b/packages/svelte-query-devtools/package.json
index d5a22023dc2..626c6a0f174 100644
--- a/packages/svelte-query-devtools/package.json
+++ b/packages/svelte-query-devtools/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/svelte-query-devtools",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Developer tools to interact with and visualize the TanStack/svelte-query cache",
"author": "Lachlan Collins",
"license": "MIT",
diff --git a/packages/svelte-query-persist-client/package.json b/packages/svelte-query-persist-client/package.json
index 149ff9068a1..fab8781e7ae 100644
--- a/packages/svelte-query-persist-client/package.json
+++ b/packages/svelte-query-persist-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/svelte-query-persist-client",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Svelte bindings to work with persisters in TanStack/svelte-query",
"author": "Lachlan Collins",
"license": "MIT",
diff --git a/packages/svelte-query/package.json b/packages/svelte-query/package.json
index d24c4033fc4..702634608f9 100644
--- a/packages/svelte-query/package.json
+++ b/packages/svelte-query/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/svelte-query",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Primitives for managing, caching and syncing asynchronous and remote data in Svelte",
"author": "Lachlan Collins",
"license": "MIT",
diff --git a/packages/vue-query-devtools/package.json b/packages/vue-query-devtools/package.json
index 3945630ac6b..7ec8c421789 100644
--- a/packages/vue-query-devtools/package.json
+++ b/packages/vue-query-devtools/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/vue-query-devtools",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Developer tools to interact with and visualize the TanStack/vue-query cache",
"author": "tannerlinsley",
"license": "MIT",
diff --git a/packages/vue-query/package.json b/packages/vue-query/package.json
index e26c2470656..45a43c70fa7 100644
--- a/packages/vue-query/package.json
+++ b/packages/vue-query/package.json
@@ -1,6 +1,6 @@
{
"name": "@tanstack/vue-query",
- "version": "5.73.3",
+ "version": "5.74.0",
"description": "Hooks for managing, caching and syncing asynchronous and remote data in Vue",
"author": "Damian Osipiuk",
"license": "MIT",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b68c154480f..c961b7bd5e3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -159,10 +159,10 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-experimental
@@ -202,10 +202,10 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-experimental
@@ -232,6 +232,55 @@ importers:
specifier: 5.8.3
version: 5.8.3
+ examples/angular/basic-persister:
+ dependencies:
+ '@angular/common':
+ specifier: ^19.2.4
+ version: 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
+ '@angular/compiler':
+ specifier: ^19.2.4
+ version: 19.2.4
+ '@angular/core':
+ specifier: ^19.2.4
+ version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
+ '@angular/platform-browser':
+ specifier: ^19.2.4
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ '@angular/platform-browser-dynamic':
+ specifier: ^19.2.4
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ '@tanstack/angular-query-experimental':
+ specifier: workspace:*
+ version: link:../../../packages/angular-query-experimental
+ '@tanstack/angular-query-persist-client':
+ specifier: ^5.62.7
+ version: link:../../../packages/angular-persist-query-client
+ '@tanstack/query-sync-storage-persister':
+ specifier: workspace:*
+ version: link:../../../packages/query-sync-storage-persister
+ rxjs:
+ specifier: ^7.8.2
+ version: 7.8.2
+ tslib:
+ specifier: ^2.8.1
+ version: 2.8.1
+ zone.js:
+ specifier: ^0.15.0
+ version: 0.15.0
+ devDependencies:
+ '@angular/build':
+ specifier: ^19.2.5
+ version: 19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.3)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1)
+ '@angular/cli':
+ specifier: ^19.2.5
+ version: 19.2.5(@types/node@22.14.1)(chokidar@4.0.3)
+ '@angular/compiler-cli':
+ specifier: ^19.2.4
+ version: 19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3)
+ typescript:
+ specifier: 5.8.3
+ version: 5.8.3
+
examples/angular/devtools-panel:
dependencies:
'@angular/common':
@@ -245,13 +294,13 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@angular/router':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
'@tanstack/angular-query-devtools-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-devtools-experimental
@@ -294,10 +343,10 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-experimental
@@ -337,13 +386,13 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/forms':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-experimental
@@ -383,10 +432,10 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-experimental
@@ -426,13 +475,13 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@angular/router':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-experimental
@@ -472,13 +521,13 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@angular/router':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-experimental
@@ -518,13 +567,13 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/forms':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-experimental
@@ -564,10 +613,10 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../../packages/angular-query-experimental
@@ -1978,10 +2027,10 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../../packages/angular-query-experimental
@@ -2220,6 +2269,43 @@ importers:
specifier: ^2.2.8
version: 2.2.8(typescript@5.8.3)
+ packages/angular-persist-query-client:
+ dependencies:
+ '@angular/common':
+ specifier: '>=16.0.0'
+ version: 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
+ '@tanstack/query-persist-client-core':
+ specifier: workspace:*
+ version: link:../query-persist-client-core
+ devDependencies:
+ '@angular/compiler':
+ specifier: ^19.2.4
+ version: 19.2.4
+ '@angular/core':
+ specifier: ^19.2.4
+ version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
+ '@angular/platform-browser':
+ specifier: ^19.2.4
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ '@angular/platform-browser-dynamic':
+ specifier: ^19.2.4
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ '@tanstack/angular-query-experimental':
+ specifier: workspace:*
+ version: link:../angular-query-experimental
+ '@testing-library/angular':
+ specifier: ^17.3.2
+ version: 17.3.7(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/router@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2))(@testing-library/dom@10.4.0)
+ '@testing-library/dom':
+ specifier: ^10.4.0
+ version: 10.4.0
+ eslint-plugin-jsdoc:
+ specifier: ^50.5.0
+ version: 50.5.0(eslint@9.15.0(jiti@2.4.2))
+ npm-run-all2:
+ specifier: ^5.0.0
+ version: 5.0.2
+
packages/angular-query-devtools-experimental:
dependencies:
'@angular/common':
@@ -2234,7 +2320,7 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
'@tanstack/angular-query-experimental':
specifier: workspace:*
version: link:../angular-query-experimental
@@ -2265,10 +2351,10 @@ importers:
version: 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
'@angular/platform-browser':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ version: 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
'@angular/platform-browser-dynamic':
specifier: ^19.2.4
- version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
+ version: 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))
eslint-plugin-jsdoc:
specifier: ^50.5.0
version: 50.5.0(eslint@9.15.0(jiti@2.4.2))
@@ -2838,6 +2924,12 @@ packages:
resolution: {integrity: sha512-gfWnbwDOuKyRZK0biVyiNIhV6kmI1VmHg1LLbJm3QK6jDL0JgXD0NudgL8ILl5Ksd1sJOwQAuzTLM5iPfB3hDA==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
+ '@angular/animations@19.2.4':
+ resolution: {integrity: sha512-aoVgPGaB/M9OLGt9rMMYd8V9VNzVEFQHKpyuEl4FDBoeuIaFJcXFTfwY3+L5Ew6wcIErKH67rRYJsKv8r5Ou8w==}
+ engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0}
+ peerDependencies:
+ '@angular/core': 19.2.4
+
'@angular/build@19.2.5':
resolution: {integrity: sha512-WtgdBHxFVMtbLzEYf1dYJqtld282aXxEbefsRi3RZWnLya8qO33bKMxpcd0V2iLIuIc1v/sUXPIzbWLO10mvTg==}
engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
@@ -6620,6 +6712,16 @@ packages:
resolution: {integrity: sha512-l4RonnJM8gOLeyzThSEd/ZTDhrMGQGm9ZdXtmoLPF17L6Z6neJkNmfYSvVXPPUpL9aQOVncAR0OWDgZgsxIjFw==}
engines: {node: '>=12'}
+ '@testing-library/angular@17.3.7':
+ resolution: {integrity: sha512-99Wf/06CCyBP3rmIu+WacUTGZMDKTQR12phe1lUMrknwxHLFUf5jn230L/mW4XIZ+ThDJ/4D6OzhVskbOYDqig==}
+ peerDependencies:
+ '@angular/animations': '>= 17.0.0'
+ '@angular/common': '>= 17.0.0'
+ '@angular/core': '>= 17.0.0'
+ '@angular/platform-browser': '>= 17.0.0'
+ '@angular/router': '>= 17.0.0'
+ '@testing-library/dom': ^10.0.0
+
'@testing-library/dom@10.4.0':
resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
engines: {node: '>=18'}
@@ -16024,6 +16126,11 @@ snapshots:
transitivePeerDependencies:
- chokidar
+ '@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))':
+ dependencies:
+ '@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
+ tslib: 2.8.1
+
'@angular/build@19.2.5(@angular/compiler-cli@19.2.4(@angular/compiler@19.2.4)(typescript@5.8.3))(@angular/compiler@19.2.4)(@types/node@22.14.1)(chokidar@4.0.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(postcss@8.5.2)(tailwindcss@4.0.14)(terser@5.39.0)(typescript@5.8.3)(yaml@2.6.1)':
dependencies:
'@ampproject/remapping': 2.3.0
@@ -16178,33 +16285,35 @@ snapshots:
tslib: 2.8.1
zone.js: 0.15.0
- '@angular/forms@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)':
+ '@angular/forms@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)':
dependencies:
'@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
- '@angular/platform-browser': 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ '@angular/platform-browser': 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/platform-browser-dynamic@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))':
+ '@angular/platform-browser-dynamic@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/compiler@19.2.4)(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))':
dependencies:
'@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/compiler': 19.2.4
'@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
- '@angular/platform-browser': 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ '@angular/platform-browser': 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
tslib: 2.8.1
- '@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))':
+ '@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))':
dependencies:
'@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
tslib: 2.8.1
+ optionalDependencies:
+ '@angular/animations': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
- '@angular/router@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)':
+ '@angular/router@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)':
dependencies:
'@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
'@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
- '@angular/platform-browser': 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ '@angular/platform-browser': 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
rxjs: 7.8.2
tslib: 2.8.1
@@ -20405,6 +20514,16 @@ snapshots:
- tsx
- yaml
+ '@testing-library/angular@17.3.7(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/router@19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2))(@testing-library/dom@10.4.0)':
+ dependencies:
+ '@angular/animations': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ '@angular/common': 19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2)
+ '@angular/core': 19.2.4(rxjs@7.8.2)(zone.js@0.15.0)
+ '@angular/platform-browser': 19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))
+ '@angular/router': 19.2.4(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(@angular/platform-browser@19.2.4(@angular/animations@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(@angular/common@19.2.4(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0))(rxjs@7.8.2))(@angular/core@19.2.4(rxjs@7.8.2)(zone.js@0.15.0)))(rxjs@7.8.2)
+ '@testing-library/dom': 10.4.0
+ tslib: 2.8.1
+
'@testing-library/dom@10.4.0':
dependencies:
'@babel/code-frame': 7.26.2
diff --git a/scripts/publish.js b/scripts/publish.js
index 9bfa1e5a35c..953763b5697 100644
--- a/scripts/publish.js
+++ b/scripts/publish.js
@@ -92,6 +92,11 @@ await publish({
name: '@tanstack/angular-query-experimental',
packageDir: 'packages/angular-query-experimental',
},
+ // publish when angular-query is stable
+ // {
+ // name: '@tanstack/angular-query-persist-client',
+ // packageDir: 'packages/angular-persist-query-client',
+ // },
],
branchConfigs: {
main: {