I still love Blaze but I’d always prefer Vue 3 over React tbh
If you look at tools like Next.js, they position themselves as “The React Framework for the Web”. I’m thinking that Meteor would be much better off marketing themselves as a React app engine than anything general.
This has been attempted in the past, see Add Meteor.js as popular alternative to Next.js in the new React docs
They basically denied
I will probably be with React for the foreseeable future, but I want to look into Solid as that one seems to be a bit more aligned with what Meteor is doing. Plus on their community team there is a member of the Meteor community.
These are problems that if addressed could provide more reasons for people to pick Meteor in the first place
What would you consider modern infrastructure and features that Blaze currently misses? That would be a great input for the next major efforts in Blaze.
I had a similar experience and made the switch from Blaze to Svelte some time ago. Svelte and Meteor make a great pair.
Svelte is probably most in line with the ethos of Meteor of making the complicated simple and its focus on productivity. I would encourage anyone who isn’t married to React to take a look. I wrote about my experience with the switch here:
Having said that, one of the great things about Meteor is that you can plug in whatever UI framework you like.
I think this cuts both ways. If you position yourself as a React app engine, you go head to head with Next.js, Remix, etc. and make people who aren’t fans of React feeling that Meteor isn’t for them. You also sign yourself up to support features like React Server Components which come with a complexity that most apps don’t actually need.
IMO, Meteor’s marketing should be focused on simplicity and productivity. Bring your own UI framework. Get things done.
Just to throw in some general response to the comments;
I think in every way, modern front-end tools are superior to Blaze:
- For HTML templating, you have more advanced stuff where you can just call your JS variables instead of defining a helper for everything
- For CSS, you have automatic scoping of CSS to your component, which is a huge assist on larger codebases
- For JS, you can write everything inside of one function and have it be accessible to all your HTML and CSS
Considering modern frameworks can do it all in one file, with much less code, and run faster, it’s just superior. And if Blaze tries to get to that level, it will lose its simplicity.
Let’s not forget stuff like HMR, SSR, code splitting, etc, that works great in all other frameworks.
Blaze is great for beginner devs who have an HTML/CSS/jquery backgrounds but that world is long gone now.
There’s a ton of Next.js-type frameworks now, but they are all built around the SSR model for content websites. Meteor can differentiate against all of them as a real-time SPA engine, which is a fundamentally different way to build on web.
Trying to cater to everyone is a common business mistake, in the end, you end up catering to nobody, which is where Meteor is right now. Nobody knows why they would use it. There’s nothing on the website that seems unique.
In my opinion the benefits that differentiate Meteor from other frameworks is the data layer (minimongo, pub/sub, RPC) coupled with the accounts system. None of said features require in any material way a tight integration with the view layer. Quite the opposite. Meteor is able to provide its features to any view layer with not very much code at all. Instead of trying to pick sides in the never ending view layer wars (and then dealing with the consequences thereof), Meteor would do well by just staying agnostic on the matter.
I agree, the tight coupling of mongo/pubsub/rpc/accounts is a big part of what makes Meteor so great, you can essentially run a mongodb query on the client, everything is abstracted down to the database, and its automatically real-time. That’s an insane pipeline.
However, looking at the website, you would never know about it.
Positioning it as a React framework would just help get more people onboard, it’s like >90% of market anyway… capturing a bit of that would be a lot bigger than Meteor’s marketshare today probably
That’s exactly why Blaze could be killer. Instead of being backend agnostic like every other UI tool it has the benefit of being built by the Meteor team. They control the whole stack, that means they can make any little optimization that they can think of. It’s like Apples ecosystem, on paper every product is underpowered relative to their windows and android counterparts, but their ability to optimize across the entire stack allows them to launch products that outperform (in some cases) their competitors.
[quote=“msavin, post:17, topic:61996”]
- For HTML templating, you have more advanced stuff where you can just call your JS much cleaner. I want as little logic as possible in my UI. What ends up happening in react as display values get more complex is you put the computation into a function. That’s just a helper.
Personal preference. Scoped styles are nice in the margins when this component really needs to look different from every other component but are a pain when you actually want to use the cascade. Reading through the updated CSS learning guides, CUBE CSS, and Every Layout has drastically changed how I write CSS over the past few years. My stylesheets have become smaller, easier to reason about, and more modular. I find myself reaching for tools like Svelte’s scoped styles and Tailwind much less.
Fair. Can’t argue against this other than my previous point of I hate JSX
This isn’t specific to React and could be added to Blaze
Agreed which is exactly the kind of baggage Blaze doesn’t have. It only has to work with Meteor
Meteor has no chance to compete with the resources of React, Svelte, etc.
Plus it’s a solved problem. Apple isn’t building an Instagram clone just because it’s popular on their platform. They even tried to embrace Google Maps and YouTube on the iPhone, before competition heated up.
Maybe 10 years ago, this could have been a good move, but today there’s too many good options, and it would be impossible to steal marketshare from them.
If Angular is dead now, what chance does Blaze really have…
If Meteor never existed, and we wanted to build something like it, I don’t think anyone would try to build it the way it is today.
The front-end tooling is just too good these days, and Meteor would have to go through a lot to catch up to it. The other alternative, if not to position as a React framework, would be to let anyone add it to their front-end framework. Otherwise, from a business perspective, it’s just too far behind and now too late to game.
To address this I think Blaze can be really forward thinking. It would be nice to see it adopt the declarative shadow DOM spec. This would allow every Blaze component to be a native web component that’s rendered on the server. It would open up some new possibilities for how Meteor could be used. For example, one could easily embed a Meteor application inside of a separate running application by sharing the application web component.
Oh and dump jQuery.
I don’t think Meteor would need to do a lot to catch up though. A lot of the tooling around React exists because React itself is so complex to use for anything but the most trivial UI cases. These are problems Meteor doesn’t have.
Also Apple invests billions into its Photo app and integrating social photo sharing throughout the the entire system. The instagram clone is iOS
Here’s the translation:
"If I need to give an example, the first things that come to mind are:
2 way binding
.- Being able to perform simple JavaScript operations, e.g.,
{{#if foo || joo}}
. - Having an event mechanism for templates (like Svelte’s
createEventDispatcher
).
When I think about it in general, aside from the first point I mentioned, most of these have alternatives, which actually creates the structure of Blaze.js itself. This makes it feel a bit cumbersome."
That’s not quite what I said about coupling.
But more generally, we seem to have very different views on the subject. I fail to see how limiting Meteor to a specific view library helps in any shape or form improve technologies that are inherently separate from the view layer in the first place (there are only a handful of APIs that connect the data layer to the view, and that’s a good thing). Creating tight couplings between different technologies is mostly a bad thing in my book and should only be done if there really are significant technical benefits to be gained (this is seldom the case). But creating tight couplings between different technologies for no technical merits, but rather just for some hypothetical marketing purposes, is in my opinion just…not a good way to run a technical project, let’s put it like that in polite language. Let’s just agree to disagree here.
Well, let’s put it differently…
If Next.js started supporting 5+ view layers and diluted their marketing … would that be good for them? or is it better to double down on their strong alliance with the React community?
I use both Blaze and React in the same project - for simple stuff Blaze is fantastic. If I need to build out something more sophisticated I use React - of course you can do amazing things with Blaze but I’m just more comfortable with React once the requirement reaches a certain point of complexity.
I think the idea of keeping the marketing, at least, simple and focused has some huge benefits. Easier to keep docs up to date, easier for folks to write tutorials, easier to help people on the forums, etc.
That said, I think it’s a mistake to look at the 90% (ish) market share of React and to say that in order to boost adoption Meteor needs to be the go-to React framework. The problem is that when the market is already 90% React, that means that 90% of developers already have a React framework they’re using productively. Telling them yeah, but Meteor is a better React platform is not a compelling enough story to induce a switch.
On the other hand, if developers are tired of React and are looking for a new front end framework, then they’ve already decided to eat at least some of the switching costs and are already in a mood to try out new things. That’s a much better environment in which to tell a “you should try Meteor” story.
The everyone-is-switching-to-React wave has passed, and it’s too late to try to surf it.
So what’s the next wave? I don’t know, and I’m looking forward to hearing what you guys think, but for now I think it’s important to agree that it’s not React.
Hmm, I’m still not sure haha - I think the web front-end paradigm has reached its peak, whether you do React or something else, these things are more of less the same now, and pretty perfect at their jobs
IMO, the next great evolution of these tools would be some kind cross-platform UI engine, but that’s going to be a struggle, every attempt so far has been a flop
If you look at Remix.js, it came out as a direct competitor to Next.js and looking at @remix-run/router
compared to next
, they are both doing around 6m downloads per week. If Meteor can do that in a year haha…
Meteor is very different from Remix/Next/SvelteKit/etc which can give it an advantage. If the dev already knows React, Node and MongoDB, it’s not much for them to try it for an app.