From e520f1a812eca315af0292f43698cf490d48df0b Mon Sep 17 00:00:00 2001 From: Brenley Dueck Date: Fri, 8 May 2026 16:34:19 -0500 Subject: [PATCH 1/2] Fix createResource initial value inference --- packages/solid/src/reactive/signal.ts | 16 ++++++------ packages/solid/test/resource.type-tests.ts | 30 ++++++++++++++++++++++ 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/packages/solid/src/reactive/signal.ts b/packages/solid/src/reactive/signal.ts index a7b4995ef..9bfc454ae 100644 --- a/packages/solid/src/reactive/signal.ts +++ b/packages/solid/src/reactive/signal.ts @@ -577,19 +577,19 @@ function isPromise(v: any): v is Promise { * * @description https://docs.solidjs.com/reference/basic-reactivity/create-resource */ -export function createResource( - fetcher: ResourceFetcher, - options: InitializedResourceOptions, true> -): InitializedResourceReturn; +export function createResource( + fetcher: (k: true, info: ResourceFetcherInfo) => T | Promise, + options: ResourceOptions & { initialValue: I } +): InitializedResourceReturn; export function createResource( fetcher: ResourceFetcher, options?: ResourceOptions, true> ): ResourceReturn; -export function createResource( +export function createResource( source: ResourceSource, - fetcher: ResourceFetcher, - options: InitializedResourceOptions, S> -): InitializedResourceReturn; + fetcher: (k: S, info: ResourceFetcherInfo) => T | Promise, + options: ResourceOptions & { initialValue: I } +): InitializedResourceReturn; export function createResource( source: ResourceSource, fetcher: ResourceFetcher, diff --git a/packages/solid/test/resource.type-tests.ts b/packages/solid/test/resource.type-tests.ts index 0df3a8e6b..05f9d6389 100644 --- a/packages/solid/test/resource.type-tests.ts +++ b/packages/solid/test/resource.type-tests.ts @@ -56,6 +56,21 @@ type Equals = type Tests = Assert>>; } +// without source +// with fetcher, nullable initialValue +{ + const resourceReturn = createResource( + () => { + return Promise.resolve(1); + }, + { + initialValue: null + } + ); + + type Tests = Assert>>; +} + // without initialValue // with source, fetcher { @@ -105,6 +120,21 @@ type Equals = ); } +// with source, fetcher, nullable initialValue +{ + const resourceReturn = createResource( + () => 1, + () => { + return Promise.resolve(1); + }, + { + initialValue: null + } + ); + + type Tests = Assert>>; +} + /* Resource type tests */ { let resource!: Resource; From 4b1919a3763993f69ba087bbbc81ac0bc6fa5fa2 Mon Sep 17 00:00:00 2001 From: Ryan Carniato Date: Thu, 14 May 2026 22:37:02 -0700 Subject: [PATCH 2/2] Fix createResource initial value inference Update the initial value inference for createResource. --- .changeset/silly-berries-bake.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/silly-berries-bake.md diff --git a/.changeset/silly-berries-bake.md b/.changeset/silly-berries-bake.md new file mode 100644 index 000000000..71fb7a517 --- /dev/null +++ b/.changeset/silly-berries-bake.md @@ -0,0 +1,5 @@ +--- +"solid-js": patch +--- + +Fix createResource initial value inference