Hello everyone, it’s time for our weekly update!
We’ve got some exciting news, Meteor 3.3-beta.0 is out now!
This release brings a major update to the Meteor bundler, including several improvements and optimizations. The highlight is the adoption of the SWC transpiler.
It also includes important community contributions, especially around Meteor React packages, improving stability and performance for commonly used hooks.
Tasks and fixes for Meteor 3.3-beta.0
- Support SWC transpiler for faster dev and builds PR#13657
- Default to modern architecture in new apps PR#13665
- Support CPU profiling in Meteor 3 bundler PR#13650
- Improve
meteor profile
: show rebuild steps, support--build
PR#13694 - Improve
useFind
anduseSubscribe
React hooks - Add
replaceEmailAsync
helper to Accounts PR#13677 - Fix user agent detection and oplog collection filtering
- Refine type definitions for Meteor methods and SSR’s ServerSink
- Update Express to 5.1.0
All merged PRs: GitHub PRs 3.3
React packages changelog: 4.0.0-beta.0
Your feedback is crucial in adjusting this beta before the official launch. Our core team is running tests, but community testing is key to ensuring Meteor 3.3 is stable. Let us know what you find!
Hands on
To use it, please do:
meteor update --release 3.3-beta.0
or create a new app:
meteor create --release 3.3-beta.0
Add the following to your package.json
to quickly get started with the new bundler setup:
"meteor": {
"modernWebArchsOnly": true,
"modernTranspiler": true
}
These settings are on by default for new apps.
Highlights
Modern transpiler: SWC
We’ve started improving the bundler experience. Meteor bundler includes different components: a transpiler to convert files into browser-friendly syntax, a linker to build the final output, and a dev server for fast feedback and runtime features.
In Meteor 3.3, we focused on the transpiler. meteor profile
showed most build time is spent transpiling with Babel. To address this, we’ve added SWC (written in Rust), which makes rebuilds significantly faster.
-
Cold and cache starts are ~2.6x faster than 3.2 in all build phases.
-
Rebuilds and HMR are ~1.5x faster in client and server phases.
Results are from fredmaiaarantes/simpletasks app on a specific machine. Your app may vary, test it yourself.
Modern transpiler is enabled by default for new apps. To enable it in existing ones, add this to your package.json
:
"meteor": {
"modernTranspiler": true
}
There are no breaking changes. However, if your app uses nested imports (not dynamic ones), it may fall back to Babel. The same applies if you’re using Babel plugins not supported by SWC yet. You can look for SWC equivalents or exclude SWC for specific file contexts. We’ve also created a doc page with tips for migrating and debugging the new transpiler setup, Modern Transpiler: SWC docs.
Want to help us test? Try Meteor 3.3 on your apps, compare profiles between versions, and share the results, we’d love to see the numbers and profiles for further improvements.
Don’t forget to enable the config in the next section for extra speed gains!
Modern builds by default
As mentioned in a previous release, skipping web.browser.legacy
and web.cordova
makes builds faster. We’ve now made this the default in new apps only in dev mode.
For existing apps use the next config in your package.json
.
"meteor": {
"modernWebArchsOnly": true
}
Thanks to @9Morello for driving this one forward!
CPU profiling tool for the bundler
We’ve added an automated way for Meteor developers to generate CPU profiles for deeper bundler analysis. This is mainly for contributors looking to identify performance issues in specific app cases.
@italojs explains the new Meteor environment variables and how to generate and inspect CPU profiles in his article: “Enhancing Performance in MeteorJS bundler: Complete Guide to CPU Profiling”. He also shows how Babel has been a key bottleneck, which we’re addressing with the SWC replacement in 3.3.
Want to help us? Join the Effort to Speed Up Meteor bundler
React hooks, now faster
We’ve updated the meteor/react-packages
repo to restore tests and CI, keeping compatibility with the latest React 18 and Meteor 3. This also encouraged updates from contributors to make more efficient useFind
and useSubscribe
.
If you use react-meteor-data
, a new beta is available. Try it out:
meteor add react-meteor-data@4.0.0-beta.0
Big thanks to @welkinwong, @Poyoman39, and @PedroMarianoAlmeida for actively contributing and adding clear tests to help ship these improvements safely!
Be aware of a breaking change: useFind describes no deps by default #431
Huge thanks to our contributors
- @nachocodoner
- @italojs
- @Grubba27
- @zodern
- @9Morello
- @welkinwong
- @Poyoman39
- @PedroMarianoAlmeida
- @harryadel
- @ericm546
Join us and contribute! Check out Meteor GitHub issues or start with Good first issues.
What’s Next?
-
Meteor 3.3 – Coming Soon
- The beta phase is open and may include multiple versions, depending on your feedback.
- We’ll continue testing bundler improvements and other updates. If we find quick wins or issues, we’ll address them.
- After a solid testing period, we’ll ship the official 3.3 release.
-
Meteor 3.4 – On the Horizon
- Expect a deeper bundler integration to enable new production features, broader plugin support, and even faster builds by shifting more Meteor bundler processes to a modern tool.
Stay tuned, and as always, happy coding!