Meteor 3 Migration
From the Fibers era to a supported platform, without a code freeze.
Meteor 3 removed Fibers, and with them the synchronous server API most Meteor 2 apps are written against. Getting through that transition is the gate to a supported Node.js and a maintained platform — and it is a known, boundable engineering problem, not a rewrite.
How we run the conversion
- Inventory first. A census of every sync-API call site, every Atmosphere package that must be compatible, and every place the code bets on Fiber ordering semantics. The census is the estimate.
- Convert on Meteor 2, bottom-up. The async collection API already exists on late Meteor 2 releases, so nearly all of the conversion ships to production incrementally while you stay on your current platform — shared utilities first, then methods and publications, each layer as its own reviewable pull request.
- Tests where the risk is. The migration is the best forcing function an older app ever gets for server-side test coverage. We add characterization tests around the code being converted, and linters that catch the classic missed-await bug before review does.
- Package work in parallel. Blocking Atmosphere packages get a maintained fork, an npm replacement, a vendored extract, or a minimal patch fork — cheapest viable option, one package per pull request.
- The platform switch last. With the codebase already async, moving to Meteor 3 itself is a short, careful step: upgrade, drop the compatibility stragglers, re-run load tests, watch.
What you get
A production app on Meteor 3, a current Node LTS, and a supported MongoDB driver — with better test coverage than it started with, and no big-bang cutover anywhere in the plan. Delivery continues throughout; the migration rides alongside normal work as a stream of small, reviewable changes.
We have run this conversion before. Ask us what the census of your codebase would look like.
Staring down the async migration?