Hi everyone!
We’ve just published Meteor 3.5.1-beta.0, 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-beta.0
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
-
NpmandAssetsnow 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
ellipticnpm-audit warning is gone (#14584)
Small additions
-
this.nameinside methods — read the current method’s name from the invocation object, handy for shared logging/metrics/rate-limiting helpers (#14478) -
Opt-in
packages.webapp.skipCompressionWithContentLengthsetting — keep responses that declare aContent-Lengthuncompressed, 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, @StorytellerCZ, and @zodern. ![]()
Happy testing! ![]()