Apart from it not being true that a canvas app cannot be lightweight, it also has a compiler which renders a mix of canvas and HTML so that inputs and text for example are normal elements: https://docs.flutter.dev/development/tools/web-renderers
As that page says which you will use depends on your app requirements, the canvas one is very performant but you pay the price in bundle size and accessibility (though that is being improved)