Sitelet https://github.com/dart-lang/webdev/pull/2874
Skip to content

[webdev] Add support for --[no-]deprecated-js-interop - #2874

Open
biggs0125 wants to merge 1 commit into
dart-lang:mainfrom
biggs0125:deprecated-js-interop-flag
Open

biggs0125 wants to merge 1 commit into
dart-lang:mainfrom
biggs0125:deprecated-js-interop-flag

Conversation

@biggs0125

@biggs0125 biggs0125 commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

The Dart SDK added a --[no-]deprecated-js-interop flag to its web compilers (https://dart-review.googlesource.com/c/sdk/+/555460, https://dart-review.googlesource.com/c/sdk/+/555500). With --no-deprecated-js-interop, the compilers reject imports of dart:html, dart:js, dart:js_util, package:js and the other deprecated JS interop libraries.

This adds the flag to webdev serve, webdev build and webdev daemon. It matches the flag added to flutter build web/run/drive/test.

  • New flag: --[no-]deprecated-js-interop, with --help text. If it isn't passed, nothing is forwarded and the SDK default applies, so older SDKs keep working.
  • Forwarded to build_runner as --define for the four build_web_compilers builders that must agree on it: ddc, ddc_modules, dart2js_modules and entrypoint. This covers DDC, dart2js, the kernel worker and the Frontend Server (web hot reload). Changing the value invalidates cached outputs through build_runner's option digest.
  • Forwarded to dwds through BuildSettings, so expression evaluation uses the same setting.
  • Version check. If the flag is passed and the project's build_web_compilers is older than 4.9.0, webdev stops early with "could not run with --no-deprecated-js-interop for this project" instead of failing inside build_runner.
  • Error output. Compiler diagnostics, including dart2js's import tree, come from build_web_compilers and are printed as [SEVERE] build logs. No change to webdev's logging.
  • README help output is updated.

Depends on DWDS PR: #2875

@biggs0125 biggs0125 changed the title Add support for --[no-]deprecated-js to webdev and dwds Add support for --[no-]deprecated-js-interop to webdev and dwds Oct 3, 2026
@biggs0125
biggs0125 requested review from Markzipan and nshahan October 3, 2026 03:27
The Dart SDK added a `--[no-]deprecated-js-interop` flag to its web compilers (https://dart-review.googlesource.com/c/sdk/+/555460, https://dart-review.googlesource.com/c/sdk/+/555500). With `--no-deprecated-js-interop`, the compilers reject imports of `dart:html`, `dart:js`, `dart:js_util`, `package:js` and the other deprecated JS interop libraries.

This adds the flag to `webdev serve`, `webdev build` and `webdev daemon`. It matches the flag added to `flutter build web/run/drive/test`.

- **New flag:** `--[no-]deprecated-js-interop`, with `--help` text. If it isn't passed, nothing is forwarded and the SDK default applies, so older SDKs keep working.
- **Forwarded to build_runner** as `--define` for the four build_web_compilers builders that must agree on it: `ddc`, `ddc_modules`, `dart2js_modules` and `entrypoint`. This covers DDC, dart2js, the kernel worker and the Frontend Server (web hot reload). Changing the value invalidates cached outputs through build_runner's option digest.
- **Forwarded to dwds** through `BuildSettings`, so expression evaluation uses the same setting.
- **Version check.** If the flag is passed and the project's `build_web_compilers` is older than 4.9.0, webdev stops early with "could not run with --no-deprecated-js-interop for this project" instead of failing inside build_runner.
- **Error output.** Compiler diagnostics, including dart2js's import tree, come from build_web_compilers and are printed as `[SEVERE]` build logs. No change to webdev's logging.
- README help output is updated.

Depends on DWDS PR: dart-lang#2875
@biggs0125
biggs0125 force-pushed the deprecated-js-interop-flag branch from f00b3fd to 9f32747 Compare October 3, 2026 03:33
@biggs0125 biggs0125 changed the title Add support for --[no-]deprecated-js-interop to webdev and dwds [webdev] Add support for --[no-]deprecated-js-interop Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants