I used to be a huge Meteor fan back in 2014 - 2016. Wrote a lengthy advocacy post, tried to repackage all the popular libraries for Meteor before it supported
npm out of the box, gave talks at DevShops.
Then I joined Google and stopped using Meteor, just no need for it. Later, when I got back into making web apps, Meteor felt abandoned, the client side story was split (React vs. Blaze), a bunch of the team moved on to Apollo, all sorts of new frameworks on the block were getting popular, the service worker support feature request I put in still isn’t there yet, so I ended up going for TypeScript + Node + MongoDB + GraphQL + React. In other words, rebuilding the car. But hey, the “car” had the PWAs license plate. (I worked as a Developer Advocate at Google for PWAs.)
After a year working with this stack, I have to say that the developer experience, with the (partial) exception of GraphQL, has been rather painful. Accounts have been a huge pain. Firebase is bloated, Firebase Web UI social logins are incredibly slow (enough to turn users away), and Auth0 is way over-engineered. Keeping data in sync was a delight with Meteor, and a pain with React state management and even Apollo caching. Gatsby builds are getting slower and slower. I mentioned the GraphQL experience was partially not painful, but there are the painful parts - modularization (settled on
graphq-modules eventually), inability to extend types, uninformative errors. Having to define a GraphQL mutation for everything enforces good discipline but is nowhere near as convenient as Meteor.methods. And I’m not even talking about building mobile apps from the same codebase, or testing. Or other awesome Meteor features that made the developer experience fun, but which I have forgotten about. Good luck trying to rebuild by 2015 Instagram clone in < 300 lines of code with this stack.
So I feel like the returning prodigal son now.
My app is SEO-optimized thanks to Gatsby, but Meteor has SSR too; and the app still needs to load data dynamically, so what’s the big win here? It’s a small scale app and it won’t realistically be reaching 1M users any time soon. Vulcan.js has GraphQL. Tiny took over Meteor development. Meteor still uses the dreaded appcache and doesn’t support PWAs but apparently there are working Service Worker hacks.
So what’s wrong with Meteor in 2020? And what’s the win in rebuilding the car for small-ish PWAs?