Meteor.js v3.1.1 is out! 🎉

In this patch, we have a special performance PR made by @leonardoventurini with a report on the gains we got with it.

Special thanks to the community contributors who made this release possible:

How to try it?

Installing Meteor

npx meteor

Existing projects:

meteor update --release 3.1.1

Starting a project:

meteor create app-name --release 3.1.1

Your help testing this version by creating a new app or migrating your current one will be extremely helpful!

Please give us your feedback, and if you find any issues, you can create a post here or open an issue on GitHub.
Tasks and fixes in this release:

  • Node upgrade: v22.13.0
  • Real-time Performance Boost: Refactored AsynchronousQueue for parallel processing and optimized MongoDB observers for faster initial document handling. → The report and analysis are in the following reply.
  • Allow/Deny Rules Update: Deprecated async rules and updated documentation and types.
  • Mongo Driver Downgrade: Reverted to a stable version to prevent issues in Meteor.
  • Support for Meteor.deprecate: Added deprecation warnings with stack trace for outdated code usage.
  • OAuth Fixes: Resolved issues with cancel popup event and callback.
  • Windows Fixes: Fixed issues with running from folders with spaces and post-npm install build errors on Windows.
  • Security Updates: Upgraded json5 and semver from babel compiler.

Pull Requests for v3.1.1

Next Releases

Meteor 3.1.2 (Late-January/Early-February, 2025)
Meteor 3.2 (Mid-February/Late-February, 2025)


The video version can be seen here:

14 Likes

We have a repo for benchmarking and checking performance on Meteor, and with this last patch, we had seen some improvements–you can read in full here

Quoting @nachocodoner:

The conclusion:

Meteor 3.1.1 is, on average, ~28% faster, uses ~51% less CPU and ~17% less RAM in a reactive scenario, compared with 2.16.

Meteor 3.1.1 is on average ~19% faster, uses ~28,82% more CPU and ~27% more of RAM in a non-reactive scenario, compared with 2.16.

Meteor 3.1.1 unlocks connection limits thanks to async queue parallelization improvements, compared with 2.16 and 3.0.1.

Meteor 3.1 introduced more CPU and RAM usage in non-reactive scenario likely due to Mongo driver upgrade, compared to 3.0.1.

Data is shown in the report directly to explain.

The reactive performance has improved significantly with the recent optimizations.To continue improving performance, we should investigate whether there’s any way to reduce resource usage in 3.1, or we should live like this as newer tool upgrades require more resources.

Additionally, it’s important to start measuring performance in more complex scenarios that sync with real-world use cases, as started here.

10 Likes

Thanks for the hardwork :tada:

4 Likes

npm is now 10.9.2 (from 10.9.0).

4 Likes

Great work. I’d love to update from meteor 2.16 => I have a branch ready where latest 3.1.1 is fully installed but somehow I can not build the project. I get
=> Started proxy.
=> Started MongoDB.
=> Exited with code: 7
=> Your application is crashing. Waiting for file change.

I know there were some “strict mode changes under the hood” but I have a hard time to debug this.

Not sure if I remember correctly, I have done my Meteor 3 updates last summer, but I think I had the same problem and deleting the dev DB helped.

1 Like

Very exciting to see significant development around the performance of Meteor to address scalability concerns that after all these years continue to plague the framework.

Performance gains for methods, which I’m sure are utilized more for commercial / production applications than reactivity/subscriptions, will be well received in the community.

1 Like

Thanks for response we did reset local database as well.

So far have had a great experience with 3.1.1 in production.

I have noticed a lower amount of memory, but a lot more context switches!



4 Likes

Hi @wreiske I am curious now what is the other Meteor version on the graph.

What does it mean? Is that bad?

Thanks for testing, it’s great to see memory usage reduced.

Regarding context switching or interrupts, this seems to be a result of parallelism, right? Since the core code now processes batches in the async queue, it might lead to more of that. I’m not too familiar with this metric. But as a positive outcome, it will also reduce processing time.

I’ll reach out to you privately to test a few things and hopefully gain more insights into it.

1 Like

We just released a video where I chat with @nachocodoner and @grubba about what we’ve done in this release: https://www.youtube.com/watch?v=tZY6jZGU9Ok

7 Likes

I was about to start missing @leonardoventurini updates. Great job on those video, please keep them coming :clap:

4 Likes

The production value of these videos is excellent. Really grateful the investment and effort has been put into this. Goes a very long way. Major congratulations on being able to pull these update videos off.

5 Likes

Thanks for the great job !
One question I have not been able to answer by looking through forums or git…
==> Which exact release of mongodb is bundled with Meteor 3.1.1 (+ where may I find the answer for next release) ?

Best regards

Meteor 3.1.1 is bundled with MongoDB 7.0.5
You can find the versions in: /scripts/build-dev-bundle-common.sh

1 Like

Thanks for your great work on Meteor! I’m just about to test my whole app manually after my Meteor 3 upgrade, so I decided to use the new 3.1.1 for this.

When I start the server, it shows a lot of warnings like these:

I’m a bit confused, because I thought updateAsync is now the way to go? Or is Collection2 using some low-level Mongo DB APIs here? Is there a fix for this already available?

[Update: There’s already an issue for this here: Triggers deprecation warnings in Meteor 3.1.1 allow-deny package · Issue #462 · Meteor-Community-Packages/meteor-collection2 · GitHub]

Also seeing this:

Yet I don’t know where exactly this is coming from?

1 Like

For the util._extend warning that is coming from a dependency. There is a fix for this already merged in 3.1.2.

As for the updateAsync issue I have a PR on that in collection2, but the tests are failing and I’m waiting for feedback to better understand if my fix makes sense.

4 Likes

Thanks for the fast response! I skipped Meteor 3.1.1 for now, since I am also awaiting feedback on the roles changes.

1 Like