SummaryIf you develop Dart Web or Flutter Web applications, you may need to take action to prevent development issues with Chrome 87.
Chrome 87 made a change that trips the Dart Web development compiler (DDC), which is used by `webdev serve` and `flutter run -d chrome`. Chrome 87 just got released on their dev channel. Once it arrives on the Chrome stable channel, the problem will be more visible.
A fix landed on master and Dart 2.9.3, and will be part of the upcoming beta releases. These releases will be available before Chrome 87 is available in the stable channel, so most users will require no action. If you encounter the issue in the future, confirm that you are using an SDK with the fix. If you can't upgrade to 2.9.3 or a newer SDK, a mitigation is available below.
The problemTo support DOM APIs from Dart, DDC stores data as hidden symbols on the constructor of types declared in `dart:html`. Chrome removed the constructor for one type (`MemoryInfo`) and as a result broke a DDC invariant. The downstream effect in DDC was that dynamic calls on arbitrary objects started failing (see
#43287 and #43193 for details). Apps compiled with dart2js running on the same page also broke.