PR #15379. While a list loads, its placeholder table now uses the column widths the real table had last time, so the columns no longer jump sideways when the rows arrive.
Branch dev server reading the stage data, 1440 wide. Each list was opened twice by clicking into it, with the server held for 6 seconds so the loading table could be measured. Visit 1 starts with nothing remembered, which is exactly what main does today. Visit 2 starts after a full page load, so the widths came back from the tab's own storage. Header widths in pixels:
| List | Visit | Loading table | Loaded table | |
|---|---|---|---|---|
| Prospects | 1: nothing remembered (= main) | 144, 144, 144, 144, 144, 144, 144, 111 | 163, 220, 114, 132, 140, 114, 114, 123 | shifts |
| Prospects | 2: second visit | 163, 220, 114, 132, 140, 114, 114, 123 | 163, 220, 114, 132, 140, 114, 114, 123 | matches |
| Tenants | 1: nothing remembered (= main) | 175, 175, 175, 175, 175, 175, 69 | 171, 171, 171, 171, 171, 171, 90 | shifts |
| Tenants | 2: second visit | 171, 171, 171, 171, 171, 171, 90 | 171, 171, 171, 171, 171, 171, 90 | matches |
Round 1, Prospects. On the second visit the placeholder bars line up under the same column edges as the loaded rows. The Company column keeps the narrow width its compact icon header uses, and the word "Company" in the placeholder header still fits without being cut off. No other part of the page moves.
Round 2, Tenants. The loading and loaded tables are identical, and nothing else on the page changes. Stage's tenant columns come out nearly even once loaded, so the change here is small (the last column moves from 69 to 90).
The very first visit in a new tab still spreads the columns evenly. A full reload of a list page still draws its first frame evenly before the remembered widths apply. The placeholder header says "Company" where the loaded table shows a building icon.