Skip to content

Commit 3242051

Browse files
matej21claude
andcommitted
fix(repeater): merge block render/form selections into jsxSelection
Rolldown DCE strips calls whose results are unused, even when passed to external functions. Merge results into jsxSelection which is consumed later, making the entire chain non-eliminable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent fd95094 commit 3242051

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

packages/bindx-repeater/src/components/BlockRepeater.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,10 @@ blockRepeaterWithSelection.getSelection = (
245245
const jsxSelection = collectNested(syntheticChildren)
246246

247247
// Call block render/form functions so the collector proxy records field accesses.
248-
// Results are passed to collectNested to prevent bundler dead-code elimination.
248+
// Collect JSX selections from block render/form output and merge into jsxSelection.
249249
for (const blockDef of Object.values(props.blocks) as BlockDefinition[]) {
250-
if (blockDef.render) collectNested(blockDef.render(collectorEntity as EntityAccessor<object>))
251-
if (blockDef.form) collectNested(blockDef.form(collectorEntity as EntityAccessor<object>))
250+
if (blockDef.render) mergeSelections(jsxSelection, collectNested(blockDef.render(collectorEntity as EntityAccessor<object>)))
251+
if (blockDef.form) mergeSelections(jsxSelection, collectNested(blockDef.form(collectorEntity as EntityAccessor<object>)))
252252
}
253253

254254
const nestedSelection = scope.toSelectionMeta()

0 commit comments

Comments
 (0)