diff --git a/.changeset/odd-tigers-remember.md b/.changeset/odd-tigers-remember.md new file mode 100644 index 000000000..dc713a33c --- /dev/null +++ b/.changeset/odd-tigers-remember.md @@ -0,0 +1,5 @@ +--- +"@preact/signals": patch +--- + +Fix prefresh HMR not working with `useSignal`. diff --git a/packages/preact/src/index.ts b/packages/preact/src/index.ts index 466b957ae..58b59ca11 100644 --- a/packages/preact/src/index.ts +++ b/packages/preact/src/index.ts @@ -1,5 +1,5 @@ import { options, Component, isValidElement, Fragment } from "preact"; -import { useRef, useMemo, useEffect } from "preact/hooks"; +import { useRef, useMemo, useEffect, useState } from "preact/hooks"; import { signal, computed, @@ -387,10 +387,9 @@ Component.prototype.shouldComponentUpdate = function ( export function useSignal(value: T, options?: SignalOptions): Signal; export function useSignal(): Signal; export function useSignal(value?: T, options?: SignalOptions) { - return useMemo( - () => signal(value, options as SignalOptions), - [] - ); + return useState(() => + signal(value, options as SignalOptions) + )[0]; } export function useComputed(compute: () => T, options?: SignalOptions) {