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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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?