---
title: Compatibility
description: "The upstream target, comparison suites, and limits of the compiler's compatibility evidence."
url: "https://tsc-ts.dev/compiler/compatibility"
docs_index: /llms.txt
lastUpdated: 2026-10-17
---

> For an index of all documentation, see [/llms.txt](/llms.txt).

tsc-ts targets TypeScript-Go 7.0.2. The exact upstream revision is pinned in [upstream.json](https://github.com/vercel-labs/tsc-ts/blob/main/upstream.json). Tests compare tsc-ts with that revision, rather than whichever compiler happens to be installed globally.

## Compared surfaces

The [corpus scripts](https://github.com/vercel-labs/tsc-ts/tree/main/packages/tsc-ts/scripts) and [integration tests](https://github.com/vercel-labs/tsc-ts/tree/main/packages/tsc-ts/tests) compare these observable results:

| Surface               | Compared results                                                  |
| --------------------- | ----------------------------------------------------------------- |
| Scanner and parser    | Tokens, values, syntax trees, rescans, and diagnostics.           |
| Binder                | Symbols, symbol tables, control-flow graphs, and name resolution. |
| Type checker          | Diagnostics for compiler and conformance cases.                   |
| Module resolution     | Resolved modules, package identities, and trace output.           |
| Configuration and CLI | Resolved options, file lists, diagnostics, and exit codes.        |
| Emit                  | JavaScript, declarations, maps, and declaration diagnostics.      |
| Build and watch       | Output files, build information, and tested change sequences.     |
| API server            | Responses to the tested TypeScript 7 API requests.                |

The [repository status table](https://github.com/vercel-labs/tsc-ts#compiler) records the current corpus results. Results can change as upstream, the port, or the comparison scripts change.

## What a passing comparison means

A match means the compared outputs agree for the tested inputs, options, and upstream revision. It does not prove equivalence for every TypeScript program, every platform, or every sequence of edits. An upstream bug can also be reproduced by both compilers.

## Known differences

These results differ from TypeScript-Go 7.0.2 by design:

- **Member order in widened object literal unions.** Widening a union of object literals gives each literal an optional member for every property that only its siblings have, printed as `name?: undefined` or `name?: never`. tsc-ts orders these members by the literal's own sibling, so declaration output is the same in every run. TypeScript-Go orders them by the first literal its checker widened with that property name, which depends on the files that checker checked before. The types are identical; the member order in `.d.ts` files, and the build information signatures computed from it, can differ.
- **JavaScript `require` dependencies in build information.** A `require` call that does not initialize a variable, such as `exports.value = require("./dep").value`, is recorded in the `referencedMap` of `.tsbuildinfo`. TypeScript-Go leaves it out, and its incremental builds then keep the declarations and diagnostics that depend on the required module after the module changes. tsc-ts rebuilds them, so its output matches a clean build.

## Known API limits

The API server does not implement profiling methods. Auto-import-dependent completions return the upstream limitation response. See [API server](/compiler/api).

## Investigating a difference

Record the compiler versions, source files, `tsconfig.json`, dependency versions, and library declarations. Reproduce the difference with the smallest possible project. Compare diagnostics, exit status, and emitted files separately.

Report the reproduction in the [issue tracker](https://github.com/vercel-labs/tsc-ts/issues). A report that includes the exact options and expected upstream result can be turned into a regression test.

---

For a semantic overview of all documentation, see [/sitemap.md](/sitemap.md)

For an index of all available documentation, see [/llms.txt](/llms.txt)