Skip to content

feat(typescript-checker): add experimental support for TypeScript@7 - #6099

Merged
Andreas02-dev merged 13 commits into
masterfrom
feat/ts-native-preview
Aug 14, 2026
Merged

Andreas02-dev merged 13 commits into
masterfrom
feat/ts-native-preview

Conversation

@nicojs

@nicojs nicojs commented Jul 3, 2026 •

Copy link
Copy Markdown
Member

Add experimental support for TypeScript 7 (a.k.a. tsgo or TypeScript native preview) to @stryker-mutator/typescript-checker.

Enable it in stryker.config.json:

{
  "typescriptChecker": {
    "experimentalNativePreview": true
  }
}

It currently assumes typescript v7 is installed as @typescript/native, you can accomplish this with:

npm install -D @typescript/native@npm:typescript@latest

Closes #6070

Performance improvements

Preliminary results show more than a 2x performance improvement.

Limitations

  1. This implementation uses the typescript/unstable/* api, which might be unstable.
  2. Project references are not supported, since we currently seem to be missing a way to load tsgo in --build mode.
  3. Grouping mutants into smart groups that can be checked together is currently not supported. We're missing the program.getAllDependencies api.
  4. Unfortunately, typescript@6 still needs to be installed under the "normal" typescript name. This is needed for some utility functions we currently have no replacement for in the experimental TS7 api (i.e. ts.parseConfigFileTextToJson)

Add experimental support for TypeScript 7 (a.k.a. tsgo or TypeScript native preview) to @stryker-mutator/typescript-checker.

Enable it in stryker.config.json:

```json
{
  "typescriptChecker": {
    "experimentalNativePreview": true
  }
}
```

It currently _assumes typescript v7 is installed as `typescript7`_, you can accomplish this with:

```bash
npm install -D typescript7@npm:typescript@rc
```
@nicojs
nicojs force-pushed the feat/ts-native-preview branch from eac70f0 to 29f7f1f Compare July 3, 2026 19:30

@Andreas02-dev Andreas02-dev left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, just have one question for my understanding and a test that doesn't validate the expected behavior correctly.

What do you think of using tsgo-* instead of native-* for the names? I think that makes more sense, so for example: tsgo-file-system instead of native-file-system, etc.

Comment thread packages/typescript-checker/src/ts-native/native-diagnostic.ts
Comment thread packages/typescript-checker/test/integration/ts-v7/single-project.it.spec.ts Outdated
Comment thread packages/typescript-checker/test/integration/ts-v7/single-project.it.spec.ts Outdated
Comment thread packages/typescript-checker/test/integration/ts-v7/single-project.it.spec.ts Outdated
@nicojs

nicojs commented Jul 13, 2026

Copy link
Copy Markdown
Member Author

@Andreas02-dev I've addressed all your remarks. Feel free to merge and release a version next Friday.

@Andreas02-dev
Andreas02-dev merged commit 3d35679 into master Aug 14, 2026
7 checks passed
@Andreas02-dev
Andreas02-dev deleted the feat/ts-native-preview branch August 14, 2026 15:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Experimental support for TS7

2 participants