Can you elaborate on the compatibility issues you ran into, with ESM, please? Are they related to specific libs or use-cases?

The two I find most annoying

Hoisting/import order especially when trying to mock tests.

Whether or not to include extensions, and which extension to use, .js vs .ts.