Skip to content

Deprecate downlevelIteration#63071

Merged
jakebailey merged 1 commit intomicrosoft:mainfrom
jakebailey:deprecate-downlevelIteration
Feb 4, 2026
Merged

Deprecate downlevelIteration#63071
jakebailey merged 1 commit intomicrosoft:mainfrom
jakebailey:deprecate-downlevelIteration

Conversation

@jakebailey
Copy link
Member

@jakebailey jakebailey commented Jan 30, 2026

For #62196

This flag does nothing if your target is ES2015+

TS 7.0 shouldn't have this flag because we won't support target below ES2015. Deprecate it now, though it is a shame we never had an error that said "don't set this, it doesn't do anything for you".

Copilot AI review requested due to automatic review settings January 30, 2026 21:50
@github-project-automation github-project-automation bot moved this to Not started in PR Backlog Jan 30, 2026
@typescript-bot typescript-bot added Author: Team For Uncommitted Bug PR for untriaged, rejected, closed or missing bug labels Jan 30, 2026
@jakebailey
Copy link
Member Author

@typescript-bot test top400

@typescript-bot
Copy link
Collaborator

Looks like you're introducing a change to the public API surface area. If this includes breaking changes, please document them on our wiki's API Breaking Changes page.

Also, please make sure @DanielRosenwasser and @RyanCavanaugh are aware of the changes, just as a heads up.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jan 30, 2026

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
test top400 ✅ Started 👀 Results

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Deprecates the --downlevelIteration compiler option for TypeScript 6.0 (planned to stop functioning in 7.0), emitting a deprecation diagnostic unless silenced via ignoreDeprecations.

Changes:

  • Emit a deprecation diagnostic when downlevelIteration is enabled.
  • Mark downlevelIteration as @deprecated in the public CompilerOptions API surface.
  • Update test harness + baselines to account for the new deprecation error output.

Reviewed changes

