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).
Where are they stating āBlaze is backā? Iāve been trying to do a lot of research on this subject and Iām so confused on whether Blaze is in or out.
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 : )