Update to Typescript 6 / Jest 29 - #202
Conversation
It is pinned to @typescript-eslint/parser 5.x and blocks us from upgrading Typescript. The whole CRA project is deprecated anyways https://github.com/react/create-react-app/blob/main/packages/eslint-config-react-app/package.json We also remove eslint-plugin-flowtype since we don't use Flow at all
cb10210 to
ad66113
Compare
ad66113 to
7a463ca
Compare
|
What do you mean by "adding stratakit components"? |
The plan is to add MUI components in parallel to existing iTwinUI components. So consumers will be able to import something like |
2699924 to
ead8657
Compare
There was a problem hiding this comment.
Pull request overview
Modernizes the repo tooling to unblock Stratakit integration by upgrading the TypeScript/Jest toolchain and aligning tsconfig/module resolution with TypeScript 6.
Changes:
- Upgraded to TypeScript 6.x, Jest 29.x, and ts-jest 29 across packages (plus related eslint/types updates).
- Extracted shared compiler settings into a new
tsconfig.base.jsonand updated package-level tsconfigs to extend it (usingmoduleResolution: "bundler"). - Updated Jest configs to inline TS settings for tests and adjusted a few imports/settings for compatibility (e.g., icon imports; Storybook docgen disabled for TS6).
Reviewed changes
Copilot reviewed 29 out of 31 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.json | Switches to extending the new shared base config; keeps outDir override. |
| tsconfig.base.json | New shared TS6 compiler configuration (target/lib/module/moduleResolution/etc.). |
| packages/modules/storybook-auth-addon/tsconfig.eslint.json | Adjusts eslint TS config to allow JS parsing. |
| packages/modules/storybook-auth-addon/package.json | Upgrades TypeScript + @typescript-eslint/* versions (but eslint range needs alignment). |
| packages/modules/manage-versions/tsconfig.json | Extends base config; sets rootDir/outDir and expands excludes. |
| packages/modules/manage-versions/package.json | Upgrades Jest/ts-jest/TypeScript/eslint toolchain deps. |
| packages/modules/manage-versions/jest.config.js | Moves ts-jest config inline (CommonJS + Node10 resolution + explicit types). |
| packages/modules/imodel-browser/tsconfig.json | Extends base config; sets rootDir/outDir and excludes tests/output dirs. |
| packages/modules/imodel-browser/package.json | Upgrades Jest/ts-jest/TypeScript/eslint toolchain deps. |
| packages/modules/imodel-browser/jest.config.js | Moves ts-jest config inline (CommonJS + Node10 resolution + explicit types). |
| packages/modules/delete-itwin/tsconfig.json | Extends base config; sets rootDir/outDir and excludes tests/output dirs. |
| packages/modules/delete-itwin/src/components/DeleteITwin.tsx | Updates icon import path for bundler-style resolution compatibility. |
| packages/modules/delete-itwin/package.json | Upgrades Jest/ts-jest/TypeScript/eslint toolchain deps. |
| packages/modules/delete-itwin/jest.config.js | Moves ts-jest config inline (CommonJS + Node10 resolution + explicit types). |
| packages/modules/delete-imodel/tsconfig.json | Extends base config; sets rootDir/outDir and excludes tests/output dirs. |
| packages/modules/delete-imodel/src/components/DeleteIModel.tsx | Updates icon import path for bundler-style resolution compatibility. |
| packages/modules/delete-imodel/package.json | Upgrades Jest/ts-jest/TypeScript/eslint toolchain deps. |
| packages/modules/delete-imodel/jest.config.js | Moves ts-jest config inline (CommonJS + Node10 resolution + explicit types). |
| packages/modules/create-imodel/tsconfig.json | Extends base config; sets rootDir/outDir and excludes tests/output dirs. |
| packages/modules/create-imodel/src/components/base-imodel/BaseIModel.tsx | Removes invalid nullish-coalescing pattern flagged by newer TS (keeps same runtime result). |
| packages/modules/create-imodel/package.json | Upgrades Jest/ts-jest/TypeScript/eslint toolchain deps. |
| packages/modules/create-imodel/jest.config.js | Moves ts-jest config inline (CommonJS + Node10 resolution + explicit types). |
| packages/apps/storybook/package.json | Adds TypeScript 6 and upgrades @typescript-eslint/* versions (but eslint range needs alignment). |
| packages/apps/storybook/.storybook/main.js | Disables reactDocgen due to Storybook 6 + TS6 incompatibility. |
| common/scripts/package.json | Upgrades TypeScript + @typescript-eslint/* versions (but eslint range needs alignment). |
| common/config/rush/pnpm-lock.yaml | Lockfile updates reflecting TypeScript/Jest/eslint ecosystem upgrades. |
| common/changes/@itwin/manage-versions-react/alex-typescript6_2026-05-13-20-55.json | Records a “none” change entry for the package upgrade work. |
| common/changes/@itwin/imodel-browser-react/alex-typescript6_2026-05-13-20-55.json | Records a “none” change entry for the package upgrade work. |
| common/changes/@itwin/delete-itwin-react/alex-typescript6_2026-05-13-20-55.json | Records a “none” change entry for the package upgrade work. |
| common/changes/@itwin/delete-imodel-react/alex-typescript6_2026-05-13-20-55.json | Records a “none” change entry for the package upgrade work. |
| common/changes/@itwin/create-imodel-react/alex-typescript6_2026-05-13-20-55.json | Records a “none” change entry for the package upgrade work. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Prep for adding Stratakit components and general modernization.
Stratakit's optional
renderprop was being seen asrequiredin TS 4, which is what prompted me to start this update.tsconfig.base.jsonto simplify configjest.config.js- this lets us removetypes: [node, jest]from the browser-targeting tsconfig filesmoduleResolution: "bundler"since the previousnodeoption is deprecatedmoduleResolution: "bundler"reactDogenfor now (this shows TS types on Storybook) - it is not compatible with TS 6 but can be re-enabled when we update Storybook in Upgrade to Storybook 7 #108 - Storybook still shows props, just not with the full TS typingsThis PR is based on #203 so CI isn't running automatically. Here are the manual runs... https://github.com/iTwin/admin-components-react/actions?query=branch%3Aalex%2Ftypescript6