HACKER Q&A
📣 nnurmanov

What framework/tools to use to build front end in 2023?


We are planning a migration of our legacy system, what do you recommend to build an enterprise front end?


  👤 sbarre Accepted Answer ✓
I mean this is the obvious answer but React has the largest market share I would think, and so if you are a large enterprise that deals with employee churn and you think you will struggle to find and hire good talent, React is the framework/library that is the most common, and therefore likely the easiest to hire for and maintain over time.

It is what bootcamps teach and what most people end up learning.


👤 mattlondon
React is probably what many would recommend, but since you said enterprise then please do consider Angular.

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/


👤 hu3
I've seen a client successfully modernize a legacy web app from jQuery to HTMX.

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.


👤 Raed667
Use what your developers are familiar with.

Also worth asking the question: does your project even need a frontend framework?


👤 mrweasel
HTML and JavaScript. If this is truly and enterprise project, whatever you pick of the current crop of JavaScript frameworks will be long gone by the time your application will get a new refresh or seizes to be.

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.


👤 miohtama
Svelte/SvelteKit is currently killing it in increasing popularity. It is easy to learn and fixes design patterns around some of React's hard to learn and long to type patterns like state management and reduction, and integrated server-side rendering.

I recommend to take a look

https://svelte.dev/

Naturally it is smaller and newer than React. But innovation is born from the fact people want to make something better than React.


👤 walthamstow
We're a six man back end/data eng Python team tasked with building a small public-facing webapp. We went with React, specifically create-react-app, because it was the fastest way forward and has a lot of community/network effect. As others have pointed out, it's relatively easy to hire for.

👤 ianpurton

👤 nathants

👤 moltar
Plain React with Vite. Don’t need much more than that.

👤 sohamgovande
Vercel's website (vercel.com) is just MIND-BLOWING. Like if y'all know their develop.preview.ship. animation, it was nuts. How do people even think of such things!

👤 tommiegannert
I'm for Vue/Nuxt. While reading React code is fine, I found it easy to shoot myself in the foot (causing circular effects or getting no reactivity) in a way Vue didn't. Vue feels more explicit. I like React's TSX for embedding HTML, but Vue's splitting of model and view appeals to me. I'm torn on that one.

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.)

* https://vuejs.org/

* https://nuxt.com/

* https://vitejs.dev/

* https://primevue.org/

* https://primeflex.org/

* https://quasar.dev/