Row count limits — history
Summary
v1 — f32 coordinates
Render positions (canvas coordinates, scroll_y, row_top) were f32.
f32 has 23 mantissa bits, representing integers exactly up to 2^24 = 16,777,216.
Beyond that, the epsilon grows:
Practical limit v1: ~300,000 rows.
v2 — usize indices, f64 coordinates
Coordinates moved to f64 (scroll precision is more than sufficient at this scale),
but row indices remained usize.
On wasm32, usize is 32-bit, so usize::MAX = 4,294,967,295 (~4.3 billion).
This ceiling was the bottleneck, not floating-point precision.
On x86-64, usize is 64-bit so there is no limit natively — but wasm32 code
exceeded usize::MAX silently (overflow or panic depending on the build).
Practical limit v2: ~4.3 billion rows on wasm32.
v3 — u64 indices, f64 coordinates (2026-03-16)
Row indices (row_count, CellCoord.row, get_cell, row_top,
visible_rows) moved from usize to u64. Column indices remain
usize (never more than a few hundred).
The ceiling is no longer the index type but scroll_y: f64 precision.
f64 has 52 mantissa bits, representing integers exactly up to 2^53.
Concrete test (2026-03-16, row_height = 28)
Recommended maximum limit: 9_007_199_254_740_99_u64 (~9 x 10^14 rows).
Values in examples
basic-web:10_000_000_000_u64(10 billion — comfortable)basic-leptos:9_007_199_254_740_99_u64(maximum tested limit)