Virtualize Without Breaking the Product
Decide what you would build from the brief alone. Everything below it is available, but the exercise stops working if you open it first.
A 20,000-row grid with inline editing must become usable. Implement virtualization and keep every existing behaviour working.
Rendering a large overscan — several hundred rows above and below — because it eliminates the blank flashes during fast scrolling and makes find-in-page work "well enough" for nearby rows. The window is now large enough that the per-row cost is back: every style invalidation traverses hundreds of rows, memory climbs, and the scroll performance the change was made for degrades on the devices that needed it most. Worse, find-in-page now works sometimes, which is harder for users than never — it finds the match that happens to be within the overscan and reports "not found" for one that is fifty rows further down.