From 1688c84be9102dc08318c74e4c80bd0b62abcfdd Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Wed, 13 May 2026 00:25:11 +0200 Subject: [PATCH] chore: allow `null` for `pending` in typings (#18201) Closes #18166 We handle all falsy values at runtime already and for basically every other dom attribute also allow `null`, so no reason not to do this. --- .changeset/fine-bushes-marry.md | 5 +++++ packages/svelte/elements.d.ts | 6 +++--- .../svelte/src/internal/client/dom/blocks/boundary.js | 9 ++++----- 3 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 .changeset/fine-bushes-marry.md diff --git a/.changeset/fine-bushes-marry.md b/.changeset/fine-bushes-marry.md new file mode 100644 index 0000000000..ccba53babe --- /dev/null +++ b/.changeset/fine-bushes-marry.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +chore: allow `null` for `pending` in typings diff --git a/packages/svelte/elements.d.ts b/packages/svelte/elements.d.ts index f18b7dea98..daa40635b6 100644 --- a/packages/svelte/elements.d.ts +++ b/packages/svelte/elements.d.ts @@ -2067,9 +2067,9 @@ export interface SvelteHTMLElements { }; 'svelte:head': { [name: string]: any }; 'svelte:boundary': { - onerror?: (error: unknown, reset: () => void) => void; - failed?: import('svelte').Snippet<[error: unknown, reset: () => void]>; - pending?: import('svelte').Snippet; + onerror?: ((error: unknown, reset: () => void) => void) | null | undefined; + failed?: import('svelte').Snippet<[error: unknown, reset: () => void]> | null | undefined; + pending?: import('svelte').Snippet | null | undefined; }; [name: string]: { [name: string]: any }; diff --git a/packages/svelte/src/internal/client/dom/blocks/boundary.js b/packages/svelte/src/internal/client/dom/blocks/boundary.js index 028b82ab92..beaa7d6869 100644 --- a/packages/svelte/src/internal/client/dom/blocks/boundary.js +++ b/packages/svelte/src/internal/client/dom/blocks/boundary.js @@ -35,19 +35,18 @@ import { queue_micro_task } from '../task.js'; import * as e from '../../errors.js'; import * as w from '../../warnings.js'; import { DEV } from 'esm-env'; -import { Batch, current_batch, previous_batch, schedule_effect } from '../../reactivity/batch.js'; +import { Batch, current_batch } from '../../reactivity/batch.js'; import { internal_set, source } from '../../reactivity/sources.js'; import { tag } from '../../dev/tracing.js'; import { createSubscriber } from '../../../../reactivity/create-subscriber.js'; import { create_text } from '../operations.js'; import { defer_effect } from '../../reactivity/utils.js'; -import { set_signal_status } from '../../reactivity/status.js'; /** * @typedef {{ - * onerror?: (error: unknown, reset: () => void) => void; - * failed?: (anchor: Node, error: () => unknown, reset: () => () => void) => void; - * pending?: (anchor: Node) => void; + * onerror?: ((error: unknown, reset: () => void) => void) | null; + * failed?: ((anchor: Node, error: () => unknown, reset: () => () => void) => void) | null; + * pending?: ((anchor: Node) => void) | null; * }} BoundaryProps */