This table ships an ARIA violation on purpose. A virtualised grid cannot satisfy aria-required-children: role=grid allows row and rowgroup children, a virtual table needs a scroll wrapper between the grid and its rows, and ARIA has no role for one. generic fails, role=presentation fails, aria-owns does not rescue it. The honest move is to fail the check and print the reason on the element rather than flatten the DOM into something that passes and lies about its structure. It also says how many of how many rows it drew, which a measured virtual-table library did not: a hundred row elements for fifty thousand rows, in silence.
import 'overscan'
import 'overscan/overscan.css'
<ov-table
row-height="22"
style="block-size:220px"
></ov-table>import { OvTable } from 'overscan/react'
<OvTable
row-height="22"
style="block-size:220px"
/>import { OvTable } from 'overscan/vue'
<OvTable
row-height="22"
style="block-size:220px"
/>import OvTable from 'overscan/svelte/OvTable.svelte'
<OvTable
row-height="22"
style="block-size:220px"
/>