We’re excited to announce that Meteor 3.3.2 is now available and recommended for all projects! 🎉
This release brings a strong focus on security patches, bug fixes, and developer experience improvements, especially around Mongo, accounts packages, and Cordova compatibility. It also marks an important step forward toward future versions of Meteor.
Quick Start
Want to use Meteor 3.3.2 now?
Update your existing app:
meteor update --release 3.3.2
Create a new app with 3.3.2:
meteor create my-app --release 3.3.2
Highlights
🔗 Async-Compatible Account URLs
You can now define async versions of Accounts.urls for system-generated links (like password resets):
Accounts.urls.resetPassword = async (token) => {
const user = await Meteor.users.findOneAsync(
{ "services.password.reset.token": token },
{ fields: { "services.password.reset.email": 1 } }
);
const email = user.services?.password?.reset?.email;
return Meteor.absoluteUrl(
`reset-password/${token}?email=${encodeURIComponent(email)}`
);
};
This makes it easier to personalize emails and URLs using user data.
findUserByEmail Moved to accounts-base
The findUserByEmail method was moved from accounts-password to accounts-base. That means you no longer need to install accounts-password if you just want to find users by email:
meteor remove accounts-password
insertedId Returned on upsertAsync (Client)
We’ve restored behavior from Meteor 2.x. Now when you use upsertAsync, it returns insertedId when a new document is inserted (not when updated):
const result = await collection.upsertAsync({ name: "doc" }, { $set: { value: 1 } });
console.log(result.insertedId); // Only present if inserted
Bug Fix: Unrecognized Operators
We’ve resolved an issue where using certain Mongo operators could trigger unexpected errors:
Meteor.publish('Home', function(viewport) {
check(viewport, Match.ObjectIncluding({ bounds: geoPolygonSchema }));
return Features.find({
hull: { $geoIntersects: { $geometry: viewport.bounds } },
});
});
No more crashes when using valid query operators like $geoIntersects.
Security Fix
We’ve patched a vulnerability in sha.js, improving the overall security of your apps.
Cordova: Modern Browser Support
Cordova apps now default to modern browser support unless explicitly disabled. This ensures better performance and compatibility across devices.
Internal Changes
- Removed the deprecated lodash.template dependency.
- Multiple performance and consistency improvements across packages.
Package Updates
Meteor Packages Bumped:
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
- [email protected]
NPM Packages Bumped:
🙌 Special Thanks
A big shoutout to our amazing contributors who helped make this release possible:
Your contributions are essential to the evolution of the Meteor ecosystem. 💜
What’s Next?
Meteor 3.4 – Coming Soon
- Deeper integration with Meteor-Rspack 6
- Better production bundling, faster builds, and improved plugin support
- Dev-only packages to reduce final server build size
- Community-led improvements from recent GitHub issues and discussions
Meteor 3.5 – In the Works
- Native support for MongoDB change streams
- New driver to replace OPLOG and polling strategies in the reactivity layer
🧑💻 Want to Get Involved?
Check out our GitHub repo, browse open issues, and start contributing. We always welcome help! Especially if you’re interested in performance, bundlers, or data layers.