Could JS Frameworks ignite a revolution in front-end development?

Rethinking Your Front-End Framework Choices

When selecting technologies for their projects, what do web developers prioritize? It often boils down to two performance aspects: efficient development speed and a responsive user interface. This sounds straightforward on the surface.

However, the underlying assumption is a system that operates reliably. Beneath the surface of JavaScript frameworks and technologies lie choices between different paradigms: functional programming versus object-oriented programming, MVC versus MVP versus MVVM, and many more. Proponents of various approaches champion their chosen paradigms as the best way to avoid common pitfalls that front-end development presents.

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 essence, front-end developers continue to require the same fundamental tool: technology that simplifies and ensures reliable state management, even in highly complex scenarios.

We, as developers, often need to make immediate decisions about which JS frameworks to use, without the luxury of weeks of research. In such situations, the obvious choice is to stick with what you already know.

However, when our current knowledge starts to feel limiting, it’s time to step back and reassess: “Dependency injection makes sense to me, so which DI-based framework provides the most seamless developer experience?” (If you truly understand the concept, you could even implement your own DI without relying on JS frameworks.)

Alternatively, you might find that your familiar tech stacks no longer meet performance requirements. If you’re aiming to support the expanding user base with machines less powerful than what the average developer uses, you might be wondering, “Which front-end JavaScript frameworks provide a sufficiently fast user experience on less powerful hardware?”

Making Informed Choices (Easier Said Than Done)

In most cases, there are too many options and not enough time to thoroughly evaluate each one. Even choosing between Vue.js, React, and Angular can be overwhelming for newcomers: It’s easy to find passionate advocates for Vue.js as the ideal solution for every project, without exception](https://medium.com/@vyaron/point-of-vue-angular-is-doomed-react-is-ok-we-deserve-better-fb60652a8cb4) and equally easy to find someone who isn’t quite as convinced, two years after switching from React. On the other hand, some developers argue that [the optimal approach is to abandon frameworks entirely or to construct applications from various “micro frontends.” So, how do you navigate this landscape, especially when you’re open to exploring options beyond the dominant three?

Instead of attempting to cover every possibility, we’ve curated a selection of client-side approaches that seasoned developers in the Toptal network have experience with within a JS context: AMP, Svelte, Cycle.js, Mithril, Hyperapp, Preact, and Aurelia.

Initially, I asked each author involved in our main article’s comparison table whether they believed the JS framework they covered lived up to its goals. Ultimately, I omitted this because every single response was a resounding yes! If these frameworks are so effective, why aren’t they more widely adopted?

The Influence of Popularity and Critical Mass

Obtaining reliable usage data is always a challenge, but all of the projects discussed here are well-established and offer viable alternatives. It’s understandable that in a professional setting, there’s a preference for technologies that make it easier to find developers with relevant experience for maintenance and further development. This is a significant consideration, especially for project managers.

However, a strong counterargument is that maintainability doesn’t rely solely on popularity. The technological landscape constantly evolves, and the key is to write code that future developers can easily understand, even if they aren’t experts in the specific dependencies used. After all, three years from now, Angular developers won’t be eagerly waiting to work on your legacy project—they will have moved on to newer technologies and architectures, even if it’s just within the Angular ecosystem.

Some of the authors contributing to this article believe that the alternatives discussed here will never achieve mainstream adoption. Instead, they hope that these alternatives will inspire the most popular JS frameworks to incorporate their best features. Their answer to our title question might be: To be completely frank, perhaps not. Nevertheless, as with any technological exploration, professional developers can gain valuable insights from examining these alternatives.

It’s also worth noting that these approaches aren’t static; some of them are learning from each other. In our main article, Vasiliy Ruzanov explains how the Elm Architecture is making its way into front-end development through Hyperapp. One Mithril JS developer expressed excitement that the new Svelte JS basically has Mithril JS streams; as Justen Robertson points out, streams are also fundamental to the architecture of Cycle.js.

The smaller development communities associated with alternative JavaScript technologies may be able to adapt more quickly compared to the communities supporting mainstream JS frameworks. Will this adaptability lead to increased adoption? Only time will tell.

Learning from AMP, Svelte, Cycle.js, Mithril, Hyperapp, Preact, and Aurelia

You might decide to use these modern JS frameworks and front-end technologies for a substantial project, or you might experiment with them and ultimately choose to remain within the mainstream. In either case, our goal with this front-end roundup is to offer you something insightful—a new perspective on web development. Our front-end framework comparison includes a consistent companion demo for each of the technologies we cover. We hope you find it informative and enjoyable!

Licensed under CC BY-NC-SA 4.0