Best Meteor Packages

When it comes to handling trivial tasks and solving common issues, every developer knows there’s no use reinventing the wheel. Chances are there already exist perfectly fine packages you can use. MeteorJS isn’t an exception. In this article we will give you best Meteor packages for:

Curious how we rated them? Click here to read about the criteria that helped certain packages make it to our list.

Routing

Reactive, with both client and server support, first we have the famous iron:router. It is simple to set up, provides logical checks before page loading (e.g. on permissions) and its web navigation optimization was designed specifically for Meteor. One thing though: there may be issues with React compatibility.

Kadira team provides us with a simple client-side FlowRouter. It doesn’t handle rendering but cooperates well with rendering frameworks. Currently it’s the best choice according to Meteor Guide 1.3 because of its simplicity and productivity.

nimble:restivus makes building REST APIs in Meteor easy. For example, it can make a public link GET request from services and Meteor API will respond in terms of DB manipulations.

Collections

The Meteor guide tells us that MongoDB is basically schemaless. However, it is common practice to use a schema, which leads to certain collection restrictions within the context of the content format. Collection2 by @aldeed allows attaching a schema for your database collections.

aldeed:simple-schema comes together with Collection2, defining the schema-syntax. It also provides validation by regular expressions.

In Meteor, you can’t publish documents from various collections at once by default. Publish-composite by @reywood gives you such a possibility. Now you can publish related data from different collections using a reactive join.

An automatic collections transformation is possible thanks to Collections Helpers by @dburles. Helpers are also applicable to the Meteor.users collection.

User Management

Basically, the core Meteor package Accounts provides all the necessary features. This includes account creation, login, validation and ready user interface you are free to change anytime. Extensions for integration with the most popular social networks - from Facebook to Github - are also available.

Another core package is User Accounts. In addition to the popular front-end UI, it offers high-level customization of the UI with various account management forms and 3rd party services integration.

Talking about 3rd party, let’s have a look at the Link Accounts package by @bozhao. It does a great job of linking user account from social networks to your project. The package supports 22 packages-extensions for most popular network environments.

The Roles package by @allaning was made to help you arrange all user permissions. allaning:roles will also allow creating independent sets of permissions for users - the so-called groups - and calibrating user interactions.

And let’s not forget about the peerlibrary:aws-sdk package which offers seamless data interaction with Amazon Web Services via object methods.

User Interface

Good news! Font Аwesome was packaged for MeteorJS by @DaveGandy. You are free to enjoy over 500 scalable, CSS-customizable vector icons it offers. Click here to find all icons, examples, contributors and more.

Based on the simple-schema package, aldeed:autoform gives you UI components and helpers to create forms with automatic insert and update events and automatic reactive validation. However, some may find it too sophisticated compared to manual form creation.

One of the most popular development frameworks Semantic UI comes to Meteor CSS Release with its LESS only version. It doesn’t support theming, though.

With a hint of mainstream, here comes the Bootstrap version for Meteor. Still being a great library for UI projecting, it seems to have issues with pop-up windows.

With a core package React, you can structure your UI from reusable components. It uses re-rendering with the only necessary component instead of the full page (thanks to React’s implementation of the one-way reactive data flow).

If you’re looking for a UI-admin tool, we suggest using yogiben:admin. Its best feature is auto setting up according to your collections. The package is a complete admin dashboard with an open-source front-end template.

alethes:pages is your helping hand in pagination. It includes tables, multiple collections and infinite scrolling. Iron:router built-in integration, live sort and more features await.

Preprocessing

The LESS package mentioned above provides a compiler build plugin for Meteor that allows mixins, formulas and manipulations with values inside CSS. Selectors enclosure is also a good feature.

The CoffeScript core package is great for simplifying and code optimization. Simple syntax without interpretation at runtime at your service.

Stylus is a brand new language for dynamic and expressive CSS generating, and Stylus for Meteor helps you reduce CSS code duplication. It is said to support both indented syntax and regular CSS style.

If you want to compile SASS files with Node-SASS, try fourseven:scss. It also includes the resulting CSS in the application bundle that Meteor sends to the client. And BTW, you can control the load order of SASS files.

Utilities

You must already be familiar with Underscore - a great JavaScript library with a more than 80 utility functions. They can be used for common tasks like taking complexity out of collections as well as more sophisticated ones likes functional binding, JavaScript standardization and testing for equality. And it is all cross-browser. Sounds awesome, but not all methods pleased the crowd. Enter Lodash. Its modular methods are mostly created for iterating arrays, objects and strings, manipulating and testing values and creating composite functions.

You know that directly using npm modules with Meteor apps is impossible. But thanks to meteorhacks:npm, developed by @arunoda and @meteorhack, the problem has been solved. Also, with their set of Async Utilities you can load npm modules inside Meteor APIs.

With edgee:slingshot you can skip Meteor server loading by uploading files to a cloud storage. Plus you’ll have great security policy and progress bars as UI indicators.

For now, an official Meteor package momentjs:moment appears to control time. After parsing, validating, manipulating and displaying dates, you can handle time zones using this specific solution.

And if the only thing you need for your project is GoogleMaps, dburles:google-maps is your call. Marks, routes and even StreetViewPanorama are ready for use in this great package.

Debugging

Meteor's Velocity testing framework can also boast its HTML Reporter that shows test results in your app. It supports any Velocity-compatible testing framework.

msavin:mongol gives you the power to view and edit client documents directly in the browser. Without compiling into the final project, you will be able to view and modify documents from your collections.

Meteortoys is a set of in-app development tools that allows auto publishing in one click, e-mail traffic monitoring, slowing down your app as if in real environment, observing DDP flows and much more. Unfortunately, most of those features require MeteorToys purchase.

Looking for a client-side DDP inspector? lai:ddp-inspector will let you see all DDP activity in the client-side and full-text search them.

And last but not least comes the Kadira project from @meteorhacks with it’s debug section. It shows both server and client activities at once while you are developing.

SEO

Using a core package Spiderable is the only way to allow web search engines to index a Meteor application. If you’re interested, here is a great article by @ManuelSchoebel about Meteor SEO principles. manuelschoebel:ms-seo is his SEO helper package for Meteor, though it works only with iron:router.

Ranking Criteria

Atmosphere's ratings and trends may seem inaccurate to a lot of people. So, certain enthusiasts attempted to rate MeteorJS packages themselves. We followed their suggestions. The informal survey on crater.io, (made by @SachaGreif) was quite interesting. However, limited choices and absence of any kind of partition made it a little incomplete. The Top 6 “must have” from @DavidTurnbull had great descriptions and examples, but we needed more than six. So, next stands @ThomasFarla with his10 favourites. Last but not least come the laravel.io and Orbit teams. Their categorization of popular Meteor packages was immensely helpful. And of course there is one factor we can’t deny - the subjective factor of our personal preferences.

We hope that the great MeteorJS packages we mentioned will help you solve some trivial Meteor MVP marketplace app development tasks and leave more time for creating truly awesome features. If you’ve already worked with some of the packages or you think we missed a great one, share your experience and thoughts in the comments section.