Recs.
Updated
Specs
Pros
Pro Mobile apps from the same code base
Meteor can generate mobile (iOS and Android) apps from the same codebase as the web app, using the Cordova (PhoneGap) library (which brings native device functionality to JavaScript applications).
Meteor-generated mobile apps are JavaScript, HTML and CSS bundles that run in a UIWebView (on iOS) or WebView (on Android). Apps can be run locally in the iOS/Android emulator, or on physical devices. You can also publish them to Google Play Store or Apple's App Store.
Moreover, these hybrid mobile apps benefit from hot code push, which dramatically accelerates the development cycle.
Pro Isomorphic package system
A Meteor package can supply code for both the client and the server, and for mobile (Cordova) apps. For example, an autocomplete package supplies both server code to search a collection, and client code to display the results. The mdg:camera package supports the native camera if the app is built for mobile, or the HTML getUserMedia API to take pictures from the browser.
Pro Shared client/server code
The same code can be run on both the server and the client, because Meteor is a full-stack JavaScript-everywhere platform.
A common example of code that should run on both the client and the server is input validation - on the client for speed/UX, and on the server for security (the client can't be trusted).
Pro Auto reload/refresh (hot code push)
Every time a change in the source file is saved, all connected clients will refresh automatically - browser tabs, mobile apps running in the simulator or on the physical device.
Or, deploy a Meteor app (meteor deploy myapp
) and all clients, plus all mobile apps with the server set to myapp.meteor.com
will automatically reload to use the code changes.
This drastically reduces the development cycle for apps in the App Store, where a regular update can wait for one to two weeks before being approved.
Pro Easy to learn
Meteor was developed with simplicity in mind, even for beginners who have just started using JavaScript frameworks. One of the reasons that beginners should start with Meteor is that Meteor is a full-stack framework, this way they can get the complete learning experience when it comes to web development (back-end and front-end development), all by using a single platform and a single language.
Furthermore, Meteor does not have complex and esoteric concepts that may be hard to grasp by a beginner, it has a clear documentation and well-established coding conventions.
There's also a very useful resource for learning Meteor in the form of a book: Discover Meteor, by the authors of many Meteor packages.
Pro MongoDB
Meteor uses MongoDB, eliminating the choice among NoSQL databases. MongoDB is highly scalable - used to store petabytes of data and perform billions of operations daily at eBay, FIFA, Adobe, Craigslist, McAffee, Foursquare and others.
Pro Real-time testing framework
Meteor also has an official testing framework called Velocity. Velocity enables real-time unit testing and integration with Jasmine or Mocha syntax. Tests are automatically run when code is saved and the testing result is indicated by a green or red dot in the upper right corner of the app.
Pro Support for MySQL, PostgreSQL and Redis
While Meteor only supports MongoDB and Redis natively, MySQL support is on the roadmap, and there are 3rd-party packages that integrate MySQL reactively with Meteor to some extent, such as numtel:mysql. For reactive PostgreSQL support, there is numtel:pg.
Pro Seamless communication between client and server
Meteor is built on top of Node.js and jQuery on the client.
Meteor enables the client and server to communicate data seamlessly, in real-time. You don't have to write any REST API or pub/sub code - Meteor takes care of it all automatically for you.
Pro Built-in GraphQL support through Apollo
GraphQL is a query language for your API, and a server-side runtime for executing queries by using a type system you define for your data. GraphQL isn't tied to any specific database or storage engine and is instead backed by your existing code and data.
Pro Extensive ecosystem
Meteor's package repository called Atmosphere has more than 5000 packages available. What's more is that Meteor can also use into the packages available for the Node ecosystem.
Pro In-app debugging
The community behind Meteor has created a useful application for debugging Meteor apps that will automatically delete collections and display client-side documents, allow you to control subscriptions and lets you modify the documents.
Meteor also has great support for server-side debugging, and WebStorm has also released full support for Meteor, including debugging capabilities.
Cons
Con No native SEO support (no server-side rendering)
Meteor does not have support for server-side rendering of views, which is extremely helpful when it comes to SEO. However, there's a third-party server-side rendering package available for download. The Meteor team has also said that server-side rendering is on the roadmap.
Con Long build times
Many users are frustrated at simple code changes taking a long time to build.