@raf-query/react 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,10 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.19](https://github.com/KATT/raf-query/compare/0.0.18...0.0.19) (2026-10-12)
4
+
5
+ ### Features
6
+
7
+ * **core:** type the cache's promises as Thenable ([#21](https://github.com/KATT/raf-query/issues/21)) ([c0541b0](https://github.com/KATT/raf-query/commit/c0541b0c14e687f25d47f25fe457e49b135d8c06))
8
+
9
+ ## [0.0.18](https://github.com/KATT/raf-query/compare/0.0.17...0.0.18) (2026-10-12)
10
+
11
+ ### Bug Fixes
12
+
13
+ - **core:** allow undefined query data ([#22](https://github.com/KATT/raf-query/issues/22)) ([9b85e57](https://github.com/KATT/raf-query/commit/9b85e57bf2fed4413cdbc1b49f925cc60dad695f)), references [#20](https://github.com/KATT/raf-query/issues/20)
14
+
3
15
  ## [0.0.17](https://github.com/KATT/raf-query/compare/0.0.16...0.0.17) (2026-10-12)
4
16
 
5
17
  ### Features
6
18
 
7
- * **core:** pause retries while the browser is offline ([#18](https://github.com/KATT/raf-query/issues/18)) ([a25c664](https://github.com/KATT/raf-query/commit/a25c664359fe7248cdc8d91a14d524e37b467c6c))
19
+ - **core:** pause retries while the browser is offline ([#18](https://github.com/KATT/raf-query/issues/18)) ([a25c664](https://github.com/KATT/raf-query/commit/a25c664359fe7248cdc8d91a14d524e37b467c6c))
8
20
 
9
21
  ## [0.0.16](https://github.com/KATT/raf-query/compare/0.0.15...0.0.16) (2026-10-12)
10
22
 
package/README.md CHANGED
@@ -363,6 +363,8 @@ function EditTitle(props: { post: Post }) {
363
363
  | `qc.setData(factory, input, updater)` | Write data directly |
364
364
  | `qc.getData(factory, input)` | Read cached data, or `undefined` |
365
365
 
366
+ Data can be `undefined` when the `queryFn`'s type allows it (`Promise<User | undefined>`); it's cached and reused like any other value, unlike in TanStack Query, where an `undefined` result is an error. So `getData` and an updater's `previous` return `undefined` both with no data and with `undefined` data; `qc.getQuery(factory, input).getState().hasData` tells them apart.
367
+
366
368
  ## SSR and hydration
367
369
 
368
370
  The server's query client streams its cache to the browser's query client as entries settle. Pending queries cross as promises, so the browser resumes the server's request instead of starting a new one. Components never hydrate anything themselves; a handle only needs its key to find the entry.
@@ -572,16 +574,17 @@ In the browser, retries pause while `navigator.onLine` is `false`: after the ret
572
574
  | `CancelledError` | Rejection of a request cancelled by `clear()` or a restart |
573
575
  | `QueryHandle<TFactory>` | Handle type for props |
574
576
  | `EnsuredQueryHandle<TFactory>` | Handle type for props fed by `ensure` |
577
+ | `Thenable<T>` | Promise with `status` / `value` / `reason`, read by `use()` |
575
578
  | `DataOf<TFactory>`, `InputOf<TFactory>` | A factory's data and input types |
576
579
 
577
580
  `@raf-query/react` (plus all of the above):
578
581
 
579
- | Export | Use |
580
- | ------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
581
- | `QueryClientProvider` | Provides a client to the tree |
582
- | `useQueryClient()` | Read the client |
583
- | `useQuery(factory, handle, options?)` | `[Promise<Data>, controls]`; for paged factories `Data` is `{ pages, pageParams }` and controls include paging |
584
- | `useWaterfall(factory, input)` | Start a query during render and return its handle |
582
+ | Export | Use |
583
+ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
584
+ | `QueryClientProvider` | Provides a client to the tree |
585
+ | `useQueryClient()` | Read the client |
586
+ | `useQuery(factory, handle, options?)` | `[Thenable<Data>, controls]`; for paged factories `Data` is `{ pages, pageParams }` and controls include paging |
587
+ | `useWaterfall(factory, input)` | Start a query during render and return its handle |
585
588
 
586
589
  ## Development
587
590
 
@@ -1,4 +1,4 @@
1
- import { DataOf, EnsuredQueryHandle, InputOf, IsPaged, QueryClient, QueryFactory, QueryHandle, QueryKey, QueryObserverOptions } from "@raf-query/core";
1
+ import { DataOf, EnsuredQueryHandle, InputOf, IsPaged, QueryClient, QueryFactory, QueryHandle, QueryKey, QueryObserverOptions, Thenable } from "@raf-query/core";
2
2
  //#region src/use-query.d.ts
3
3
  /** `refetchInterval`, `refetchOnWindowFocus`, `refetchOnReconnect`, `whilePending`. */
4
4
  export type UseQueryOptions = QueryObserverOptions;
@@ -35,7 +35,7 @@ export interface PagingControls {
35
35
  readonly isFetchingPreviousPage: boolean;
36
36
  }
37
37
  export type UseQueryControls<TFactory extends QueryFactory> = IsPaged<TFactory> extends true ? QueryControls<TFactory> & PagingControls : QueryControls<TFactory>;
38
- export type UseQueryResult<TFactory extends QueryFactory> = readonly [promise: Promise<DataOf<TFactory>>, controls: UseQueryControls<TFactory>];
38
+ export type UseQueryResult<TFactory extends QueryFactory> = readonly [promise: Thenable<DataOf<TFactory>>, controls: UseQueryControls<TFactory>];
39
39
  /** {@link useQuery}'s result for a handle from `ensure`. */
40
40
  export type UseEnsuredQueryResult<TFactory extends QueryFactory> = readonly [data: DataOf<TFactory>, controls: UseQueryControls<TFactory>];
41
41
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raf-query/react",
3
- "version": "0.0.17",
3
+ "version": "0.0.19",
4
4
  "description": "React bindings for raf-query, a render-as-you-fetch query library",
5
5
  "keywords": [
6
6
  "query",
@@ -40,7 +40,7 @@
40
40
  "./tanstack-router": "./dist/tanstack-router.mjs"
41
41
  },
42
42
  "dependencies": {
43
- "@raf-query/core": "0.0.17",
43
+ "@raf-query/core": "0.0.19",
44
44
  "effect": "^4.0.1"
45
45
  },
46
46
  "peerDependencies": {