However, the Flutter engine, written in C++, is designed to interface with the
underlying operating system rather than a web browser. A different approach is
therefore required. On the web, Flutter provides a reimplementation of the
engine on top of standard browser APIs. We currently have two options for
rendering Flutter content on the web: HTML and WebGL. In HTML mode, Flutter uses
HTML, CSS, Canvas, and SVG. To render to WebGL, Flutter uses a version of Skia
compiled to WebAssembly called
CanvasKit. While HTML mode offers the
best code size characteristics, CanvasKit provides the fastest path to the
browser’s graphics stack, and offers somewhat higher graphical fidelity with the
native mobile targets5.

The web version of the architectural layer diagram is as follows: