I first stumbled across Meteor in mid 2012, just after they announced their fundraising success. At the time, Meteor was very far from production ready. I’m talking “no security at all” far from ready. Because of this, I took a quick look and decided to pass. Fast forward to today and they’re about to release the third version of their rendering engine, security is baked in, there’s a robust third party package system, and more. About a month ago I decided to give Meteor another look and boy am I glad I did. It is f***ing awesome, and fundamentally different than what you’re probably working with right now.
Below are a few broad reasons I’m excited about Meteor.
One Language to Rule Them All
The Form Element
Let’s take an HTML element we’re all familiar with: the <form> element. A user fills out a form, presses submit, and the browser sends a request with the information to a url defined in the form element. The application responds at that url, usually creating or updating some resource. This pattern is used in every conventional web app (rails, django, ember/rails, angular, express, plain old vanilla html, etc).
Meteor & Mobile
When I started with Meteor a month and a half ago, I knew I wanted to do something in mobile with it. At the time, there were only a couple of Meteor apps in the app store, and very little documentation on how to get going with Phonegap. I tried several solutions, and ended up using a modified version of this tool. I’d been meaning to build a local chat app since June, so I gave it the first name I could think of, and out came Ralph.
- One codebase for Android, iOS, etc (thanks Phonegap).
- Hot code reload. You don’t have to go through the Apple approval process every time you want to update the app, and you don’t have to maintain old versions. Everybody is instantly updated the next time they open the app.
- Realtime by default. Mobile apps tend to have stricter feedback requirements than web apps, so it helps that everything in Meteor is realtime by default. The built in latency compensation helps as well.
- DDP. It minimizes the amount of data the app sends through the phone’s connection, which helps when the connection is poor.
- Since it’s just a website, you have access to all the amazing web tools out there.
- It’s not native, so certain things don’t quite “feel” right. For example, input elements and fixed positioning have a host of issues you must work around.
- In general, I’m not sure how well Meteor will scale. The guys behind Meteor are working on a more scalable implementation, and it should be in place before 1.0.
And there you have it; some of the reasons I’m excited about Meteor. I’ve learned a lot over the past month building Ralph, and can’t wait for the upcoming Meteor 1.0 release.
I plan to write a follow-up post with more specifics on how to get Meteor running on mobile, and a few Meteor specific mobile tricks I’ve learned over the past month. In the meantime, if you have questions about Ralph or Meteor, connect with me at @marbemac and @RalphApp.