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.
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.
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.
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.
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.
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.
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) ?
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?
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.