TypeScript 7
Warlock 5.32 and create-warlock’s default Oxlint/Oxfmt mode pin typescript to 7.0.2. The regular tsc command now runs
the native Go compiler. Install typescript@7.0.2 in the app’s development
dependencies; no preview package or alternate command is needed.
Update tsconfig.json
Section titled “Update tsconfig.json”Remove baseUrl. Resolve every paths target relative to the tsconfig that
declares it. For example, replace baseUrl: "./src" and "app/*": ["app/*"]
with "app/*": ["./src/app/*"].
Replace moduleResolution: "node" / "node10" with "bundler" and use
module: "ESNext" for Warlock’s esbuild pipeline. A separately emitted Node
project may use "NodeNext" for both options and follow Node’s import rules.
Declare the ambient types the app uses explicitly: TS7 no longer includes all
visible @types packages automatically. Node apps need "types": ["node"].
Set rootDir explicitly when a project checks source outside its config folder.
{ "compilerOptions": { "module": "ESNext", "moduleResolution": "bundler", "types": ["node"], "strict": true, "noEmit": true, "paths": { "app/*": ["./src/app/*"], "web/*": ["./src/web/*"] } }, "include": ["src", "warlock.config.ts", ".warlock/typings/*.d.ts"]}Keep other app options such as JSX and library settings. Run npx tsc --noEmit
and npx warlock typecheck after upgrading. The latter retains incremental
state in .warlock/cache/typecheck.tsbuildinfo; --changed retains diagnostics
for changed files and their direct importers. The dev checker keeps one native
compiler session, updates snapshots, and requests diagnostics for changed files.
Config, translation, import and convention analysis uses OXC without executing
application source.
Tool compatibility
Section titled “Tool compatibility”The typescript main entry exports the compiler version rather than the old
JavaScript compiler API. Core isolates its native unstable API in
src/tooling/typescript/compiler.ts and pins the version exactly.
warlock upgrade continues to use ts-morph’s own bundled parser for source
transformations; it does not use that parser to typecheck apps.
Oxlint 1.88.0 and Oxfmt 0.73.0 are the only supported tools. New apps
pin TypeScript 7.0.2 and include .oxlintrc.json, .oxfmtrc.json,
.oxfmtignore, and VS Code settings for oxc.oxc-vscode.
--lint=oxc is optional; --lint=eslint fails with the 5.34.0 removal message.
The wizard has no toolchain choice.
npm create warlock@latest my-app -- --yescd my-appnpm run lint:checknpm run format:checkOxlint enables "categories": { "correctness": "error" }, unused-variable/import
checks, explicit class accessibility and type-import style. Oxfmt sorts imports
with "sortImports": { "newlinesBetween": false, "internalPattern": ["app/", "web/", "@shared/"] }.
It keeps built-ins, packages, internal aliases and relative imports in one block.
Formatting retains unused imports; lint reports them. Local package scripts use
oxlint, oxfmt and tsc directly. The non-mutating scripts are lint:check
and format:check. Background checks run TypeScript and configured Oxlint.
For existing ESLint apps, follow the migration guide.