React has been holding its forte as the front-end view framework of choice. This is evident from its popularity in terms of the downloads it has on the NPM registry. Prior to React, AngularJS was popular but has since faded away. But it may come as a surprise that at eBay and similar companies, we don’t use these mainstream frameworks. This is due to the need for extreme performance – in terms of tiny bundle sizes, runtime efficiency & render criteria. React is however blurring the gap with its new compiler & react server components. While the React world is overjoyed with these new tools, these aren’t really new.

Post 2018, Svelte took the web landscape by storm with its creator Rich Harris’s talk – the virtual DOM is pure overhead. Svelte has since gained a lot of traction, backed by its approach of not relying on the virtual DOM, making its runtime tiny and efficient. However, the server side performance was leaving much to be desired. During the same period, many frameworks like Marko began re-writing their compilers to use the Babel AST, which had become a standard of sorts in the industry, facilitating plugin authors to be able to provide integrations with ease. During this time, Angular saw resurgence once more as it branded itself from AngularJS to Angular, with the incremental DOM. Marko had until then been using the MorphDOM but resorted to using the Virtual DOM to achieve multiple compilation outputs, separate for the server and browser, to target for faster load time and runtime efficiency. Also in 2024, Angular announced it was merging with Wiz (Google’s internal framework that is used to build hyper performant apps in Google)

However, 2022 was the year of Solid, with its creator Ryan Carniato introducing fine-grained reactivity to mainstream javascript view frameworks. Until then, reactivity was exclusive to frameworks like RxJS that were used for events and data streams, tied to niche use cases. But Solid, made reactivity mainstream, offering both the benefits – great performance with a tiny runtime. Following Solid’s popularity, Svelte is implementing reactivity via its Runes compiler aided by the efforts of Rich Harris and Domenic Gannaway – the author of InfernoJS. Vue is another popular framework that has since resorted to reactivity.

So far, these solutions solved for the client side, with single page applications being the norm. Only enterprise applications that targeted performance continued its reliance on multi-page application architecture. But by this time, Marko JS was smoking benchmarks on the server with being the only framework that supported native streaming renders, progressive rendering – in-order, & out-of-order flushing, all with the use of a compiler. At this time, frameworks began realizing that server was the final frontier that had to be conquered & began following Marko’s approach of using a compiler. But Marko had conquered this space. However, it did have one piece missing – solving for Hydration when rendering from the server. This is where Qwik (by Misko Hevery of Angular fame) solved hydration via the islands architecture and resumability, allowing for instant interactivity and nearly getting rid of the uncanny valley – the time associated with post page load after server render where the page wasn’t interactive.

Finally, Marko will be launching Marko 6 soon, with its runtime Fluurt (Fast Lean Unified Update & Render Target) that includes full isomorphic progressive rendering, server side streaming, along with a fully reactive graph, offering instant interactivity via the islands architecture & resumability – targeting for performance and efficiency, making building performant and snappy apps a delight.

Linkedin
Disclaimer

Views expressed above are the author's own.

END OF ARTICLE