Official Meteor packages that you might want in you app
Tags: meteor
Published: 2020-05-12 12:35:32

☄ [Meteor](https://www.meteor.com) offers amazing functionality out of the box, but there are also some amazing official packages that can add even more to your application. Here is my personal list of packages that you might want to consider adding to your application.

## ✅ [check](https://atmospherejs.com/meteor/check) & [audit-argument-checks](https://atmospherejs.com/meteor/audit-argument-checks)
These are a must have packages. `audit-argument-checks` checks to make sure that you validate all the input in your method calls with the `check` package.
After adding `audit-argument-checks` it will report to you in console about inadequate input checks as you navigate through your app.
`check` package should be used to validate any input into your subscriptions and methods.

## ⁉️ [mdg:validation-error](https://atmospherejs.com/mdg/validation-error)
This function allows you to define validation errors on the server and provide more data to better display the error on the client.

## 🛂 [mdg:validated-method](https://atmospherejs.com/mdg/validated-method)
The ultimate way of creating methods. If you have a more complex app you might have experienced some pains working with the default Meteor methods. validated-method was a second attempt to add more functionality to the method to alleviate the most common problems. Most notable is the inclusion of schema validation (hence the name).
If you are not using it though, you might want to wait a bit as it is a bit dated and a third iteration has been [proposed](https://github.com/meteor/meteor/pull/11039).

## 🔒 [force-ssl](https://atmospherejs.com/meteor/force-ssl)
A must for any production app. This package will redirect unsecured request to a secure URL. 

## 🔍 [mdg:seo](https://atmospherejs.com/mdg/seo)
SEO has always been tricky for JavaScript apps. This package aims to help in this regard (especially if you hosting on [Galaxy](https://www.meteor.com/hosting)) by utilizing [Prerender.io](https://prerender.io/) to create a searchable version of your app for crawlers.

## 📊 [bundle-visualizer](https://atmospherejs.com/meteor/bundle-visualizer)
Best if you create a specialize start command like this:
`meteor --extra-packages bundle-visualizer --production`
This will allow you to examine your bundle size and see where you should load dynamically or cur some fat from your app.

## 💼 [ejson](https://atmospherejs.com/meteor/ejson)
`Extended and Extensible JSON library` reads the description and you most likely already have it as a dependency of another of your packages. It adds date and binary types support to json and allows you to add your own as well.

## #️⃣ [random](https://atmospherejs.com/meteor/random)
Need a random (Meteor) id or a new secret key or just want a random element from an array. This and a bit more is in this package.

## 🙀 [reactive-dict](https://atmospherejs.com/meteor/reactive-dict) & [reactive-var](https://atmospherejs.com/meteor/reactive-var)
As the name suggests these packages allow you to setup reactive dictionary and variable to work with Tracker or if can also be used as a sort of app state.

## 🏃 [fetch](https://atmospherejs.com/meteor/fetch)
If you are calling other servers on old fashioned APIs you probably use the [http](https://atmospherejs.com/meteor/http) package and recently you might have been annoyed with a deprecation warnings. Despair not! Fetch is here to usher you into the future! Refer to the [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) and import everything from the `fetch` package and you should be fine. The good thing is that where possible native implementation is used and in other cases the package provides polyfills.

## 🔗 [url](https://atmospherejs.com/meteor/url)
The `url` package does the same like `fetch`, but for the [URL](https://developer.mozilla.org/en-US/docs/Web/API/URL) API. In addition if you are using `react-router` and need to get search params, you might want to give `URLSearchParams` from this package a try.

## 🚧 [Logging](https://atmospherejs.com/meteor/logging)
The last on this list which will require a bit of a digging is the Meteor logging packages. Although meant for internal Meteor processes, there is no reason why you couldn't use it if you don't have anything better.
It is a small package, so a quick on the [source code](https://github.com/meteor/meteor/tree/devel/packages/logging) should give you all the info you need.

## 👮 [DDP rate limiter](https://atmospherejs.com/meteor/ddp-rate-limiter)
A very useful package to limit how frequently your users can call the server via DDP. This is in essence a security package that prevents brute force attacks. You can define rules for your methods and publications that will check that all conditions have been fulfilled before proceeding with the request. Most commonly this is used by the accounts package to limit the number of login attempts, reset password attempts, etc. to prevent brute force attacks, but you can use that for pretty much anything. Check out the [docs](https://docs.meteor.com/api/methods.html#ddpratelimiter) for more info.

--------
If you like my work, please consider supporting me on [GitHub Sponsors ❤️](https://github.com/sponsors/StorytellerCZ).