diff --git a/.changeset/sharp-pumpkins-provide.md b/.changeset/sharp-pumpkins-provide.md new file mode 100644 index 000000000..27b3c4401 --- /dev/null +++ b/.changeset/sharp-pumpkins-provide.md @@ -0,0 +1,5 @@ +--- +"solid-js": patch +--- + +remove weird server resource hack, fix hydrated resource state diff --git a/packages/solid/src/reactive/signal.ts b/packages/solid/src/reactive/signal.ts index e22799f23..31885b0d0 100644 --- a/packages/solid/src/reactive/signal.ts +++ b/packages/solid/src/reactive/signal.ts @@ -698,7 +698,7 @@ export function createResource( pr = p; if ("value" in p) { if ((p as any).status === "success") loadEnd(pr, p.value as T, undefined, lookup); - else loadEnd(pr, undefined, undefined, lookup); + else loadEnd(pr, undefined, castError(p.value), lookup); return p; } scheduled = true; diff --git a/packages/solid/src/server/rendering.ts b/packages/solid/src/server/rendering.ts index 768cc7e47..227ded8ad 100644 --- a/packages/solid/src/server/rendering.ts +++ b/packages/solid/src/server/rendering.ts @@ -333,7 +333,6 @@ export type ResourceOptions = undefined extends T }; const SuspenseContext = createContext(); -let resourceContext: any[] | null = null; export function createResource( fetcher: ResourceFetcher, options?: ResourceOptions @@ -383,7 +382,6 @@ export function createResource( } const read = () => { if (error) throw error; - if (resourceContext && p) resourceContext.push(p!); const resolved = options.ssrLoadFrom !== "initial" && sharedConfig.context!.async && @@ -413,14 +411,7 @@ export function createResource( value = ctx.resources[id].data; return; } - resourceContext = []; const lookup = typeof source === "function" ? (source as () => S)() : source; - if (resourceContext.length) { - p = Promise.all(resourceContext).then(() => - (fetcher as ResourceFetcher)((source as Accessor)(), { value }) - ); - } - resourceContext = null; if (!p) { if (lookup == null || lookup === false) return; p = (fetcher as ResourceFetcher)(lookup, { value });