Meteor shipped 30+ releases across 5 years, mass-migrated to async/await, replaced its bundler, and jumped from Node 12 to Node 22 (with 24 on the way). Here’s the complete version-by-version history.
I run Galaxy and MeteorJS as CEO. I joined the company in January 2022, and within a few months became CTO, then CEO shortly after. I’ve been involved in every release decision since 2.6, but “involved” doesn’t mean “alone.” The core team and the community drive a huge part of what gets built. I listen before I decide, and more than once I’ve been convinced to go a direction I wasn’t planning on. That’s how it should work.
When people ask me “what’s been happening with Meteor?”, I wanted a single place to point them. This is that place. Every major and minor release from January 2021 through the latest 3.5 beta in early 2026.
2021: the 2.x era kicks off with HMR and Node 14
Meteor 2.0 (January 20, 2021) was the first major version bump since 1.0. The headline: Hot Module Replacement. Live JS updates without full page reloads, React Fast Refresh baked in, and free Galaxy Cloud deployments via meteor deploy --free. The http package was deprecated in favor of fetch.
2.1 (February 24) and 2.2 (April 15) followed quickly. 2.1 was a minor maintenance pass. 2.2 upgraded the embedded MongoDB to 4.4.4, bumped Cordova to v10, and added TypeScript 4.2.2 support. A meteor create --svelte skeleton appeared for the first time.
2.3 (June 24) was the first big infrastructure move: Node 12 to Node 14.17.1. This required Fibers v5.0.0, npm 6.14.13, and the removal of pre-1.0 package APIs like api.add_files(). Async function support landed in Meteor.publish(). Android builds also switched to .aab bundles by default.
2.4 (September 15) introduced publication strategies (SERVER_MERGE, NO_MERGE, NO_MERGE_NO_HISTORY) for fine-grained control over DDP mergebox behavior. createIndex replaced the deprecated _ensureIndex to align with MongoDB 5.0.
2.5 (October 21) shipped the accounts-passwordless package, enabled HMR across all architectures, and delivered Apple M1 native support. The MongoDB driver was updated to v4.2.1.
2022: the MongoDB driver jumps to v4, and async APIs begin
Meteor 2.6 (February 1, 2022) was the most consequential infrastructure release of the 2.x series. The MongoDB Node.js driver went from v3.6 to v4.3.1, and MongoDB 5.x server support arrived with the embedded server at 5.0.5.
This brought real breaking changes. fields was deprecated for projection. poolSize became max/minPoolSize. applySkipLimit for count() was removed. Docker users hitting replica sets needed directConnection=true. An oplog v2-to-v1 converter kept backward compatibility intact.
2.7 (March 24) landed two developer-facing wins: built-in 2FA via accounts-2fa and native TailwindCSS 3.x support through automatic PostCSS plugin detection. TypeScript hit 4.5.4.
Then came 2.8 (October 19), and the trajectory of the entire framework shifted.
Meteor 2.8 introduced async counterparts for every major MongoDB collection method: findOneAsync, insertAsync, updateAsync, removeAsync, fetchAsync, forEachAsync, mapAsync, countAsync. Plus Meteor.callAsync for calling async server methods. This was the beginning of the 2-year migration that would culminate in Meteor 3.0 and the complete removal of Fibers.
If you were running Meteor apps in production at this point (we were, at Galaxy, for thousands of them), you knew this was coming. Fibers had served the framework well for over a decade, but they were holding back Node.js upgrades and making it harder to attract new developers.
The conversation about removing Fibers actually started back in June 2021, long before I joined. But it stayed mostly as a conversation with really small changes. There were open questions, competing approaches, and yet no commitment to ship it.
When I joined the company in early 2022, one thing was clear: this couldn’t stay theoretical. In May 2022, I presented a concrete plan to Tiny Capital, the owners of the company, and got approval to invest in the migration. It was crucial for the survival of the framework. There were still voices arguing that we should maintain our own forked Node.js version to keep Fibers alive. After a lot of discussion with the core team and community, the decision was clear: remove them entirely and align Meteor with standard JavaScript and Node.js conventions. No fork, no special runtime. Just async/await, like everyone else.
The MongoDB driver reached v4.9, Node.js hit 14.20.1, and TypeScript updated to 4.6.4. Chakra-UI and Solid skeletons appeared. A major campaign to remove underscore from core packages began alongside new type definitions for them.
2023: steadily converting the codebase to async
2.9 (December 12, 2022) converted accounts, OAuth, and email to async: Email.sendAsync, async versions of changePassword, forgotPassword, resetPassword, and verifyEmail. A new meteor scaffold CLI command and Vue 3 skeleton shipped. TinyTest was rewritten without Fibers.
2.10 (January 13, 2023) updated React skeletons to React 18 and switched to official MongoDB types. TypeScript reached 4.7.4.
2.11 (March 2) brought MongoDB 6.x support with the embedded server at 6.0.3 and the driver at v4.14. The meteor mongo shell command was removed (incompatible with MongoDB 6’s mongosh). appcache was deprecated.
2.12 (April 28) gave developers a migration planning tool: the WARN_WHEN_USING_OLD_API environment variable. Set it, run your app, and see every synchronous API call that would need to change for Meteor 3.0.
2.13 (July 26) was primarily a Node 14 security patch.
2.14 (December 12), the “Hacktoberfest release,” shipped an interactive meteor create command, Cordova updates to v12.0.1 (Android) and v7.0.1 (iOS) with SDK 33, and the NO_MERGE_MULTI publication strategy.
2024: the final 2.x, then Meteor 3.0 drops Fibers
2.15 (February 5, 2024) bumped the embedded MongoDB to 7.0.5.
2.16 (May 14) was the final 2.x release. It completed the async bridge with observeChangesAsync and observeAsync, and added oplog-tailing options to include or exclude specific collections. After 17 minor versions and 3.5 years, the 2.x series was done.
Then, on July 15, 2024, Meteor 3.0 shipped.
Over 2,300 commits, 800+ changed files, 200+ pull requests. The biggest Meteor release in a decade. The core change: Fibers were gone, replaced entirely by native async/await.
During the alpha and beta phases, we had at least 10 developers (closer to 12 at peak) working on 3.0 simultaneously. That’s a massive commitment for a team our size, and it only happened because we got buy-in from ownership back in May 2022. Backward compatibility stayed non-negotiable throughout. Every API change needed a migration path. Every breaking change needed documentation. Package authors needed time and tooling to update.
I won’t sugarcoat it: the migration was still a lot of work for everyone. Teams had to rewrite synchronous server logic. Some community packages were abandoned and needed replacements. But the result was a framework that finally spoke the same language as the rest of the Node.js ecosystem.
Every server-side API became asynchronous. All MongoDB operations. Meteor.user() on the server. Email.send (now Email.sendAsync). Assets.getText and Assets.getBinary (async versions). Express replaced Connect as the HTTP layer. Node.js jumped to 20.x LTS. ARM architecture support arrived across the board.
Late 2024 to mid-2025: Node 22, Express 5, and SWC
Meteor 3.1 (November 20, 2024) stacked 3 major upgrades into a single release: Node.js 22, MongoDB driver v6, and Express v5. The roles package moved into core. Real-time Mongo code was refactored to TypeScript. Apple Silicon no longer needed Rosetta for the dev MongoDB. Subsequent updates delivered a real-time performance boost by refactoring the AsynchronousQueue for parallel processing.
3.2 (March 18, 2025) introduced the meteor profile command for performance profiling, argon2 password hashing as a more secure alternative to bcrypt, and improved package resolution. Node reached 22.14.0, embedded MongoDB hit 7.0.16. A rare oplog bug that could cause client data loss was fixed.
3.3 (June 11, 2025) transformed the build pipeline. Babel was replaced by the SWC transpiler and minifier, cutting build times by roughly 60% (3x+ improvement in larger projects). @parcel/watcher replaced the old file watching, the framework defaulted to modern architecture (skipping legacy browser processing), and SQLite was optimized for faster startup. Express updated to 5.1.0, and [email protected] shipped. Later updates brought the MongoDB driver to 6.16.0, Cordova to v14 (Android SDK 35), and refined SWC cache invalidation.
I’ll be honest: slow builds were one of the most common complaints I heard from developers considering Meteor. For years, we didn’t have a great answer. With 3.3 and then 3.4, we finally do.
2026: Rspack lands, Change Streams enter beta
Meteor 3.4 (January 30, 2026) added Rspack as a modern bundler option. The results: ~4x faster builds and up to 88% smaller client bundles through tree shaking (a first for Meteor). The new rspack Atmosphere package and @meteorjs/rspack npm package bring code splitting, dynamic imports, and community plugin support. Node reached 22.22.0, TypeScript 5.9.2, SWC 1.15.3. Support for devOnly packages and Npm.devDepends and Deferrables improved the dev workflow. Watch the release video.
Meteor 3.5-beta (first beta on February 19, 2026) introduces MongoDB Change Streams as an alternative to oplog tailing, configurable via settings.json with a fallback chain of changeStreams → oplog → polling. Early benchmarks show 40% more connection scalability versus oplog (1,680 virtual users versus 1,200 at saturation), with elimination of OOM crashes under high load. CI/CD was migrated from Travis CI to GitHub Actions, cutting test runs from ~40 minutes to ~10.
The 3.5 release also plans to upgrade from Node 22 to Node 24 LTS. And we’re actively discussing an opt-in uWebSockets.js transport for ddp-server, which would offer significant performance gains for real-time connections while preserving the existing SockJS behavior as the default.
The full timeline at a glance
| Version | Date | Node.js | Mongo driver | Key milestone |
|---|---|---|---|---|
| 2.0 | Jan 20, 2021 | 12.x | 3.x | HMR, free Galaxy deploy |
| 2.1 | Feb 24, 2021 | 12.21.0 | 3.x | Galaxy plan flag |
| 2.2 | Apr 15, 2021 | 12.x | 3.6.6 | Embedded MongoDB 4.4.4, Cordova 10 |
| 2.3 | Jun 24, 2021 | 14.17.1 | 3.x | Node 14 upgrade |
| 2.4 | Sep 15, 2021 | 14.x | 3.x | Publication strategies |
| 2.5 | Oct 21, 2021 | 14.18.1 | 3.x → 4.2.1 | Passwordless auth, M1 support |
| 2.6 | Feb 1, 2022 | 14.x | 4.3.1 | MongoDB driver v4, MongoDB 5.x |
| 2.7 | Mar 24, 2022 | 14.19.1 | 4.3.1 | 2FA, TailwindCSS 3 |
| 2.8 | Oct 19, 2022 | 14.20.1 | 4.9 | Async APIs begin |
| 2.9 | Dec 12, 2022 | 14.x | 4.12 | Async accounts/OAuth |
| 2.10 | Jan 13, 2023 | 14.x | 4.12 | React 18 skeletons |
| 2.11 | Mar 2, 2023 | 14.21.3 | 4.14 | MongoDB 6.x support |
| 2.12 | Apr 28, 2023 | 14.x | 4.16 | Old API migration warnings |
| 2.13 | Jul 26, 2023 | 14.21.4 | 4.16 | Security patch |
| 2.14 | Dec 12, 2023 | 14.x | 4.17.2 | Interactive meteor create |
| 2.15 | Feb 5, 2024 | 14.x | 4.17.2 | Embedded MongoDB 7.0.5 |
| 2.16 | May 14, 2024 | 14.x | 4.17.2 | Last 2.x: observeAsync |
| 3.0 | Jul 15, 2024 | 20.x | 4.17.x | Fibers removed, async/await |
| 3.1 | Nov 20, 2024 | 22.x | 6.10.0 | Node 22, driver v6, Express 5 |
| 3.2 | Mar 18, 2025 | 22.14.0 | 6.x | meteor profile, argon2 |
| 3.3 | Jun 11, 2025 | 22.16.0 | 6.x | SWC, ~60% faster builds |
| 3.4 | Jan 30, 2026 | 22.22.0 | 6.x | Rspack, tree shaking |
| 3.5-beta | Feb 19, 2026 | 24.x (planned) | — | Change Streams, Node 24 |
5 years, 5 inflection points
Across these 30+ releases, 5 moments reshaped Meteor’s technical identity.
October 2022 (v2.8): async APIs land. The 2-year migration clock starts ticking.
July 2024 (v3.0): Fibers are gone. 2,300+ commits, the biggest migration in Meteor’s history, and the framework emerges async-native.
November 2024 (v3.1): Node 22, MongoDB driver v6, and Express v5 ship in a single release. The runtime stack catches up with the broader ecosystem in one move.
June 2025 to January 2026 (v3.3 and v3.4): SWC replaces Babel, then Rspack arrives. Build times drop by 4x. Bundle sizes shrink by 88%. The long-standing “Meteor builds are slow” critique gets addressed head-on.
February 2026 (v3.5-beta): Change Streams enter beta, Node 24 is on deck, and uWebSockets.js is being discussed as an opt-in DDP transport. The real-time layer is getting its biggest rethink since oplog tailing was introduced.
Node.js went from v12 to v22, with v24 planned for 3.5. The MongoDB driver evolved from v3 to v6. The build system progressed from Babel to SWC to Rspack. And the framework kept shipping, every quarter, for 5 straight years.
I’ve seen a lot of “is Meteor dead?” posts over the years. I get it. The framework went through a quiet period, and the tech world moves fast. But when I look at this timeline (30+ releases, a complete async rewrite, 4x faster builds, a new real-time engine in beta), I see a team that’s been heads-down building. I know, because I’ve been leading it.
We’re not done.
Want to see what’s coming next? Check the Meteor Roadmap for what’s planned beyond 3.5.