require(esm), behind a flag, and why I waited

Node 22 can require() a synchronous ES module behind a flag, which resolves the split that has made dual publishing miserable.

what it does: require() an ESM graph with no top-level
await, from CommonJS, synchronously.

what it does not do: make an existing dual package
unnecessary — consumers on older versions still need
the CommonJS build.

which means the benefit arrives when the oldest
supported Node has it, and that is two years away.

so: read it, note it, change nothing.

A feature that helps only when the oldest supported runtime has it is a feature to plan around rather than adopt, and the interesting question is what it lets you delete in two years rather than what it does now. Writing that down is what stops the same evaluation being done from scratch next year.