Just over a week ago I thought I'd ask why HN itself seems so incredibly fast:
https://news.ycombinator.com/item?id=9990630
I got some pretty interesting replies (and someone from CloudFlare even checked in at one point!).
I argue that if you want to make a site that's impressive and memorable, make something that loads like "∗clic∗--kaching!" At least in my case, you'll get an immediate "Wait. What? Wow." out of me. :P
It can be done. I thought there was some secret sauce somewhere, for HN. There isn't. The pages here are, on average, <25KB - one person showed that my post, replies and all, was only 12K (compressed). That's quite impressive, and it's what makes all the difference.
Obviously, though, there is a tradeoff: you have to be really, really good at JS to get frameworkless code right, fast, without much mental effort. For prototyping and rapid development (and let's face it, rapid is the new "normal", sadly, and has been for quite a while now), using a framework is obviously the wise choice.
Looking at the problem from a slightly different angle, if you take the .NET-vs-WinAPI problem of a couple years ago, .NET slowly gained adoption and is pretty much standard now, and most devs use it for everything.
And yet you can build dependancyless ~30KB GUI applications with the standard API.
One of the big things that made .NET standard was the fact that it became a standard part of Windows. That hiked adoption up quick: suddenly people didn't have to download a 300MB support package.
But you can't "install" a support framework into the browser such that it stays put. A JS framework has to download every single time. This is so obvious it's almost a nonconsideration but I think it's worth remembering, because current mobile browser caches can decide to make themselves less than 200KB. 200KB.
I think that a "precious trusted cache" would revolutionize a lot of things, but looking at the current state of things, I doubt such a system is likely to be implemented. :(
For larger projects, or wherever you have an opportunity to slow down a little, I say strongly consider rolling your own code, so you can control everything and cut down on bloat.
If you want to go even deeper, here are a couple more links: https://news.ycombinator.com/item?id=9791606 (from a reply to my post), https://news.ycombinator.com/item?id=6825557 (from a reply in #9791606)