Introduction
2024 is upon us, and we try to plan for the new year and think of the things we could do or learn in the upcoming year. There is no better time to look for frameworks to learn about in the new year, go through their features, and find out what makes them special. We looked at the 2023 JS Rising Stars list for guidance and tried to be as objective as possible. For each of the featured frameworks, we highlighted their biggest pros so you can understand where they excel and what could make you try it out yourself!
HTMX - back to the basics 🚲
Who is this for:
- you want to write less JavaScript
- you want simpler, Hypermedia-centric code
It would be a sin not to start with something that prides itself on being the front-end library of peace. HTMX skyrocketed in popularity in 2023, gaining most of its GitHub stars during the past year. HTMX is not your average JS framework. If you work in HTMX, you will spend most of your time in the world of hypermedia, looking at web development from a completely different pair of eyes as compared to our usual JS-heavy outlook on modern web development. HTMX leverages the power of the concept of HATEOAS (Hypermedia as the Engine of Application State), enabling developers to access browser features directly from HTML, instead of using Javascript.
It is also proof that you can achieve popularity and recognition by posting amazing memes and having word-of-mouth as your primary source of marketing. Not only that, but you can also become a CEO of HTMX as well! It hooked many developers to try this approach of building websites and re-think their current practices. All this makes 2024 exciting for the future of this library.
Wasp - full-stack, everything out-of-the-box 🚀
Who is this for:
- you want to ship full-stack apps fast
- you want to keep using React and Node.js in a great all-in-one solution, without manually picking every part of the stack
- you want a free saas template for React & Node.js with everything pre-configured - Open SaaS
For those who want the tool to have full control over their stack simply and easily, look no further! Wasp is an opinionated full-stack framework that leverages its compiler for a fast and easy way to create a database, backend, and frontend for your app. It uses React, Node.js, and Prisma, which are some of the most well-known tools that full-stack web developers are using.
The core of Wasp is the main.wasp file, which serves as the one-stop shop for most of your needs. In there, you can define:
- Full-stack Authentication
- Database schema
- Async jobs, with no extra infrastructure
- Simple & flexible deployment
- Full-stack typesafety
- E-mail sending (Sendgrid, MailGun, SMTP server, ...)
- and more…
The coolest thing? After your Wasp app goes through the compiler step, the output is a standard React + Vite frontend, Node.js backend and PostgreSQL database. From there, you can easily deploy everything to, for example, Fly.io with a single command.
Although some people could consider Wasp’s opinionated stance a negative thing, it is the driver behind Wasp’s numerous full-stack features. With Wasp, starting a full-stack project for a single developer or a small team is much easier, especially if you use one of the pre-made templates or OpenSaaS as your SaaS starter. Because the core of the project is well-defined, it is very easy to get started with a project and potentially, make your own full-stack SaaS in a couple of days!
What’s also cool is the fact that most of the pre-existing knowledge of web developers for most of them still applies here, because the technologies that Wasp uses are established.
Solid.js - first class reactivity ↔️
Who is this for:
- if you want highly reactive code
- existing React devs who want to try something performant with low learning curve for them
Solid.js is a very performant web framework that shares some similarities with React. For example, both use JSX, utilizing the function-based approach to components, but instead of using Virtual DOM, it converts your code to vanilla JS. Still, it is more famous for its approach to fine-grained reactivity by utilizing signals, memos, and effects. Still, the signal is the simplest and most known primitive of Solid. They contain value along with their getter and setter functions, allowing the framework to observe and update the changes as needed in the exact location in the DOM, unlike React, which re-renders the whole component.
Solid.js not only uses JSX but also enhances it as well. It offers some cool new features, such as the Show component, which can enable conditional rendering of JSX elements, and For components to allow easier iteration over collections in JSX. Another important thing is that it also has its meta-framework called Solid Start (currently in beta) that enables users to render the application in different ways, according to their preferences with file-based routing, actions, API routes, and middleware among other features.
Astro - the king of static sites 👑
Who is this for:
- if you want an excellent tool for blogs, CMS-heavy sites
- a framework that can integrate other libraries and frameworks
If you built a content-driven website in 2023, there is a big chance that you used Astro as your framework of choice to make it happen! Astro is another framework that uses a different architectural concept to stand out. For Astro, it is Islands architecture. In the context of Astro, an island is any interactive UI component on the page, standing out from a sea of static content. A page can have any number of islands since they run in isolation from each other, but they can also share state and communicate with each other, which is very useful.
Another interesting thing about Astro is that their approach enables users to employ different frontend frameworks, such as React, Vue, Solid to craft their website. Because of this, it is easy for developers to build sites on their current knowledge and also leverage their existing components that could be integrated into the Astro website.
Svelte - simple and effective 🎯
Who is this for:
- you want an easy-to-learn framework
- simple to write and fast code execution
Svelte is another framework that is trying to simplify and speed up web development by being as straightforward and beginner-friendly as possible. It is a very simple framework to learn since to have a reactive property, you have to declare it and use it in your HTML template. Whenever the value updates in the Javascript programmatically (for example, through triggering the onClick event button), it will reflect on the UI and vice-versa.
The next step in Svelte will be the introduction of runes. Runes will be Svelte’s way of handling reactivity, to enable easier handling of larger apps. Akin to Solid.js’s signals, runes offer a direct way of tapping into the app’s reactive state by using function-like statements. In contrast to the current way of Svelte’s way of working, they will allow users to precisely define which parts of the whole script are reactive so that components are more performant. Akin to Solid and Solid Start, Svelte also has its framework, called SvelteKit. SvelteKit offers a fast way for users to spin up their Svelte apps powered by Vite. It offers router, build optimizations, different ways of rendering and pre-rendering, image optimization, and more.
Qwik - really quick 🚤
Who is this for:
- if you want a highly performant web app
- existing React devs who want to try something performant with a low learning curve
Our last, but not least framework that is in this list is Qwik. Qwik is another framework that utilizes JSX and functional components, akin to what Solid.js does, to provide a familiar environment for React-based devs to get up to speed as quickly as possible. Staying true to its name, Qwik’s main focus is achieving the highest possible performance and speed of execution of your application.
Qwik achieves its speed by utilizing a concept called resumability. In short, resumability is based on the idea of pausing execution on the server and resuming execution on the client without having to replay and download all of the application logic. This behavior is achieved by delaying the execution and download of JavaScript code unless it is necessary to handle user interaction, which is an excellent thing. It enables both increasing the overall speed and lowering the amount of bandwidth to the absolute minimum resulting in near-instant loading.
Conclusions
The biggest common denominator between all those frameworks and libraries we have mentioned is familiarity. Everyone seeks to approach potential new developers in a way that builds on their current knowledge, instead of doing something completely new, which is a very cool concept.
Of course, there can be many more libraries and frameworks here that weren’t mentioned in the full article, but deserve at least a shout-out. For example, we have Angular, which, besides a new logo and docs, also includes signals and a new control flow. There is also Remix which is adding support for Vite, React Server Components, and new Remix SPA mode. In the end, we can’t forget Next.js, which became somewhat of a default for React developers in the last couple of years, paving the way with new React features.
Top comments (43)
Nice article, I was mostly curious about htmx because I keep hearing about it -> I wish though that article had more code examples, maybe one code example for each framework!
fixed :)
Ha ok nice!
Are you cousins or something?
almost - twin brothers! :)
I'm the older one though.
I've got you covered with htmx code examples here, especially in the "Common Patterns" section: mvolkmann.github.io/blog/topics/#/...
I'd love to see some complex HTMX web sites to try out for my self. I just feel there is a cut off point where it starts making less sense to use HTMX than full-blown JS frameworks.
See my htmx blog post here, especially in the "Common Patterns" section: mvolkmann.github.io/blog/topics/#/...
For the point about Solid.js compiling to vanilla JS, isn't that true for all frameworks?
Whether it's using a virtual DOM or not, isn't it still just running JavaScript code in the browser? (excluding WebAssembly, which I don't think comes into play here)
Good point. I mainly wanted to emphasise the fact that Svelte doesn't use virtual DOM unlike React.
Exciting stuff. I went deep into porting my app to Qwik (City), Solid (Start) and Svelte (Kit) this past year, and they're all great until I eventually hit a snag or friction due to their respective ecosystems not yet being fully developed, and the common factor for me was that I was less productive than on React (despite much preferring the DX of all three to React). Solid would be my choice of the three, but Start hasn't even shipped yet and is still churning. Qwik is the most innovative and has the best DX IMO, but it doesn't seem to be catching on (e.g., still no official tanstack support), and some of it's design choices complicate 3P component development (e.g., github.com/chakra-ui/zag/discussio...). Svelte? Well, I just much prefer JSX, and it's still baking (Runes forthcoming, and zero interest in refactoring my code, even if Svelte appealed to me, which it does not). I've since gone back to React (Remix), and will wait it out another year or two before making the switch, if at all.
The big part of appeal of React is the ecosystem that developed around it mainly because of its longevity. Over time, ecosystem of other frameworks will hopefully catch up.
Very true. Who will be the next React and gain critical mass is anybody's guess right now, which is why I've opted to wait it out despite my natural inclination to want to jump on board with latest shiny new thing.
Great article Boris. It's interesting how you think Svelte is easy to learn - we used it in one project, and since it was implemented, I regretted it 🤦♂️ to me, it seems very unintuitive and complex
Thank you! I pointed out that Svelte is easy to learn because it is intuitive to get into it after learning basic HTML/CSS/JS since the structure is similar.
What created issues for you? Was it that the project was too complex, or something else?
Maybe it's due to the fact that we used it to create a VSC extension. Not sure how it works on a regular website.
Great post! Thank you! 👏
Remember that since HTMX does things in a bit of a new way it may have accessibility concerns that have not yet been tackled. The other solutions are more proven on this regard.
That means if your project has any possibility for legal a11y requirements then you have to pay extra careful attention whether you can use the tool.
Note that even the more proven solutions may still be a bit lacking, such as client side routers do have issues in frameworks like Next so they are not fully accessible by default. Issues are like focus being in the wrong place, or page not scrolling to top when client side routing happens. However you will never have this issue if you rely on traditional HTML page load.
That is really useful information. a11y must be taken as one of the things to consider when choosing your framework as well.
Cool post bro! Thx for sharing
Can see why all of those were picked, but I'll just stick with getting more proficient in Nuxt.
I'm super excited to see where HTMX goes. I've used it for a few Django projects before, and I absolutely love it.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.