Node.js framework shoot-out (Meteor alternative)

Don’t really understand these threads though…
There wasn’t so long since last one and nothing changed from back then.
Every mentioned technology is alternative, though none is quite better than meteor itself.

There’s ssr plugin for meteor too, providing express(and lot of other stuff) alongside with meteor.

1 Like

Interesting. Do you have any examples?

It’s really quite straightforward to override this behavior with your custom code. Just write your own Accounts.sendVerificationEmail - function. You can copy the code from Meteor’s sources and change the bits you don’t fancy.

I posted an issue about this very problem and there was some development done. The issue got merged and last I checked, it was “basically done”, though I haven’t followed up on this recently.

Took me longer to post the issue than it took to write the custom account email functions.

I’m happily using SparkPost REST API and pre-determined templates to send verification and password reset -emails in my Meteor app.

There are some cool ways to use react to build emails too

For what it’s worth, I did a similar research a couple of month ago, and my conclusion was that what really distinguishes Meteor from other frameworks is it’s outstanding support for real time queries. To make things clear, I am not just talking about using WebSockets for pushing updates. Think about how nicely Meteor synchronizes subscriptions with mutations (the DDD updated message in particular).

Is anyone here aware of a web framework - apart from Meteor - which provides a decent support for reactive queries? I know that some GraphQL servers support subscriptions but even with that the developer needs to trigger query updates explicitly after a mutation that potentially intersect the query set. While this makes sense for performance reasons in larger scale projects, it also sounds like an overkill and unnecessary complication for smaller projects.

Just wondering, because as of today it feels like there’s still nothing out there that could replace Meteor entirely.

5 Likes

Any good guides on how to do this effectively?

I’ve been very happy using Feathers for the past few months.

It seems to me in the JS world, the gravity is with Facebook’s stack + Express:

  • GraphQL with either Relay or Apollo (Pick your DB, MongoDB)
  • Express (Worker/Micro Services, etc.)
  • Passport (Auth)
  • React/Redux (UI)
  • Webpack (Build)
2 Likes

After a lot more discussion and thinking, we wound up with:

  • React + Apollo on front-end (create-react-app)
  • Express + GraphQL on back-end (possibly to be replaced with Graphcool when it’s more mature)
  • AWS Cognito for authentication
  • Mobx where needed
2 Likes

Redux is functional, Mobx is OO. The industry is leaning functional these days (but Mobx is easier to onboard). You should reconsider Redux over Mobx. Facebook is all-in on Redux.

Here, I would come up with a process around Redux and stick to it. That will help your onboards ramp up on it quicker.

Good choice. It’s hard to go wrong with Express, it’s a long-time industry standard (its excellent and isn’t going anywhere).

Have you considered Relay instead of Apollo? If not, you should before investing.

Facebook just released a complete rewrite of the tech, they’re calling it Relay Modern (read: they’re heavily invested).

Interesting choice. I’m on AWS too. Do you have a link to share?

I assume you meant Redux in the first paragraph.

As far as Apollo vs Relay, I heard Relay was far more complicated. Is that no longer the case?

Cognito seems really cool so far! Very easy to implement. Create a user pool and client app, and start here.

yes, corrected that, thanks

Wow, looks great! If anyone has wipped up an example repo of this tech, please share! I’m in the process of migrating from Meteor to the Facebook stack – it’s a slow process. When it comes to Auth, I’ll consider this, thanks for sharing.

1 Like

@aadams You mentioned Relay has been rewritten. I assume you were referring to this?

1 Like

Yes, that’s right, Relay Modern. I would take a hard look at using that over the alternatives, if for no other reason than its been given a lot of love from Facebook recently – and that means a lot these days.

Still found it overly complex and difficult to grasp. :confused: Facebook seems to be hit-or-miss in that department. Some things feel over-engineered, others are brilliantly simple.

1 Like

You can begin with create-react-app and eject when ready for further customization.

I don’t consider myself a javascript expert by any means. I started out in the js world with Meteor if that tells you anything. Yet I took a few courses and new feel comfortable with React/Redux/Relay.

I’m tied up with a few internal projects, but when they’re complete, I’m going to break out the admin portion of my traditional Meteor application, and rewrite it in using Express + GraphQL/Relay + React/Redux. My point? If I can get up to seed on this stuff anyone can :wink:

Yeah, I was pleasantly surprised React has a very simple API. Redux was more abstract for sure, but there are only 4 phases Actions, Reduces, the Store, and Containers – once this concept has sunk in, you’ll “get it”.

The over-engineered stuff I think are meant to allow for maximum flexibility and tooling. Once you’ve built a few small projects using it, I’m sure you’ll feel more comfortable – don’t let the book’s cover shy you away as they say.

For me, Apollo is super intuitive. Connect to a component via a HOC, and execute queries and fetch their results. I look at Relay, and I can’t even get a sense of how things fit together. On top of that, I’d love to see some documentation on Relay Modern that doesn’t require me to read up on Classic first.

Startup time is super important to me: learn the basics quickly in a day, and use it immediately. Relay, IMO, doesn’t satisfy that requirement.

1 Like

What makes Meteor great is also its biggest downfall.

No other framework has seamless real time reactive live queries over the entire DB. The reason this works in Meteor is the tight coupling at every layer - Mongo, oplog, DDP, minimongo. Take away any of this and it breaks down. Which is exactly what you find in alternatives like GraphQL subscriptions, Feathers, Apollo etc. You need a db that’s reactive (RethinkDb was the leader here), a protocol, a framework, and client side support.

An all in one solution starts giving problems when you have a ton of data and queries, need to optimize pub/sub, can’t optimize etc. And of course you can’t change things in the stack without a lot of experience.

For reactive realtime web apps, Meteor is still the best. But not everybody needs that. A lot of Meteor’s appeal is how simple it makes modern web development, quite apart from the live query part.

And the issues with scaling Meteor have never really been addressed.

3 Likes