Maybe your server is busy because of all the HN attention, but I am worried about the future of the web when these kinds of things are becoming normal and acceptable.
Maybe your server is busy because of all the HN attention, but I am worried about the future of the web when these kinds of things are becoming normal and acceptable.
They're considered to be faster but they look so sluggish at loading, I wonder why this is considered acceptable when it's clearly not.
Is it a fundamental issue with this kind of frameworks, or is it due to a bad usage by developers?
From my perspective, a good React site is rendered on the server in most scenarios. Meaning the first page you get is pure html and 100% complete. The JS will load and link everything up, but it's nothing that you'll know. If you click a link before the js loads, it should point to a real url and give you full html again. When the js does finally load, json can be used to load new pages, modifying the content with react, etc.
This is also nice because web crawlers (all of them) get simple html, and if a user has JS turned off, they still a lot of your content, perhaps missing some of your UX.
I've implemented a couple content heavy sites like this and it's a nice UX. Performs just as you expect in most scenarios. The only complaint i think that could be valid, is that there is, indeed, a fair amount of JS, which on mobile devices is definitely worse off than if it were just static content.
This is my benchmark for frontend frameworks for the future. Can i compile it, efficiently, on the server before giving it to the user?
You get a crazy amount of Flash of Content and things being resized and ordered around during page load. Quite distracting tbh.
HTTP/2 with server push would help, but I'm hosting on dreamhost shared hosting and they're not HTTP/2 enabled yet. I am using the bundled build option in Polymer which concatenates most of the components, but there's still a lot of assets to serve.
Chrome service worker is working though! Load the site in chrome, then go into airplane mode and hit refresh. (not chrome for iOS though, that's WebKit underneath)