Repository navigation
Open
Labels
ToTriagestatus:waiting-for-triageAn issue that is yet to be reviewed or assignedAn issue that is yet to be reviewed or assigned
Description
TypeScript 6.0 Build Failure Analysis
The build is failing across all Node matrix versions (18.x, 20.x, 22.x) with two deprecation errors that TypeScript 6.0 now treats as hard errors:
Error 1: TS5107 — moduleResolution=node10 is deprecated
- Source: Root
tsconfig.json→"moduleResolution": "Node" - Inherited by: Every workspace package via
packages/tsconfig.base.json - Fix: Update to
"moduleResolution": "Node16"or"Bundler"intsconfig.json
Error 2: TS5101 — baseUrl is deprecated
- Source: Each workspace package's own
tsconfig.json(e.g.packages/msgraph-sdk-users/tsconfig.json) - Current value:
"baseUrl": "./"(used alongsidepathsfor project references) - Fix: Remove
baseUrlfrom all ~68 workspace tsconfigs. WithmoduleResolution: "Node16"or"Bundler", TypeScript resolvespathsrelative to the tsconfig location by default.
Recommended Changes
Option A — Proper migration (recommended):
- In
tsconfig.json: change"moduleResolution": "Node"→"moduleResolution": "Node16"and"module": "ES6"→"module": "Node16" - In all
packages/*/tsconfig.json: remove the"baseUrl": "./"line - Also consider removing
"experimentalDecorators"and"emitDecoratorMetadata"frompackages/tsconfig.base.jsonsince these are deprecated in TS6 as well (TC39 decorators are now standard)
Option B — Quick unblock (temporary):
Add "ignoreDeprecations": "6.0" to the root tsconfig.json compilerOptions to suppress the errors. This buys time but the options will be removed in TypeScript 7.0.
Note: The
baseUrldeprecation affects all ~68 workspace packages that follow the same tsconfig pattern. A script or bulk find-and-replace would be the most efficient approach for Option A.
Metadata
Metadata
Assignees
Labels
ToTriagestatus:waiting-for-triageAn issue that is yet to be reviewed or assignedAn issue that is yet to be reviewed or assigned
Activity
gavinbarron commentedon Apr 14, 2026
I think that the only key gotcha with this upgrade is to ensure that we maintain the same output target so that the packages we deliver have no breaking changes.
That said, we should prefer using the most futureproof options as possible, so bunder might be better than node16