Meteor+Blaze or Meteor+React?

I am trying to build an application where I will be taking survey from users and the content of the form will be rendered dynamically based on the answers provided by the users.

I developed this application last year using angular and Node JS but I was bit dissatisfied with angular asynchronicity and promise complexity.

I heard about meteor and its magic to create application in short span of time.
I have also read about the awesomeness of React in rendering dynamic content fast.
However blaze is working good as well.

Now my question is should I use Meteor+Blaze for my application or should I use Meteor+ React.
I am expecting 500 users for my application and 10 concurrent users.
Also my application is going to be non-complex application with dynamic form rendering.
I am not expecting any kind of real time computations other than feeding user’s responses to database and then displaying form questions.

Also I want to use some CSS framework as well like Foundation framework or Pure CSS framework and apply some animations so will Blaze be good enough to work with these frameworks or React?

Can someone advice me in suggesting a good meteor technology Stack for my application?

Thanks.

Blaze is going to be perfectly fine with that. If it’s such a small app, you can write it faster with it than with React.

I can recommend Autoform package with either Bootstrap or Semantic UI for CSS. Semantic UI has pretty nice forms with validation, so I’d go this way personally. I’m not sure if there’s Foundation plugin for Autoform.

Autoform will take full care of your forms and provide the data to the backend by itself, but if you want to do it raw, it’s easy too.

1 Like

One advantage of React is that you can easily get help on StackOverflow or nearly any other dev group, since React is so widely used compared to Blaze. IMO React is better as far as keeping your code and components organized, but that might be subjective. Plus, you get all the nifty React-specific tools such as React Storybook, Jest, as well as all the tons of npm packages built for React which can decrease your development time. There’s just a richer ecosystem there.

Just my two cents. :slight_smile:

4 Likes

+1 for React. Lots of people use it, I use it, and theres lots of support. It also keeps things nicely organised and its mainly javascript, and returning some html, which is what the component is.

With Blaze+Autoform he won’t need help for this project. He will just write it. I don’t say that React is bad, but for such a project going the React way is imho too much of a bother and he will lose the advantage of having a set of packages that will take care both of his frontend+backend at the same time.

React, without a doubt

+1 for React. Sounds like this is the perfect project to start learning it.

for forms in react, there is https://github.com/vazco/uniforms/ which works very similar to the blaze version, but its imho much easier to extend and customize

5 Likes

That looks like a very nice package. Wish there was Vuejs version. :slight_smile:

Actually, I believe it is worth taking an effort and port it to Vuejs.

How widely is this package used in Meteor+React community? Is it kind of a standard package, like SimpleSchema?

This is the main reason to use react. Also the number of actively maintained open source components eclipses blaze. Unfortunately the majority of blaze packages are abandonware or soon to be abandonware.

Since it sounds like this is a very small and disposable (to an extent) project, if the dev already knows blaze really well and doesn’t know react at all, then go for blaze. If he knows both, go for react. Check out meteor chef’s base repo using react.

1 Like

Personally I do not think Blaze has a future outside of Meteor and development of the package is close to zero. React has way more tracktion, packages, development tools and eco system, so I would pick it above Blaze in any new project.

I wont go into detail about semantics and stuff. Thats partly tast and in my opion irrelavant in the long run. You can perfectly build anything with both, so better focus on the community, adoption and support than the ui-framework itself.

Ok, ok, a little bit more personal opinion: Blaze is easy to get started with, but harder to manage later on. With React you’ll have to invest a bit more, but have less unexpected issues when things get more complicated or if the team gets bigger.

Not trying to start a flame war, just my experience.

3 Likes

I’m a Blaze-only developer so far, but I have to admit that Blaze in fact seems to die out slowly now. A lot of packages are becoming abandonware (like FlowRouter), since many good devs dropped Blaze (or even Meteor) and jumped on the React train (like Arunoda did).

If you’re looking for cool new stuff, you will often find out that it’s only working on the React side of the fence. To be fair, Blaze got some very nice docs recently and I know that there are passionate devs out there who want to bring it to a new level. But honestly, I doubt Blaze will be able to keep up with the drive React has now. Even I am now considering to switch to React.

