In my experience from using react apps on 2g/3g… I would much prefer the html. Usually, you get the content in 1-2 seconds with html, where you could end up with a react apps that never loads at all. Why does it never load? Because enterprising engineers usually invent their own timeouts that make no sense when you are dealing with bytes-per-second. There’s already a one minute timeout on the socket, and it knows if it is still receiving where your application has no sense of progress.

Please don’t reinvent things.

The issue is that if you have to make more requests overall, there is a non-negligible rtt for each of those requests, which on slow connections can add up very fast

Try my demo [1] on 3G slow. It works fine.

Turns out brotli compression does wonders.

[1] https://checkboxes.andersmurphy.com

on real 3g, seems to load in about 5s. As good as hackernews imho

Yup for initial load. But the subsequent interactions which each require a network hop and send down the whole page are lightening fast.

Because once that connection is primed you are off to the races.