Post

is it up to implementers if the raw data is loaded at import evaluation or whether it's loaded lazily when the bytes are actually read?

This proposal doesn’t mention exactly when bytes are read. It would work similar to import type json or really any other import. If it’s a synchronous import, the bytes need to be available when executing that line.

There’s also async imports (dynamic imports so maybe that’s what you’re referring to? Or perhaps the Stage 3 deferred imports?

I was thinking of node.js where the full static import tree is evaluated before any code executes. So if you don't use dynamic imports it will potentially impact app startup performance?

Yes but remember that importing bytes is going to be a leaf in this tree because its can't import more modules. If you really care about startup performance, I believe CJS is still faster than ESM. But that doesn't matter if you bundle before running which is why import bytes can be bundled too.