Hello. I need some advice about which direction to move forward. First, a short background:
I am new to web development. I first found React and React Native and decided this was the way to go. While posting a question on a React forum about what else I needed to learn (HTML5, CSS3, Javascript, Node, MongoDB, etc.), someone suggested I check out Meteor. I immediately loved Meteor and particularly liked that it supported React (unknown to me at the time, this was only recently officially supported). Then Meteor announced the switch to React, so I was sure I made the right decision to build a Meteor-React app.
I’ve spent the last couple of months working to learn Meteor-React and build prototype apps, work through tutorials, etc. I’m mostly getting the hang of it now, at least on a basic and functional level. I’ve also purposely been ignoring Blaze (aside from the two initial tutorials I worked through) because 1) I didn’t want to confuse myself with learning two view layers at the same time and 2) it was going away anyhow.
Now Blaze is back.
I’m considering building a Meteor-Blaze app now instead of Meteor-React. The thinking is that all of the reasons for which I originally chose React don’t really apply anymore (I wanted a reactive app—Blaze gives me that; I was going to reuse much of my code with React Native for mobile—Blaze also gives me that).
Also, I don’t think my app will necessarily be better served by React than Blaze (think of the Todos example app, it’s a similar type of app functionally). As long as Blaze has a long life, I think it would be easier to go that route. Three reasons are 1) the Atmosphere ecosystem and all of the awesome packages available for solutions that I might have to reinvent (or find alternatives) if I choose React, 2) Blaze just seems easier to use in many ways, and 3) there are so many examples and tutorials for Meteor based on Blaze but few with React.
I actually love using React, but my feeling is that I could complete my app much more quickly if I just use Blaze. So my question for this fabulous community is “Where should I invest my development time and energy, in Blaze or React?” I really don’t know what to do at this point and I will appreciate any and all insights you are willing to share. This is a part-time hobby for me (I have a full-time completely unrelated job) so I don’t want to waste my valuable time learning the wrong tool (wrong = less appropriate for my situation).
React is the future. The idea “Now Blaze is back.” is only to stop the discontent wildfire from spreading but MDG is pretty clear that Blaze may not be in the long term future*. For example, see the recent post, Reactive GraphQL on where the platform is headed.
If Blaze suddenly takes off, I could see it sticking around for awhile; for now we have “surivival of the JS-fittest” between Blaze, Angular and React but I think we know who the winner is already.
Are you looking for stability and productivity, or the latest features? That’s what it sort of boils down to. Blaze is stable; React has the latest features.
If you love React (or Blaze or Angular or …) and it’s getting the job done, then stick with it. It’s easy to get sidetracked with the abundance of choice these days, but remember the end goal isn’t the technology used (unless you’re building experience) - it’s what you’ve created.
How to start a new meteor app, what to use? Don’t get caught up in the distractions, there will be a tech of the day every coming year Follow the official meteor guide, the topics and patterns are relevant to all those stacks Choose the right tools for the right job. Atmosphere has great forms and tables packages, so a line of business app can benefit from blaze more than it can benefit from react where a game-like interface packed full of “components” may do better off with react mongodb is not a bad database. database programming existed 50 years ago where there was no such thing as acid and developers had to implement those paradigms within the app itself, use those ideas on top of mongodb
My pennies worth: React is the way to go if your app is a bigger/longer-term project (beyond 2016) and you need to be forward looking on the data/back end.
Perhaps crucially => first class npm support and React ecosystem should be factored in against benefits of current atmosphere packages.(No question MDG have made the right call - for now, at least )
I would probably start with Blaze, simply because there are so many existing packages out there that utilize blaze. It’s also very easy to pick up. The great thing about meteor is that you can drop in react wherever you end up wanting to use it, so you can use them side by side pretty easily.
Down the road react may have just as many packages as blaze, but for now blaze is more of “the standard” in my opinion.
I’d start with Blaze. React has a lot of power, but a lot of complexity. Blaze is a very straightforward templating system. Especially if you’ve used anything like handlebars, etc before, it’s much easier and faster to pick up in my experience.
in terms of available packages
Blaze has far more available packages
in terms of maturity
Maturity I’m talking about has nothing to do with age. React is still in ‘implementation’ and ‘experimentation’ phase. Blaze is much more mature (we aren’t talking about Python-level maturity, but you get the idea). Technologies like GraphQL are still being ‘actively developed’.
in terms of simplicity
Blaze is simpler, easier (to start with) imho.
in terms of future
Blaze isn’t going anywhere soon. React may be the future for some people, but it’s not the only future for Meteor.
Every now and then, a new technology that is ‘the future’ emerges and replaces last year’s future, so I do not assume React is the future, Blaze is the past. We still have PHP (serving more than 1/5 of the web?) after all. I would say Blaze is not going anywhere soon.
Understanding blaze is in many ways the same as understanding a lot of the current core features of Meteor, in my opinion. Beyond what Tracker offers, Blaze is pretty much just handlebars with some deeply integrated reactivity, which is really simplistic, again, in my opinion
You won’t fry your brain understanding how it all works I’d try it “for the lols” on a lazy sunday where you’ve got nothing better to do.
I love working in Blaze, as it works best (again again, IMO) with the current way of handling data on the client side. As Meteor will change their data layer, I will probably move to React eventually, or whatever will fit best with the way Meteor will handle data in the future…
Knowing React.js makes you waaay more job candidate worthy. Even if a company isn’t using Meteor stack, they’ll probably be using React in the near future.
Agree that React is a good skillset that is currently very marketable.
It’s a good question but very contentious. Coming from a programming background, I enjoy working with React. The code is well organized, easy to debug, it works great with Meteor and it’s easy to follow especially other people’s code. The learning curve is steeper than Blaze but there is excellent documentation from Facebook. Although, I wish the Meteor Guide had more React.
Blaze has more packages, but there are deprecation concerns and npm is coming to Meteor 1.3. Also, the React community is bigger than the Meteor community and it appears to have a bright future.
Spacebar templates is a good place to start out, it’s stable, user-friendly, helps you from leaking memory, built for tracker etc.
But on a large app you might want to:
run decoupled tests using mocha/karma/wallaby using pure node (fast + reliable)
have a clear way to namespace and swap out components eg. via ES import
maybe leverage larger communities or tooling
If we had Blaze, Tracker and the Spacebars compiler as node modules on npm I might actually choose Blaze - But we don’t, why I’d choose React for components.
Blaze is more fine-grained and smarter about reactive updates - you could end up using both Blaze and React. Spacebars could potentially compile into React or Angular 2 - transitioning your code onto the latest and greatest.
React is the flavour of the day, especially on this forum as you have many freelancers who need to hone their skills and be marketable (not to just on Meteor).
We went with Blaze as it is officially-supported and we don’t want / have time to debug the technology stack. Overall our experience was enjoyable, very efficient (it works and works well) and we can feel the power of the fully-integrated stack. you won’t get that yet with React yet, you will fiddle a lot with it. Most of the packages on atmosphere that are dependent on the view side are designed for Blaze (otherwise they typically mention explicitly in the name that they support React).
I predict that both platforms will coexist for a long time. The templating approach of spacebars / Blaze is as old as the web (practically).
Came here to say this. If you’re learning web development with the intention of doing it as a full-time gig in the future then a quick job search will give you your answer.
Honestly go with React. Morale goes up. Recruiting is easier. People wanna work with it. And man the path is untrailed in terms of meteor. Workpop has gone with React. We love it, and hope you enjoy it too!
If after few months of learning Meteor you still feel like and call yourself a newbie, then the React environment may change with too fast pace for you.
Personally, I stick to Blaze and don’t plan to switch until Meteor provides similar user experience as for Blaze.
We’re in a similar boat to you @ptken and the comments above probably sum it up best for us. After a lot of thought, our conclusions are:
There’s no right answer, do both
Use Blaze for line of business style apps with lots of forms - autoforms etc. give you such a big productivity boost they just can’t be ignored
Do react for the interesting projects; projects that aren’t just text boxes and labels
Potentially even do React and Blaze in the same project
In six months there will be React versions of all the big packages, reconsider again at that point. That will also have given React a chance to settle down a bit, it’s still evolving fast at the moment
That will also give us time to see if Mantra becomes the new norm
Write our Blaze code in a React way, go for small templates and keep them as dumb as possible, that will make it easier to swap them to React later.
I think it should be clear that if you pick Blaze now, you very probably will have to switch to React 1~2 years down the road, assuming you’re still working on the project.
Also for people discounting React as “flavour of the day”, “experimental”, or “changing too fast”, I would like to remind them that it’s been used in production for a couple years now by major companies (including of course Facebook). I doubt it’s going anywhere : )