Cached item keys lose their identity

virtual-core 3.17.9 · vanilla core fixture

Message 9 starts at the top. Click Trim oldest + append once. Expected: Message 9 stays in place, and every cached key matches its data ID.

anchorTo: "end", followOnAppend: false

Cached keys different from data IDs: 0 (expected: 0)

Actual scrollTop: px

The same getItemKey callback reads the current message array before and after the update. The array is replaced, then setOptions receives the new options. Only the virtual range (including overscan) is rendered; the first and last item keys are not read by this fixture before the update. Native CSS scroll anchoring is disabled.

This uses Virtualizer directly with the SDK's standard element observers and scrolling function. It calls _willUpdate after committing the DOM and performs no custom scroll compensation.

Window-follow reproduction · Cache fixture source