It is what bootcamps teach and what most people end up learning.
Do let us know your criteria and we can suggest something more fitting (:
If we're talking about a front-end framework for building modern applications, then we're looking at React, Angular, Vue, Svelte, etc..
JQuery is not even in that conversation, so it doesn't matter how much adoption it has.
We have a shortlist, we are looking at React (with tight control what is installed as additional packages), Angular (we don't have much experience with this framework in house), Oracle JET (JQuery + knockout.js), SAPUI (also JQuery), but the last two frameworks do not have large community, which could possibly mean that in case of issues we are all by ourselves.
There are several companies that provide this service. Socket.dev being the one that we use in the company where I work. We also make use of GitHub Advanced Security and Dependency Bot.
Supply chain security is a problem for any language where your developers rely on third party packages, but agreed that it's particularly challenging with the JS ecosystem.
It is not as trendy and cool as React, but I've used angular a lot in enterprise scenarios and it has a lot going for it: everything you need is already built-in so you do not need to pull in endless crap via NPM that you now need to review/manage/check-in (i.e. you just have one dependency), it is relatively stable without many breaking changes over time (and the tooling typically auto-upgrades your code via `ng upgrade` when there are - no other dependencies need to have their upgrade managed at the same time), it has all the same bells and whistles as everything else (SSR, vite etc), on-page performance is about as good as everything else, it has a mature and accessible Web UI component library, and it is backed by Google who employ people to actually work on it. Just pick Angular v17 or whatever and get stuff done.
Unlike react that relies heavily on loads of third-party frameworks, Angular genuinely is "batteries included" so you can just start building without making endless choices and refactorings whenever your routing framework changes, or there is a security bug in your now-unmaintained form validation library, or that reactivity library is now incompatible with your local storage framework but you can't upgrade because it is incompatible with the current version a11y helper library you need to use for legal compliance reasons, or you need to change your CSS library because the UX folks prefer the padding Vs Tailwinds etc.
They also just launched a fancy new site too: https://angular.dev/
Edit: appears it is a separate dependency in terms of package.json (along with zone.js, but I believe that is due to be removed in future versions). I would not expect any issues with managing dependency diffs between angular and RxJS though.
I'm also seeing more and more Svelte in enterprise app clients. It's still small but growing. I'm curious on how the transition to Svelte 5 will pan out when it comes to adoption.
But the best answer usually is: Whatever your team is more comfortable with or comfortable learning.
Also worth asking the question: does your project even need a frontend framework?
I just scrapped my front end in favor of integration with other platforms: they handle front end, I can focus on orchestrating API calls.
I guess it really depends on your target audience
This, of course, hand-waves a lot of presuppositions and the like, and so cannot be universal, but it is a notion I have.
React or Vue might be around in 15 years, but they'll certainly look vastly different. So unless you have a continues budget to stay up-to-date, with room for the occasional rewrite, your developers will be stuck on "old tech" in a few years.
This may not be a web application, if not: WinForms. WinForms will survive another decade or two and will get no new features so it's a stable development platform.
If you just go with "vanilla" HTML/Javascript, what will inevitably happen is that you will end up with a homebrew internally-developed framework anyways as people save and re-use patterns and start building ad-hoc tools and libraries, and that homebrew framework will inevitably be much worse (and poorly documented) when compared to a well-tested existing open source framework like React or others.
My point is, you're going to pick "the wrong framework" regardless of your choice. There's going to be issues one way or the other.
Perhaps the safest way is something like htmx, where the heavy lifting is done by the backend, you're stuck with that regardless, and if you need to do a fork, then it's a minimum of JavaScript to maintain.
Either way, no one has a crystal ball and trying to make decisions today that account for a problem you might have 10 years down the road feels like a bad way to go about things.
Find a proven well-supported solution that works today. Hence my comment about building on the shoulders of giants by adopting a robust popular open-source framework - so your team can just get to work on what matters to the business, and not worry about re-inventing the wheel on the underlying common tooling that already exists.
Then keep an eye on where things are going and don't fall too far behind on your updates.
Staying on top of your technical health/debt and remaining current as technology evolves should be baked into your strategy anyways, regardless of what tooling you choose.
I think this can apply to any technology decision.
Also, repeating this again… the hype and the marketing from HTMX is something I never thought I would see, it’s worse than vercel’s
consider the following examples:
Bulk Update - https://htmx.org/examples/bulk-update/
Infinite Scroll - https://htmx.org/examples/infinite-scroll/
Active Search - https://htmx.org/examples/active-search/
unless you adopt the tautology that anything you can accomplish with htmx automatically means you didn't need a frontend framework, i think many people would expect that accomplishing UX patterns like this would require a front end framework like react or similar
on the marketing front, i don't know what to say. I try to be funny on twitter, but I've been doing that forever and nobody cared. ThePrimeagen and Fireship Dev started covering htmx in July which was a big bump, and the Github Accelerator helped too. I think i mostly got lucky: right place, right time, right vibe. I don't spend any money on marketing and I don't have any VC or FAANG backing.
the distinction i like between "library" and "framework" is:
* a library you call into
* a framework calls back into code you provide
Using this definition, from a javascript perspective, htmx can be considered a framework, since you are providing "code" (well, html attributes) that it is hooking up event handlers and calling back into.
However, from an HTML perspective, htmx is a library, in that you "call" into the htmx code by "invoking" attributes.
I lean towards calling htmx a library because I have a bias towards the HTML-first interpretation of htmx, but I admit that you could easily justify the other interpretation of htmx.
Not using a framework leads to either spaghetti code, or reinventing your own undocumented, untested, unproven framework.
I recommend to take a look
Naturally it is smaller and newer than React. But innovation is born from the fact people want to make something better than React.
Also don’t really like how I have to go in and update my node version every time a new LTS comes along.
I'm not with Vercel, but my company does extensively use Vercel for many major companies. We have thousands of different Vercel projects for a variety of different companies, none of who are small fish and your experience seems to be the complete opposite of ours?
It's been a dream come true for us.
Vue's ecosystem isn't as big, but it's an established framework. Both React and Vue feel easier to work with than Angular. RxJS is really cool, but also very comprehensive, making it difficult to keep the entire API in mind. At least for me, who only use it casually (used to use it more while at Google.) And on top of that, I have to know the Angular API. Angular used to be great for Material Design, but I nowadays there are MD packages for all systems.
Nuxt is for Vue what Next is for React: SSR and SSG. It adds auto-imports, which is nice. At this point, I see no reason to use Vue alone, since there's always something that can be pre-rendered. Perhaps the frontpage, or help pages. Since Vue itself provides entrypoints for SSR, Nuxt is more of a file-structure based router that just simplifies things. The documentation is a bit sparse on e.g. the difference between a plugin and a module, and I usually resort to navigating their source to understand things. That might not be everyone's cup of tea.
If what you're writing is a web app, there is also Quasar, built on top of Vue. Similar to Nuxt in that it ties in directory structure, build system and MVC framework. It is also a Material Design UI widget library. Their selling point is that you can build mobile apps, and web apps with the same library. I.e. like React Native. I felt it strays too far away from the core simplicity of Vue, unlike Nuxt, but it's no doubt a very capable framework.
Finally, I'm currently using PrimeVue as the UI widget/theming library on top of Vue. It's okay. :\ Switched to it when the Vue Bootstrap project decided to to support Vue 3 (or whatever the situation was.) I haven't come across anything that's actively broken or missing. The companion library PrimeFlex provides layout CSS. Annoyingly, they've decided to close GitHub FRs, and some (far from all) bugs, and just keep track of them internally. Makes it more dificult to communicate, but I don't know their reasoning behind it (they didn't respond when I asked.)