I have six app UI clones (Airbnb, Threads, Luma, Suno, Tiimo, Structured) built with React Native + Expo and published as static web demos. On a good connection they open instantly. On a throttled 40 KB/s connection, some of them showed nothing for 40+ seconds , and one showed a "Font loading failed" error instead of the app.
Three changes fixed it. None of them is specific to my apps, so they should work for any Expo web export.
Demos: https://migrant620.github.io/ Β· Source (MIT): https://github.com/migrant620
How I measured
Chrome DevTools can throttle the network, and so can a headless browser through the DevTools protocol:
await client . send ( ' Network.emulateNetworkConditions ' , { offline : false , latency : 150 , // ms downloadThroughput : 40 * 1024 , // bytes/s uploadThroughput : 40 * 1024 , });
Enter fullscreen mode
Exit fullscreen mode
I recorded two numbers per app: when the first text appears, and when all web fonts have finished loading. Cache disabled, two runs each.
1.β¦