Poor performance on Largest Contentful Paint

There are certain metrics where Discourse, due to its architecture – it is a JavaScript app that runs in the browser, not static HTML like the web in 1996 – won’t be as fast. A simple, static HTML page will always beat Discourse in first load time because it’s not an app. However, every subsequent page load will be dramatically faster once the JavaScript app is loaded, because we pull down just the data necessary to display, not the entire “web page” on each load.

:thinking: Think of it this way: are you measuring time to load in your smartphone apps starting with the time to first download and install the app from the app store? Or are you measuring time to load once the app is already installed on your phone?

There are some things we can do to improve this, but fundamentally that’s the tradeoff. We are optimized for repeat visitors but not for one-and-done, a single page view never to be seen again for the rest of your life. If you expect your audience to be primarily one-and-done, single page view people, then honestly you should not choose Discourse. It is the wrong tool for that job. :hammer_and_wrench:

(This is also complicated by the fact that Android devices are 3x slower than iPhones at JavaScript, and Google has everything invested in Android and has to pretend that iPhones don’t exist, thus they always test on slow Android devices, because frankly that’s the only kind of Android device that exists. Don’t believe me? Test for yourself at Speedometer 2.0. I wish it wasn’t true.. but it is.)