One million rows
Virtualised rows, and a sort that runs off the game thread.

Where the million goes
Nowhere. The list builds a row when it scrolls into view and gives it back when it leaves, so the widget count follows the window and not the data.
The model holds the values and builds no object per row. That is why this one cannot be written with Set Items.
The busy state

A dispatched sort takes time, so the table has a busy overlay and can block input while it runs. The demo adds fake latency on purpose, to make that state easy to see.
Turn the dispatcher off and the same table sorts inline instead.
Next: Server browser