Having said this: Blaze would definitely be the easier way to build your app. And if you don’t care for the long-term, go for it. But I would not start new projects that aim for long-term support on Blaze any more. Sad to say this, I really love Blaze and its simplicity.

5 Likes

True to a point…

But I just thought it should be mentioned that… Blaze is simple enough that you almost never really need help on it.

Others have said above that this is an advantage to React, but I view this as an advantage to Blaze. Because even someone with no prior knowledge of Blaze or React, will be able to use Blaze with relatively no issues once they understand the single concept of helpers.

I can’t recall a time I’ve needed to solve any major issues with Blaze. It’s so basic, there’s not much assistance needed. Only other thing I can think of having to learn at all aside from the concept of helpers, is the difference between {{ }} and {{{ }}}.

Aside from that, I don’t see anyone having any issues with Blaze they will need assistance on. React on the other hand…

3 Likes

Over-reliance of third party packages can be a double-edged sword. On one hand, you can build your app quicker - but as a downside, you’re at the mercy of the package maintainers. If something breaks, you either have to wait for a fix, or spend time first learning the codebase to some extent, then fixing it yourself. This is why, in my own projects, I try to limit how many packages I use that fall under the category of “handles a large part of the functionality of your app”. Smaller packages such as utility packages or React UI stuff like Chartjs or Slingshot is fine, but I’m wary of ones that supply, for example, an entire admin interface or form-handling (a la AutoForm). There are more moving parts and more things to go wrong.

Also consider the value of adding React to your skill set (for your potential employers and clients). How many job postings mention Blaze vs React? :slight_smile: Not to mention the fairly easy segue from React into React Native!

Last point: I still use some Atmosphere packages for back-end stuff. You can definitely mix React npm packages with Atmosphere/Meteor packages.

IMO React is almost always the best way to go. I don’t think it’s that difficult to pick up. I’m not sure why it’s perceived as more difficult than Blaze… I think it’s just a different way of thinking and structuring your app.

1 Like

Not sure how much it is used yet,
but we use it in two major projects and it works flawless and easy.

Also the maintainers answer quickly on requests and code quality is really good.

(btw. it works with simple-schema 1, 2 and also with graphql-schemas)

2 Likes

And then there are people who keep on building stuff in Blaze and are happy about it… :wink:

Btw, one of the things I have noticed that, since React-way is anti-jQuery way, there are some specific things that are obvious and simple done with jQuery, but might not be achieved easily with React… :-/

And also, with Blaze you can always integrate any pure js or jQuery frontend piece of code, that has been build over the decades before. Though it’s not that directly comparable, but React still have smaller user base than jQuery… :slight_smile:

1 Like

IAgreed - I should mention that Blaze really has no bugs (maybe one really edge case). All development right now on it relates to making things a bit easier for developers. So don’t use that as a measure. I dove into the blaze code a while back for some work and it’s VERY well built. Outstanding!

We add really cool and complex features in hours with Blaze. I estimate we shaved our total development / design time by 50 - 80%, producing things only the largest competitors can keep up with.

Freelancers prefer react so they can get a job. We prefer blaze to get the job done fast!

11 Likes

Just a different learning curve, really.

Blaze, if you know HTML, you can basically use Blaze. I don’t really see a learning curve with it. In a couple of hours you are set for good.

React, as you said, you have to learn completely different ways to think of and/or structure your app. Plus, just in order to learn it, the learning materials will have you delve in to other things along the way - redux or flux and so on. That’s much more learning than required to pick up Blaze - which again, as long as you know HTML, your ready to use Blaze.

That’s not necessarily true. People like to lump React/Redux together, but I think that’s a big mistake. In fact, I just removed Redux from a major project of mine because I didn’t really need it. One should only add libraries to their project if they have a true need for it. All the “React/Redux” tutorials out there mislead people into thinking it’s something they always need to employ.

2 Likes

We love Uniforms as well. :two_hearts:

2 Likes