Caching metadata before the first frame
Vixeo's library grid flashed empty on a cold start over a slow link, which reads as a bug even though the data arrives a moment later. The cause was ordering: the cached index was read after the first frame rather than before it.
The fix is not a spinner. A spinner is what you add when you have accepted the wait. Reading the cache synchronously before the first paint removes the wait entirely for anyone who has opened the app before, and the network response then updates in place.