Meteor 1.9 (Node.js 12) and new Roadmaps
Tags: meteor, node, hosting, cordova
Published: 2020-01-31 15:46:31

Today we’re thrilled to announce the final release of Meteor 1.9, which brings the stable and in long-term support Node.js 12. We also have a new version of Meteor roadmap and the first Galaxy public roadmap. Please check those out when you can so you know what’s to come! We’re very excited, and we hope you are too.

# Node.js 12
The major change with 1.9 release is Node.js 12 support. In [April of 2019](https://github.com/meteor/meteor/pull/10527) we started to publish alpha versions of Meteor 1.9 updating to Node 12; with continual feedback from the community members, we are now ready with a final version.

The upgrade from Node 8 to Node 12 required a number of changes and updates behind the scenes to ensure the compatibility of npm packages. As always, Meteor updates are backward compatible as possible and you can enjoy the benefits of new features without any hassle!

The new version of the V8 JavaScript engine used by Node 12 brings [performance improvements and tweaks](https://medium.com/@nodejs/introducing-node-js-12-76c41a1b3f3f) that should improve the performance of your code as a whole. Meteor uses Fibers to avoid async callbacks and now you should see less garbage collection as [node-fibers](https://github.com/laverdet/node-fibers/pull/429) is no longer asking for adjustments of external allocated memory what should result in less pressure in CPU usage what is always good.

It is worth to note that 32-bit Linux support was dropped in Node.js 10, and we also dropped the support for it. In other words: Meteor 1.9 supports 64-bit Mac, Windows, and Linux, as well as 32-bit Windows. As always you can check all the changes in [History](https://github.com/meteor/meteor/blob/devel/History.md#v19-2020-01-09).

We are also excited about new Node features that will be beneficial for the future of Meteor. [Worker Threads](https://nodejs.org/api/worker_threads.html) that can help to parallelize build process and other intensive processes and also [native source map](https://github.com/nodejs/node/pull/29564) support for Node stack traces.

Before you update to Meteor 1.9 we recommend you check your npm dependencies to be sure they are compatible with Node 12.

# Meteor Roadmap
We’ve updated the Meteor [roadmap](https://github.com/meteor/meteor/blob/devel/Roadmap.md) to reflect our goals for Meteor, and we hope you will review and share your thoughts. We will continue to update every quarter. There are many different areas for contributions for those interested: Core, Cordova, DB, Documentation, as well as new content for Technologies that we consider first-class citizens in the platform.

We would love to have you involved! Meteor has and will continue to rely on our community in order for us to grow into the platform we all know it can be. We hope that you will help us make Meteor better by assigning yourself a task.

Everybody is qualified to work on Meteor, if you need help deciding the best item for you to be involved leave a comment here or ask in the [Meteor Community Slack](https://join.slack.com/t/meteor-community/shared_invite/enQtODA0NTU2Nzk5MTA3LWY5NGMxMWRjZDgzYWMyMTEyYTQ3MTcwZmU2YjM5MTY3MjJkZjQ0NWRjOGZlYmIxZjFlYTA5Mjg4OTk3ODRiOTc).

You can also get involved in [Meteor 1.10](https://github.com/meteor/meteor/pull/10861) which includes Cordova updates and also the ability to disable web.browser.legacy build, we already have published beta versions of it and you can help trying it in your apps today.

# Galaxy Roadmap
Galaxy is the hosting platform specially designed for Meteor apps. It’s the fastest way for you to publish your Meteor apps: One command deploys, free Automatic SSL certificates, built-in SEO prerendering, integrated APM, [etc](https://www.meteor.com/hosting).

Galaxy already provides many features to make your experience running Meteor apps in production as easy as possible; in the next few months it will receive new features such as: notifications about your app activities, auto-scale options, ability to apply new settings without a new deploy and [much more](https://github.com/meteor/galaxy-roadmap/blob/master/README.md).

If you have special needs or want support feel free to send us a message (support@meteor.com) and we will be glad to help.

# Packages updates
Every week we have package updates and since Meteor 1.8.2 we had many updates, a few highlights:

`meteor-apm-agent@3.2.5`: fixes error logs not providing useful information [object Object].

`mdg:seo@3.2.2`: removes deprecated tag and updates prerender-node.

`modern-browsers@0.1.5`: fixes Capacitor (and possibly others) user agents detection.

`react-meteor-data@2.0.1`: makes main module lazy.

By the way, Kevin Newman published a great [post](https://blog.meteor.com/introducing-usetracker-react-hooks-for-meteor-cb00c16d6222) about version 2 of react-meteor-data package where he explains how useTracker (new React hook!) works and how to use it.

# Bonus Tip
To conclude this post I would like to ask you a question: Did you know you can use [optional chaining](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining) [since](https://github.com/meteor/babel-preset-meteor/commit/9c77868cb342a992d15fc6b046a44139d25a319c#diff-9b5c21a922007319aa514b4819a5eeda) Meteor 1.8.2? 😮

Yes, you can! Thanks to the great integration between Meteor and Babel you can already use optional chaining without any extra configuration. Optional chaining is great to avoid explicit undefined checks in your code. See one simple example:
```
// author / coauthor (optional) / title
const blogPost = {
  author: {
    firstName: 'Filipe',
  }  
  title: 'Meteor 1.9 and Node.js 12',
}
// get coauthor first name without optional chaining
if (blogPost.coauthor) {
  console.log(blogPost.coauthor.firstName);
}
// get coauthor first name with optional chaining
console.log(blogPost.coauthor?.firstName);
// output: undefined
```

You can check all the proposals available for you in [babel-preset-meteor](https://github.com/meteor/babel-preset-meteor/blob/9c77868cb342a992d15fc6b046a44139d25a319c/proposals.js) and don’t forget to update your apps to Meteor 1.9. Enjoy!