Universal Apps and MeteorJS in 2019

I was a MeteorJS fan.

MeteorJS was an excellent tool to quickly create universal apps. I was not quite a professional developer back in the day (circa 2016-17) but I could recognize the power of Meteor in developing complex web applications that could potentially deployed for multiple devices.

There was a time when I was flabbergasted as I, rather alarmingly, saw people moving from Meteor to different platforms. I could not quite understand why.

On one hand I was still a believer in Meteor world which could make magic happen and quickly. On the other hand, there were people like Arunoda telling people why they thought it was a bad idea.(Just to get the context right, Arunoda and his team made excellent contributions to Meteor.)

So, why did I like Meteor in the first place -

  1. Simple to code
  2. Simple to understand
  3. Build reactive applications. Server controls sessions and can easily send events to clients
  4. A lot of libraries
  5. Share server and client code
  6. Deploy easily

I faced a few inherent issues-

  1. Meteor needed a bigger server. Well, I was comparing to PHP that could happily run a shared server. Even today, I don’t quite imagine using Meteor to smoothly run a data-driven application that I have today on a 2 GB RAM server
  2. Development with hot reload was kind of slower for my taste, but nothing significant
  3. I don’t quite like the idea of maintaining user sessions (the Meteor way?) - primarily because of the nature of applications I used to build
  4. A lot of “dead spots”. Meteor decided to change big time when the users had emigrated to other technologies. With a smaller community the content created on help slowed down. The older content was sometimes applicable or not - which was a constant concern for a then hobbyist developer like me

None of the issues were strong enough for me to stay away from Meteor but at the same time I did not quite embrace it as I have done so with other technologies. Yes, I did experiment with React on Meteor, and VulcanJS,and I know people still recommend MeteorJS as one of the frameworks to evaluate.

So, why? Was/is Meteor a failure? Are such applications a relic of the past?

The answer - no, and no.

Meteor had its time in the golden age of Javascript. There are nuances to why I would rather not go there again -

  1. Meteor technology is not as actively developed as it used to be. Though it embraced the latest frontend technologies (think React / Vue), I do not quite see that picking up and going back to its heyday. People are weary of changes I think and they may rather jump on to a train that is already bustling with activity
  2. The pub/sub model is the greatest of advantages, but may not be as relevant in today’s world. I love the simplicity of server changes being reflected to “interested” clients, but I can do the same today using web sockets, GraphQL subscriptions and what not. Other technologies have a larger community (= more help) and growing
  3. I have increasingly liked the clear client/server separation - primarily due to what I could do with server APIs including consuming them in mobile apps, PWAs, web apps and even desktop apps
  4. I am excited about what is happening in the PWA and WASM world. While Javascript has a play in the former, it will eventually get isolated in the latter

Sure real-time applications are easily built on Meteor, but I would see a Vue + AdonisJS / FeatherJS app as equally simple.

There are things that Meteor may not be excellent at, but I am a believer in the model of a full-stack application that can enabled by such technologies. Contrary to beliefs of many a smart people (like what was written by Arunoda), I am a strong proponent to make development tooling simpler. This is done by combining technologies and making magic happen. Given an opportunity of a well-architected full-stack application I don’t believe people will be jumping with joy at the prospect of using multiple platforms to get their application to the market.

In this light - I see Blazor as really promising. Blazor (specifically client-side Blazor) may be the next big thing to accomplish this goal of backend + frontend platform. I can code in a more succinct language than Javascript to spit out the code that can be used by browsers. Equally importantly, I can use the same (or most of the) code for my native mobile apps or desktop apps.

Rust looks equally promising, but I lack the knowledge to comment better. Rust simply does not have comparable tooling as C#.

While there is a core team that stands by Meteor to this day I don’t quite think Meteor’s age will ever come back. I really appreciated what Meteor did for me in the past, but it is time to move on.

comments powered by Disqus