This question has probably been asked before, but I wanted to start a new thread since I’m curious about current preferences and community trends.
If you were to start a new project with Meteor today, which front-end technology would you choose?
This question has probably been asked before, but I wanted to start a new thread since I’m curious about current preferences and community trends.
If you were to start a new project with Meteor today, which front-end technology would you choose?
“React” is only 5 characters long while a post must have at least 20. This is why this question might work best as a poll.
You are right. Is there a survey structure in the forum for this? I created a simple survey link. https://forms.gle/fwDDz7zBqR4gG8xR7
Results: https://docs.google.com/spreadsheets/d/1W5BhqFdPIObiWvM9qpXj8IDYw63pIK6-5ghWmCHph2Y/edit?usp=sharing
React, for sure.
There are some other frameworks that edge out on performance, one notable one being Famous UI, which was built around CSS and GPU optimizations.
But the composability that React introduced means real reusability; which means that components get better with time. And the critical mass of use that Facebook gave, means that code assistants and LLMs can auto-generate great React code.
React.
The svelte generator is 2 major versions behind, otherwise I’d probably pick svelte.
edit: If blaze had first-class support, I might pick blaze. This is based on the fact that when I’m working in rails, I just use erb rather than react. I almost always pick the “path of least deviation” when working - staying as close to the default as possible helps a lot when looking for help and helping other people.
I gave to admit I would use Vue although I still love Blaze. Vue has the advantage of being close to Blaze while not forcing you to wrap all logic in hooks.
Tailwind integration is perfect and state management is not a headache. Plus there are many similar component libraries and composable out there as you know from react.
Finally, I like Vue being a pure community effort and not having a big corpo behind it.
Was a Blaze diehard. Switched to React and never looking back.
Did build stuff in Svelte but still like React more
React is the king now. Not because it runs faster or consumes less memory, it’s because it’s too popular, and we feed AI lots of React’s content.
React or Preact with Signals for state management.
Svelte.
It’s a win-win for enjoyment and performance. I think it’s also the one that aligns most closely with Meteor’s ethos.
All modern ones (svelte, vue, solid) have converged to using signals so the choice becomes largely what syntax you like.
React is legacy at this point. Maybe they’ll move to signals as well or maybe those that like the react-like syntax will move to solid. Here’s a video that highlights the difference between the approaches, aka vdom diffing (react) vs fine-grained signals (svelte, vue, solid): https://youtu.be/YQT26cnCKqo?si=-X0E1MrFyTQd3Z4_
I don’t think the AI training data argument holds water. It’s demonstrably false, here’s one example: @bholmes.dev on Bluesky
More broadly, kowtowing to training set data would mean no more innovation. I don’t think that’s likely and would be a sad world.
Yeah, Meteor’s lack of support for package.json exports is holding this back. zodern opened a PR here. I hope that will be resolved shortly by either that PR or the ongoing work to integrate a modern bundler, otherwise you can use meteor-vite
, see ceigey’s repo here.
chatGPT thinks (hopefully not hallucinating) there are indications that React may implement signals at some future time.
React. Why? Because I know it, I work efficiently with it, and it has enough inertia to not vanish overnight. The reason is not because it is better than Solid or Vue or Svelte, etc. I don’t know enough to make that judgement.
React, My project originally used Vue, but I paid a high cost to migrate to React. The main reason is that React is better suited for complex applications, whereas Vue quickly becomes extremely difficult to maintain as complexity increases.
I’m in the Vue camp myself.
SolidJS for me. I find it close to but better than Blaze; see Meteor + SolidJS demo - #9 by edemaine
(though some features like dev mode aren’t working thanks to the lack of package.json exports feature in Meteor)
I hear Svelte is basically Solid now, though, so it’s probably a good choice too.
Don’t use React. React is one of the most outdated frameworks these days, and does not align with modern standards. Choosing React today will leave your code base in a poor state for the future.
React code ships as CommonJS for goodness sakes (we’ve been on ES modules for a long time already), and React Hooks is a minefield of issues and bugs that even experienced devs will get blown up in, and that beginners don’t stand a chance against.
Modern frameworks that you should check out are those that are aligned with modern web standards, such as custom element libraries like Lit and Lume Element, and frameworks that fully embrace the modern paradigm of Signals and Effects, such as Solid.js, Vue, Angular, Svelte, Lume Element, and more. These frameworks lead to code that is less buggy, less clunky, and easier to understand, organize, refactor, and maintain.
Oh, and if you don’t know! Meteor’s ReactiveVar
and Tracker.autorun
are the same as Signals and Effects in other newer frameworks, just named differently.
For example Tracker.autorun
is the same as createEffect
in Solid.js, and ReactiveVar
is the same as createSignal
in Solid.js.
Choosing any framework that is closely aligned with Signals and Effects means you are choosing a framework that aligns well with Meteor’s own paradigm.
Think about that for a second.
Using something else like React only adds another (unideal) paradigm to the mix, and meshing them together is not a good idea, it is going to make your code uglier and more scrappy.
The integration of Solid.js in Meteor (or Lume Element which is written with Solid.js) leads to a much better fit for the mental models Meteor already has (signals and effects), and the package that @edemaine created for Meteor’s reactivity to work in Solid, and vice versa, leads to a much more cohesive experience than anything that can be achieved by cramming React into Meteor.
The only reason Meteor unfortunately has React in its first tutorial is Meteor’s hope to attract people due to popularity, while tossing merit aside (no offense). React is a bad choice on its own, and using React in Meteor is considerably worse.