diff --git a/.changeset/lifecycle-on-initial-render-deferred.md b/.changeset/lifecycle-on-initial-render-deferred.md new file mode 100644 index 000000000..17a600cc5 --- /dev/null +++ b/.changeset/lifecycle-on-initial-render-deferred.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/lifecycle": minor +--- + +Add `onInitialRender` and `onDeferred` primitives for post-hydration execution and idle/delayed scheduling with owner preservation. diff --git a/packages/lifecycle/src/index.ts b/packages/lifecycle/src/index.ts index 630002f8b..e97c9fa46 100644 --- a/packages/lifecycle/src/index.ts +++ b/packages/lifecycle/src/index.ts @@ -2,24 +2,15 @@ import { type Accessor, createSignal, getListener, + getOwner, onCleanup, onMount, + runWithOwner, sharedConfig, + type Owner, } from "solid-js"; import { isServer } from "solid-js/web"; -/** - * @returns a signal accessor that will return a `false` initially, - * and then update to `true` once the owner is mounted. - * @example - * ```tsx - * let ref: HTMLElement - * const isMounted = createIsMounted(); - * const windowWidth = createMemo(() => isMounted() ? ref.offsetWidth : 0) - *