)]}'
{
  "commit": "a216bc2bc0fe953a4f445884442ca52cd7fd075e",
  "tree": "3a43ba7ecdec9615ee6064d645bc2c1f27be8916",
  "parents": [
    "ce6e766ad1ca31a720fe404aea3501dab2d9bcad"
  ],
  "author": {
    "name": "Nate Biggs",
    "email": "biggs0125@gmail.com",
    "time": "Tue Oct 06 02:00:51 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Oct 06 02:00:51 2026 +0000"
  },
  "message": "Reland: [tool] Add support for --[no-]deprecated-js-interop to the flutter tool (#193877)\n\nAdd `--[no-]deprecated-js-interop` flag for web compilation\nAdds a `--[no-]deprecated-js-interop` flag to `flutter build web`,\n`flutter run`, `flutter drive` and `flutter test`. The tool passes it to\nthe Dart web compilers, which recently gained this option:\n- https://dart-review.googlesource.com/c/sdk/+/555460\n- https://dart-review.googlesource.com/c/sdk/+/555500\nWith `--no-deprecated-js-interop`, the compilers reject imports of the\ndeprecated JS interop libraries (`dart:html`, `dart:js`, `dart:js_util`,\n`dart:svg`, `dart:indexed_db`, `dart:web_audio`, `dart:web_gl`, and\n`package:js` through its re-export of `dart:js_util`). dart2js also\nprints the import chain that brings each library in.\n### Changes\n**Passing the flag through**\n- The flag has three states. When it isn\u0027t set, nothing is passed and\nthe SDK default applies.\n- It is passed to:\n- dart2js, in both the CFE (kernel) phase and the JS compile phase,\nsince dart2js checks again when loading the dill;\n- DDC, through the frontend server, for `flutter run -d chrome` and\n`flutter test --platform chrome`.\n- It is not passed to dart2wasm.\n- The flag value is part of the `JsCompilerConfig` build key and of the\ncached kernel (`--initialize-from-dill`) path for DDC and web tests.\nChanging the flag invalidates old builds,\nand the incremental compiler never starts from a kernel file built with\na different value.\n**dart2js error output**\n- Before, a failing dart2js run threw a `ProcessException`. Its\ndiagnostics were buried in a single `Target dart2js failed:\nProcessException: ...` message.\n- Now the tool prints dart2js\u0027s stdout (where its diagnostics go) and\nits stderr to the tool\u0027s stderr, then exits with `Failed to compile\napplication for the Web.` This applies to all dart2js failures and\nmatches how DDC compile errors already appear.\n**Wasm dry run de-duplication**\n- With `--no-deprecated-js-interop`, the default wasm dry run of\n`flutter build web` no longer prints findings for deprecated JS interop\nimports, because dart2js already reports them as errors. These are\ndry-run codes 0 (`noDartHtml`), 1 (`noDartJs`), 14 (`noPackageJs`) and\n15 (`noDartJsUtil`).\n- Other findings, such as interop checks and lint violations, are still\nshown.\n- If no findings remain, the dry run prints nothing.\n- All findings, including the hidden ones, are still sent to analytics.\n\n---------\n\nCo-authored-by: Nate Biggs \u003cnatebiggs@google.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "878bac41aa33b20c1f8781960491ff92603c17c5",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/base/process.dart",
      "new_id": "c3124cd594cd5e71db23896ef59eff62e8c14cc6",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/base/process.dart"
    },
    {
      "type": "modify",
      "old_id": "17b5c352531ac855af57fa0218f1549ea5db234f",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/build_info.dart",
      "new_id": "3fb7b79f62b1022dcced91c1cdd8e36403149a1a",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/build_info.dart"
    },
    {
      "type": "modify",
      "old_id": "9fd3b54a74adb4e1aa27e8bf21a7451f69d55e45",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/build_system/targets/web.dart",
      "new_id": "7e2d1500aebabb9a3dfaf4fb359f38b95b39a68e",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/build_system/targets/web.dart"
    },
    {
      "type": "modify",
      "old_id": "8af152b06357a902a1a7e7d45270227530323397",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/commands/build_web.dart",
      "new_id": "36d6d90c9f9f8a379c595d1636a9d6b684dffbdf",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/commands/build_web.dart"
    },
    {
      "type": "modify",
      "old_id": "3cffa9ba44882ebe612f64de5b250ae9f0fd16f1",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/commands/run.dart",
      "new_id": "5d767acdcb1a7e79360ddd115d0f3eb813b202ca",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/commands/run.dart"
    },
    {
      "type": "modify",
      "old_id": "1811f180ff48e2536159355ca3e13b50e8c3cedc",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/commands/test.dart",
      "new_id": "b97da11ef7c769bda849b2c5635ef95fc7a4f11d",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/commands/test.dart"
    },
    {
      "type": "modify",
      "old_id": "4b9ae82baed40fae2a9152fd4a919da29882066b",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/compile.dart",
      "new_id": "bef7c17598a001ef52e46dc4f49c00693e1a9843",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/compile.dart"
    },
    {
      "type": "modify",
      "old_id": "006a5fdb36028f4b7bed2340303f3676804dbae7",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/isolated/resident_web_runner.dart",
      "new_id": "448a2566c25ae6f3ed4b762e8143e8f9e88ba97a",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/isolated/resident_web_runner.dart"
    },
    {
      "type": "modify",
      "old_id": "cec7a0f429e250f3e002f64d058966dde66415d8",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/resident_runner.dart",
      "new_id": "26c09b5e0fc0052deca2ec8707dad630d910e12b",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/resident_runner.dart"
    },
    {
      "type": "modify",
      "old_id": "9b17ea166ea00dd8070414d2936141fe1691d782",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/runner/flutter_command.dart",
      "new_id": "e1dcb747fff07eca71dcbd5ce5e8768112962700",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/runner/flutter_command.dart"
    },
    {
      "type": "modify",
      "old_id": "1cbfffe0340e11e8325c4a44d39dbbc5510eae72",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/test/web_test_compiler.dart",
      "new_id": "e1144ac53c57a836c557ebaa7e6a71fc59758375",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/test/web_test_compiler.dart"
    },
    {
      "type": "modify",
      "old_id": "6daf89a30a48dc65968d59c6fbaf61e6b85557eb",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/web/compiler_config.dart",
      "new_id": "caac42ea39b86ecd09c905a98af16da27fa4d193",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/web/compiler_config.dart"
    },
    {
      "type": "modify",
      "old_id": "1030341f87214ce8f46243b2b9027d925cfa8f2d",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/lib/src/web/web_options.dart",
      "new_id": "d5094256379a4e12ba2a89793371180042a79981",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/lib/src/web/web_options.dart"
    },
    {
      "type": "modify",
      "old_id": "da009bbbcd364cefc0ebfaa868d246d5c7fc4efb",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart",
      "new_id": "f8d2be52be736437bb4d4e5709eeef7950d27ea2",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/commands.shard/hermetic/build_web_test.dart"
    },
    {
      "type": "modify",
      "old_id": "beb77fd30af308614564eefe26670cde415fd70a",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart",
      "new_id": "aa4d2e74c727a4748f227cca5283b8c655d7d3b4",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/commands.shard/hermetic/drive_test.dart"
    },
    {
      "type": "modify",
      "old_id": "ca312aecd8d2b5f5a01388f8ba2af9a503554d95",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/commands.shard/hermetic/run_test.dart",
      "new_id": "2594a3893c8865efd19c89f67b569ae24a852a02",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/commands.shard/hermetic/run_test.dart"
    },
    {
      "type": "modify",
      "old_id": "f4f4590773aad949443a73d6efbd675b16609ae0",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/commands.shard/hermetic/test_test.dart",
      "new_id": "fd416498758db8b1042d2039c69680529f3f3bbc",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/commands.shard/hermetic/test_test.dart"
    },
    {
      "type": "modify",
      "old_id": "6729a61318e6be163eaf41a42239442faa2000af",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/base/process_test.dart",
      "new_id": "aea36450aeb59d4228cead5296956de8625f3658",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/base/process_test.dart"
    },
    {
      "type": "modify",
      "old_id": "a657e06bf6a7042f7f7bd96acc2ab49a91cc1c13",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/build_info_test.dart",
      "new_id": "ecef887ecf7d8f02574395cccf6d8db7cb2e5197",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/build_info_test.dart"
    },
    {
      "type": "modify",
      "old_id": "502eca0b0b392bf0852bea70708e364fe7e113bc",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/build_system/targets/web_dry_run_test.dart",
      "new_id": "5e1be129da4c436aa622613ad68158df8dced146",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/build_system/targets/web_dry_run_test.dart"
    },
    {
      "type": "modify",
      "old_id": "929a79f73f37ecc61625fdc214c7dc695a30a0ff",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart",
      "new_id": "6da70ae1ade56c6adde83e22b2f90fe698f4a9d4",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart"
    },
    {
      "type": "modify",
      "old_id": "d55422e0cd3c898110786203710dcf43f744f15b",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/compile_incremental_test.dart",
      "new_id": "22cc51a6c3ffe1cb2f60333780b02a2a4c5d82c4",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/compile_incremental_test.dart"
    },
    {
      "type": "modify",
      "old_id": "a144ef083a13719caa0cc8d8a8212791e1eb7c68",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/compile_test.dart",
      "new_id": "9107ceb8704b200aeabac6db8e65a74b36b98f98",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/compile_test.dart"
    },
    {
      "type": "modify",
      "old_id": "46eea4b6cc7845b97b744b72309b5a29d14954a9",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/resident_web_runner_test.dart",
      "new_id": "7caac7328f87d0e964190e083ac1d25bf348f96c",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/resident_web_runner_test.dart"
    },
    {
      "type": "modify",
      "old_id": "4c6d8f09572f78f942b5b60227f68fbd5324954b",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart",
      "new_id": "c4a52b9b02f071ebfcdab944d6738d8297cf7187",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/general.shard/runner/flutter_command_test.dart"
    },
    {
      "type": "modify",
      "old_id": "c498a7b5ef6c45937349d17a8a253fe2d0604c8e",
      "old_mode": 33188,
      "old_path": "packages/flutter_tools/test/src/common.dart",
      "new_id": "b7833d3bb0db119ac5adb6ea9d737a9e5519b97c",
      "new_mode": 33188,
      "new_path": "packages/flutter_tools/test/src/common.dart"
    }
  ]
}
