diff --git a/.changeset/gentle-dryers-leave.md b/.changeset/gentle-dryers-leave.md new file mode 100644 index 00000000000..a73ca8238e3 --- /dev/null +++ b/.changeset/gentle-dryers-leave.md @@ -0,0 +1,6 @@ +--- +"@gradio/dataframe": patch +"gradio": patch +--- + +fix:Fix stack overflow when hidden tab has dataframe diff --git a/js/dataframe/shared/tanstack/table.svelte.ts b/js/dataframe/shared/tanstack/table.svelte.ts index ad02cc3ef01..324ef8a4223 100644 --- a/js/dataframe/shared/tanstack/table.svelte.ts +++ b/js/dataframe/shared/tanstack/table.svelte.ts @@ -75,9 +75,11 @@ export function createSvelteTable( function updateOptions(): void { table.setOptions((prev) => { - // mergeObjects creates lazy getters — `state` is NOT read here, - // only when TanStack accesses the `state` property later. - return mergeObjects(prev, options, { + // Eagerly resolve prev into a plain object to prevent + // unbounded getter chains. Each setOptions call wraps prev + // in a new mergeObjects layer; without flattening, property + // lookups traverse every previous layer, causing stack overflow. + return mergeObjects({ ...prev }, options, { state: mergeObjects(state, options.state || {}), onStateChange: (updater: any) => { if (updater instanceof Function) state = updater(state);