microsoft / microsoft/TypeScript
[V6] `module` defaults is not `esnext`
@DanielRosenwasser is already working on this.
Since Apr 1, 2026.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
🔎 Search Terms
"module", "default", "esnext", "v6"
🕗 Version & Regression Information
This changed between versions V5 and V6
⏯ Playground Link
This isn't an issue in Playground, because you're required to enter a value for the module.
💻 Code
-
package.json{ "name": "testcase", "version": "1.0.0", "type": "module", "dependencies": { "typescript": "6.0.2" } } -
index.tsimport foo from "./foo.json" with { type: "json" }; console.log(foo);
npm installnpc tsc index.ts
🙁 Actual behavior
index.ts:1:30 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'.
1 import foo from "./foo.json" with { type: "json" };
~~~~~~~~~~~~~~~~~~~~~
🙂 Expected behavior
No error because module defaults to esnext.
Additional information about the issue
In Announcing TypeScript 6.0, it says module defaults to esnext: Similarly, the new default module is esnext, acknowledging that ESM is now the dominant module format.
But in TSConfig Reference, it's CommonJS if target is ES5; ES6/ES2015 otherwise.
In the code, I don't think the default value is esnext. Otherwise, we wouldn't be getting the TS2823 error.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.