Meteor 3.5.1 is out 🚀

Hi everyone!

We’ve just published Meteor 3.5.1, the first beta of our maintenance release for the 3.5 line and we’d love your help testing it before the official release.

Meteor 3.5 shipped big features: Change Streams, pluggable DDP transports, and DDP session resumption. Once real apps started using them under real load, they surfaced edge cases that only production traffic can find. 3.5.1 pays that debt down: no breaking changes, no migrations — just a long list of reliability fixes, plus a couple of small additions.

Try it out:


meteor update --release 3.5.1

Highlights

Change Streams that don’t get stuck

The nastiest fix in this release: if your app was disconnected from MongoDB long enough for the change-stream resume point to age out of the database’s history, Meteor would retry with the expired position forever, pinning a CPU core at 100% and silently freezing reactivity until someone restarted the server. Meteor now detects this, discards the expired position, and rebuilds from the present, subscriptions recover on their own (#14607).

Also in the change-streams area:

  • Fixed method calls (most often login) occasionally hanging forever under load with change streams enabled — a rare deadlock in the write-fence handshake (#14564)

  • Fixed a server crash when comparing operation times (#14609) and another when a subscription stops (#14540)

  • Unsupported projections now fall back gracefully to another observer driver instead of erroring (#14518)

  • Clearer error when connecting to an uninitialized replica set (#14520)

More reliable reconnections

A focused series of fixes to DDP session resumption:

  • Messages and method calls fired during a brief disconnect are now held and delivered on reconnect instead of dropped (#14542)

  • No more phantom disconnect events / reconnect errors from brief network blips (#14534, #14532)

  • Fixed a server-side memory leak from closed connections (#14538)

  • Malformed DDP messages are ignored instead of killing the connection (#14530)

Rspack

  • Npm and Assets now work in server code under the Rspack dev server (#14608)

  • The dev server reliably frees its port on stop — no more port-in-use on restart (#14406)

  • Lower build memory usage (#14464), Windows paths with spaces fixed (#14474), and the elliptic npm-audit warning is gone (#14584)

Small additions

  • this.name inside methods — read the current method’s name from the invocation object, handy for shared logging/metrics/rate-limiting helpers (#14478)

  • Opt-in packages.webapp.skipCompressionWithContentLength setting — keep responses that declare a Content-Length uncompressed, for proxies/CDNs and download progress bars that rely on it (#14588)

  • Server code is now compiled to es2022, producing smaller and slightly faster server bundles — no action needed (#14369)

Full list of changes in the changelog and the merged PRs for 3.5.1.

What we’d love you to test

  • Apps using change streams — especially on Atlas shared/serverless tiers or setups that see occasional failovers

  • Login and method calls under load with change streams enabled

  • Flaky-network behavior: reconnections, mobile handoffs, sleeping tabs

  • Rspack dev server workflows, especially server code using Npm/Assets

If anything regresses, please open an issue or reply here — the faster we hear about it, the faster it lands before the official 3.5.1.

Thank you

This release was built by the community. Special thanks to @italojs, @nachocodoner, @mark1russell7, @ebroder, @mvogttech, @TimHeckel, @dupontbertrand, @BastienRodz, @perbergland, @hexsprite, @jfurneaux, @julio-rocketchat, @sanki92, @AviraL0013, @Grubba27, @Storyteller, and @zodern. :sparkles:

Our Sponsors

Meteor is made possible by our amazing sponsors. Support the project and get your logo featured by visiting our Sponsorship page.

:star2: Supernova Sponsors

:milky_way: Nebula Sponsors

16 Likes

WeKan 10.73 and newer has Meteor 3.5.1 .

3 Likes

My app is running 3.5.1-beta.0, so far so good.

1 Like

Meteor 3.5.1 is out and ready for production, please let me know if any issue appear.

4 Likes

I have this error on local machine after 3.5.1 upgraded.

MongoTopologyClosedError: Topology is closed

It just happened once on my local machine which runs Meteor’s Mongodb. When I tried to run it again, it works.
It also works well on my production server.

Hello guys! I tried to update our app from 3.5 to 3.5.1 in Staging env yesterday, and on each login attempt to the app Docker container crashed. It crashed in such a way that nothing was written to the logs. After running the same production Docker container locally I had managed to capture uncaught target signal 11 (Segmentation fault) error on login attempt. We use node:24.15.0-alpine base Docker image. I tried switching from Apline to Debian Docker image (trixie-slim), and the issue was gone. Do you have any idea what in Meteor 3.5.1 could cause Segmentation fault on Alpine Linux? Thanks!

I use node:24-bookworm-slim, no problem.

Just realized that it could be related to that change: Bump `bcrypt` and `argon2` in the `accounts-password` package by julio-rocketchat · Pull Request #14407 · meteor/meteor · GitHub
Both bcrypt and argon2 use native C++ code and both are used during login process

1 Like

@baryshok do you have a minumum reprodutional docker image? I can try debug it to understand better and address a fix for release 3.5.2

I can come up with the example the next week, for now we’ve decided to switch to Debian Docker image

Will try it out today.

1 Like

The 3.5.1 changelog lists @meteorjs/rspack@2.1.0 under bumped npm packages, but the rspack@1.2.0 atmosphere package that ships with it still has DEFAULT_METEOR_RSPACK_VERSION = ‘2.1.0-beta.0’ (os/lib/constants.js). That’s installed as a gte floor (os/lib/dependencies.js), so on first server start after updating, the plugin writes the beta into package.json and installs it.

This matters because the beta still depends on node-polyfill-webpack-plugin, which pulls in the elliptic chain the notes say was removed from the toolchain, npm ls elliptic will show it.

The fix is just npm install @meteorjs/rspack@2.1.0.

That was a missed step on the release patch apparently. I just published a rspack@1.2.1 atmosphere package patch with that fix, but you need to do meteor update rspack. I thought it was going to be bumped automatically as part of a meteor run on any app in Meteor 3.5.1, but it didn’t.

We have improved our release automation to enforce these numbers are synced. We will completely sync the number automatically in the next Meteor 3.5.2.

Thanks for the report.

4 Likes