Skip to content

chore: upgrade to TypeScript 6 - #165

Draft
claude[bot] wants to merge 1 commit into
mainfrom
chore/typescript-6
Draft

claude[bot] wants to merge 1 commit into
mainfrom
chore/typescript-6

Conversation

@claude

@claude claude Bot commented Jul 14, 2026 •

Copy link
Copy Markdown

Requested by Łukasz Komoszyński · Slack thread

Upgrades the workspace to TypeScript 6.0.3, done properly with a real tsconfig migration so it compiles cleanly with no ignoreDeprecations.

Stacked on #163 (chore/npm-dependencies-bump). That PR keeps TypeScript on 5.9.3; this branch is based on it and carries only the TS 6 upgrade. Review/merge #163 first.

Why a separate PR

TypeScript 6 turns several long-tolerated tsconfig options into hard errors (they were previously only suppressible with ignoreDeprecations: "6.0"). Rather than paper over them, this PR removes the deprecated options for real.

tsconfig migration

  • Removed baseUrl from tsconfig.base.json. Since TS 4.1, paths are resolved relative to the tsconfig's own location when baseUrl is absent, so every paths entry is now relative (prefixed with ./). No source relies on baseUrl-relative bare imports, so module resolution is unchanged.
  • Migrated moduleResolution node → bundler in tsconfig.base.json. The old value (node/node10) is deprecated in TS 6. bundler is the org standard (matches js_corelibrary's tsconfig.base.json) and the correct mode for this package: module stays esnext, the sources use extensionless relative imports, and the emitted output is consumed/bundled downstream. module/target/lib are unchanged, so the emitted JavaScript is byte-identical (moduleResolution and baseUrl only affect compile-time resolution, not emit).
  • Bumped tools/tsconfig.tools.json target es5 → es2022. The ES5 target is also deprecated in TS 6; es2022 aligns it with tsconfig.base.json.

Dependency

  • typescript 5.9.3 → ^6.0.3 (lockfile regenerated). TS 6.0.3 sits inside typescript-eslint@8.64's peer range (<6.1.0), so lint is unaffected.

Verification

On Node 24.18: fresh strict npm install and npm ci both resolve cleanly (exit 0); nx run-many -t lint build test is green (lint 10 projects, build 9 projects, test 31 tests / 23 snapshots). A tsc --noEmit sweep across every project tsconfig reports no TS5107/TS5101 deprecation diagnostics, and there is no ignoreDeprecations anywhere in the tree.

Bump typescript to ^6.0.3 with a real tsconfig migration so it compiles
cleanly with no ignoreDeprecations. Stacked on chore/npm-dependencies-bump.

TS 6 turns the previously-tolerated tsconfig options into hard errors:

- Remove baseUrl from tsconfig.base and make every paths entry relative
  (prefix ./). TypeScript resolves paths relative to the tsconfig without
  baseUrl since TS 4.1, and no source relies on baseUrl-relative bare
  imports, so resolution is unchanged.
- Migrate moduleResolution "node" (node10, deprecated in TS 6) -> "bundler",
  the org standard (matches js_corelibrary) and the correct mode for this
  library: module stays "esnext", sources use extensionless relative
  imports, and downstream consumers bundle the emitted output. Emitted JS
  is byte-identical (moduleResolution/baseUrl are resolution-only).
- Bump tools/tsconfig.tools.json target es5 -> es2022 (ES5 target is also
  deprecated in TS 6).

Verified on Node 24.18: fresh npm install + npm ci clean, and
nx run-many -t lint build test green (lint 10, build 9, test 31/23
snapshots) with no ignoreDeprecations anywhere.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012ET2dL5CiUkuFR1ZGiUrUH
Base automatically changed from chore/npm-dependencies-bump to main July 14, 2026 14:08
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.

1 participant