Copilot reviewed 59 out of 60 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/compiler/program.ts Adds a deprecation diagnostic when downlevelIteration is enabled.
src/compiler/types.ts Marks downlevelIteration as @deprecated in CompilerOptions.
src/harness/evaluatorImpl.ts Sets ignoreDeprecations: "6.0" by default to prevent evaluator-based unit tests from failing on new deprecation errors.
tests/baselines/reference/api/typescript.d.ts Updates API baseline to include /** @deprecated */ on downlevelIteration.
tests/baselines/reference/sourceMapValidationVarInDownLevelGenerator.types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/sourceMapValidationVarInDownLevelGenerator.errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/restParameterInDownlevelGenerator(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/restParameterInDownlevelGenerator(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/forAwaitPerIterationBindingDownlevel(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/forAwaitPerIterationBindingDownlevel(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5iterable(target=es5).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyVariableDeclarationBindingPatterns02_ES5iterable(target=es2015).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable(target=es5).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable(target=es2015).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyVariableDeclarationBindingPatterns01_ES5iterable(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyAssignmentPatterns04_ES5iterable(target=es5).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyAssignmentPatterns04_ES5iterable(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyAssignmentPatterns04_ES5iterable(target=es2015).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyAssignmentPatterns04_ES5iterable(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyAssignmentPatterns03_ES5iterable(target=es5).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyAssignmentPatterns03_ES5iterable(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyAssignmentPatterns03_ES5iterable(target=es2015).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyAssignmentPatterns03_ES5iterable(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyAssignmentPatterns02_ES5iterable(target=es5).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyAssignmentPatterns02_ES5iterable(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyAssignmentPatterns02_ES5iterable(target=es2015).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyAssignmentPatterns02_ES5iterable(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyAssignmentPatterns01_ES5iterable(target=es5).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyAssignmentPatterns01_ES5iterable(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/emptyAssignmentPatterns01_ES5iterable(target=es2015).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/emptyAssignmentPatterns01_ES5iterable(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/destructuringVariableDeclaration1ES5iterable.errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/destructuringParameterDeclaration7ES5iterable(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/destructuringParameterDeclaration7ES5iterable(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/destructuringParameterDeclaration3ES5iterable(target=es5).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/destructuringParameterDeclaration3ES5iterable(target=es2015).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/destructuringParameterDeclaration1ES5iterable.errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/destructuringArrayBindingPatternAndAssignment4(target=es5).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/destructuringArrayBindingPatternAndAssignment4(target=es2015).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/destructuringArrayBindingPatternAndAssignment1ES5iterable.errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/blockScopedBindingsInDownlevelGenerator(target=es5).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/blockScopedBindingsInDownlevelGenerator(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/blockScopedBindingsInDownlevelGenerator(target=es2015).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/blockScopedBindingsInDownlevelGenerator(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/asyncArrowFunction11_es5(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/asyncArrowFunction11_es5(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/arrayLiteralSpreadES5iterable.errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of37(target=es5).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/ES5For-of37(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of37(target=es2015).types Updates type baseline output impacted by new option diagnostics.
tests/baselines/reference/ES5For-of37(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of36(target=es5).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of36(target=es2015).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of35(target=es5).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of35(target=es2015).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of34(target=es5).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of34(target=es2015).errors.txt Updates baseline to include new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of33(target=es5).errors.txt Adds baseline for new TS5101 deprecation diagnostic.
tests/baselines/reference/ES5For-of33(target=es2015).errors.txt Adds baseline for new TS5101 deprecation diagnostic.

@typescript-bot
Copy link
Collaborator

@jakebailey Here are the results of running the top 400 repos with tsc comparing main and refs/pull/63071/merge:

Something interesting changed - please have a look.

Details

actualbudget/actual

3 of 7 projects failed to build with the old tsc and were ignored

tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

packages/sync-server/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

packages/loot-core/tsconfig.api.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

better-auth/better-auth

21 of 22 projects failed to build with the old tsc and were ignored

packages/scim/tsconfig.json

colinhacks/zod

13 of 17 projects failed to build with the old tsc and were ignored

packages/tsc/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

packages/integration/fixtures/drizzle-zod/tsconfig.json

packages/integration/fixtures/ai-sdk/tsconfig.json

packages/bench/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

compiler-explorer/compiler-explorer

4 of 7 projects failed to build with the old tsc and were ignored

tsconfig.tests.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
    • Project Scope

tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
    • Project Scope

tsconfig.frontend.tests.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
    • Project Scope

tldraw/tldraw

29 of 33 projects failed to build with the old tsc and were ignored

apps/dotcom/zero-cache/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

upstash/context7

2 of 5 projects failed to build with the old tsc and were ignored

packages/sdk/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

vercel/swr

8 of 10 projects failed to build with the old tsc and were ignored

tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

e2e/test/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
    • Project Scope

@DanielRosenwasser
Copy link
Member

I wonder if it's worth deprecating specifically. If you're extending from a common tsconfig (e.g. Zod here), then the problem is more about any package that compiles with ES5, not with the current project.

@jakebailey
Copy link
Member Author

Ryan and I talked about this just now, and this is already true about any and all deprecated options, even more used ones.

You can do : null, but no option will save you when TS 7.0 hits.

This option just feels bad because it technically does nothing.

@jakebailey jakebailey force-pushed the deprecate-downlevelIteration branch from 1e31acc to af91582 Compare January 31, 2026 05:31
@jakebailey
Copy link
Member Author

@typescript-bot test top800

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 3, 2026

Starting jobs; this comment will be updated as builds start and complete.

Command Status Results
test top800 ✅ Started 👀 Results

@jakebailey jakebailey added the Breaking Change Would introduce errors in existing code label Feb 3, 2026
@typescript-bot
Copy link
Collaborator

@jakebailey Here are the results of running the top 800 repos with tsc comparing main and refs/pull/63071/merge:

Something interesting changed - please have a look.

Details

47ng/nuqs

12 of 14 projects failed to build with the old tsc and were ignored

packages/scripts/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

packages/nuqs/tsconfig.build.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
    • Project Scope

actualbudget/actual

3 of 7 projects failed to build with the old tsc and were ignored

tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

packages/sync-server/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

packages/loot-core/tsconfig.api.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

better-auth/better-auth

21 of 22 projects failed to build with the old tsc and were ignored

packages/scim/tsconfig.json

colinhacks/zod

13 of 17 projects failed to build with the old tsc and were ignored

packages/tsc/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

packages/integration/fixtures/drizzle-zod/tsconfig.json

packages/integration/fixtures/ai-sdk/tsconfig.json

packages/bench/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

compiler-explorer/compiler-explorer

5 of 7 projects failed to build with the old tsc and were ignored

tsconfig.tests.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
    • Project Scope

tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
    • Project Scope

getsentry/sentry-javascript

265 of 271 projects failed to build with the old tsc and were ignored

packages/tanstackstart/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

packages/react-router/tsconfig.vite.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

tldraw/tldraw

29 of 33 projects failed to build with the old tsc and were ignored

apps/dotcom/zero-cache/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

upstash/context7

2 of 5 projects failed to build with the old tsc and were ignored

packages/sdk/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

vercel/swr

8 of 10 projects failed to build with the old tsc and were ignored

tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

e2e/test/tsconfig.json

  • error TS5101: Option 'downlevelIteration' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
    • Project Scope

@jakebailey jakebailey force-pushed the deprecate-downlevelIteration branch from 6c8f5dc to ffafc51 Compare February 4, 2026 20:09
@github-project-automation github-project-automation bot moved this from Not started to Needs merge in PR Backlog Feb 4, 2026
@jakebailey jakebailey enabled auto-merge February 4, 2026 20:14
@jakebailey jakebailey disabled auto-merge February 4, 2026 22:52
@jakebailey jakebailey added this pull request to the merge queue Feb 4, 2026
Merged via the queue into microsoft:main with commit 74885dd Feb 4, 2026
33 checks passed
@jakebailey jakebailey deleted the deprecate-downlevelIteration branch February 4, 2026 23:09
@github-project-automation github-project-automation bot moved this from Needs merge to Done in PR Backlog Feb 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Author: Team Breaking Change Would introduce errors in existing code For Uncommitted Bug PR for untriaged, rejected, closed or missing bug

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants