)]}'
{
  "commit": "8db55268667c738b90677d49857ff42938e9c9fa",
  "tree": "586360f956717e5ddc3de8f68aa3da60574749d6",
  "parents": [
    "4759fcb19077082efe3694ad633f2251a9c5a02e"
  ],
  "author": {
    "name": "Kevin Moore",
    "email": "kevmoo@users.noreply.github.com",
    "time": "Sat Sep 26 22:45:14 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Sep 26 22:45:14 2026 +0000"
  },
  "message": "wasm: enforce WasmGC opt-in capability checks and Firefox \u003c 147 guard (#193180)\n\nEnsures that when an application opts into WebAssembly on Firefox or\nSafari via `wasmAllowList` in JS/JSON bootstrap configuration,\n`FlutterLoader` strictly enforces `supportsDart2Wasm()` capability\nchecks and browser version guards before selecting any `dart2wasm`\nbuild:\n\n- **Firefox `\u003c 147` WasmGC Version Guard**: Guards `supportsDart2Wasm()`\nin `browser_environment.js` so Firefox `\u003c 147` falls back to `dart2js`\neven if `wasmAllowList: { gecko: true }` is configured.\n- **Unify `enableWasm` Gating Across All `dart2wasm` Targets**: Moves\nthe `!enableWasm` check in `loader.js` from\n`rendererIncompatibilityReason(\u0027skwasm\u0027)` into\n`buildIncompatibilityReason` for `build.compileTarget \u003d\u003d\u003d \u0027dart2wasm\u0027`,\npreventing `dart2wasm` + `canvaskit` builds from bypassing\n`wasmAllowList` opt-outs.\n- **Explicit Opt-In Fallback Test**: Adds test coverage in\n`fallbacks_test.dart` verifying that `flutter.loader.load()` with\n`wasmAllowList` explicitly enabled for all engines still rejects\n`dart2wasm` builds when `supportsDart2Wasm` is false.\n\nPart of https://github.com/flutter/flutter/issues/143603",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "65af210c2e54edb18b5d04c54069e80b855f0661",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/flutter_js/src/browser_environment.js",
      "new_id": "575ce8b0c55cb47eca67e4ed7216704448409c81",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/flutter_js/src/browser_environment.js"
    },
    {
      "type": "modify",
      "old_id": "b8a2fcd4a896849fdea98e63bf91a3b02d1327ed",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/flutter_js/src/loader.js",
      "new_id": "c70e0783d36f22d34900314963bd63a28b640485",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/flutter_js/src/loader.js"
    },
    {
      "type": "modify",
      "old_id": "5f2a3cc64e3f95694a22c035e7f142749280656c",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/lib/web_ui/test/fallbacks/fallbacks_test.dart",
      "new_id": "62ce741887adc76e809daff7dc4ac5d1690d97a9",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/lib/web_ui/test/fallbacks/fallbacks_test.dart"
    }
  ]
}
