What are web developers looking for in their tech stacks? I think it mainly comes down to two types of performance: You want rapid development and you want the UI to be snappy. Sounds simple enough.
If you don't think managing state is tricky, consider the fact that 80% of all problems in all complex systems are fixed by rebooting.— stuarthalloway (@stuarthalloway) June 1, 2019
In other words, front-end developers will need what they’ve always needed: Technology that makes state management simple and reliable, even in complicated situations.
Often, we mere mortals need to choose JS frameworks to use now, and not after weeks of research. In that case, the default is clear: Go with what you know.
But when we’re disillusioned with what we know, we might take a step back: “Dependency injection makes sense to me, so which DI-based framework delivers the smoothest developer experience?” (If you really grok it, you might do your own DI without using JS frameworks.)
Making a Fully-informed Choice (Good Luck!)
Almost always there are more choices than time to properly choose among them. Even just choosing among Vue.js, React, and Angular is difficult for newcomers: It’s easy to find someone arguing why Vue.js is the best for every project, no questions asked and just as easy to find someone who isn’t quite as convinced, two years after switching from React. Still, others would argue that the best approach is to avoid frameworks altogether or to compose your app from various “micro frontends”. So how do you navigate this, especially if you’re open to choices beyond The Big Three?
Rather than try to be exhaustive, we’ve assembled a taste of various client-side approaches that professional developers in the Toptal network have had experience within a JS context: AMP, Svelte, Cycle.js, Mithril, Hyperapp, Preact, and Aurelia.
Front-end Framework Popularity and Critical Mass
It’s always difficult to obtain reliable usage data, but these projects are all firmly-established enough to be practical alternatives. It’s true that in a professional context, you want to make it easy enough to hire someone with appropriate experience to maintain or extend your code. This carries considerable weight, especially with project managers.
But a solid counterpoint to this thinking is that maintainability isn’t necessarily about popularity. The game is always changing, and it’s more important to produce code that future developers can understand, even if they’re not specialized in its particular dependencies. Three years from now, Angular developers won’t be waiting around to work on your legacy project, after all—they will have shifted their focus by then as well, even if it’s only to newer architectures within the Angular world.
Some of our authors assume outright that the alternatives they cover here will never become “the next big thing.” The hope there, instead, is that their existence provokes the most popular JS frameworks to adopt their best features. They would answer our title question: To be brutally honest, maybe not. Nonetheless, as with any technological alternatives, professional developers can learn a lot from exploring them.
Also, you never know—some of these approaches are learning from each other. Vasiliy Ruzanov details in our main article how the Elm Architecture is finding its way into front-end development via Hyperapp. One Mithril JS developer celebrated that the new Svelte JS basically has Mithril JS streams; as Justen Robertson describes for us, streams are also key to the architecture of Cycle.js.
Maybe you end up using these modern JS frameworks and other front-end technologies for a serious project. Or maybe you experiment with them and decide to stay mainstream. Either way, our hope is that in our front-end roundup, you’ll at least discover something inspiring—something that helps you see web development in a new way. You’ll find our front-end framework comparison comes complete with an apples-to-apples companion demo for each of the technologies we cover. Enjoy!
Understanding the basics
Preact is faster than React, most of the time. In some edge cases, it's slower. Meanwhile, its loading time is faster because its bundle size is considerably smaller.
Too many to easily count, and more are created every month. The alternatives we showcase here have all been actively developed for years, but compared to Vue.js, React, and Angular, they're relatively niche.
Vue.js, React, and Angular are the three most widely used JS frameworks, but usage numbers are impossible to determine precisely. Besides, the question itself is ambiguous: Are we counting projects? Their developers? Their end-users? The average daily time their end-users use it?