I managed to get the Dart VM to compile to WebAssembly so that I can compile Dart programs in the browser. Dart ships with a basic ARM interpreter and by using that, hot reload works directly in the browser.
It's 7.6 MB gzipped and there's no server running behind it, so I was able to host it directly on github pages.