The migration brought concrete outcomes: a unified toolchain where every contributor – engineers, technical writers, community members – needs only Dart. Interactive tutorials, now live on dart.dev/learn and docs.flutter.dev/learn, were built on the new foundation. dart.dev now compiles to WebAssembly on compatible browsers.
Jaspr’s success has also shaped its role in the ecosystem. I see it as an antithesis to the trend of AI causing everyone to converge onto the same stack. There is immense value in exploring alternative ecosystems: it pushes boundaries, surfaces new ideas, and keeps our industry vibrant.
For teams already working with Flutter and Dart, the argument is also a practical one: Jaspr and Flutter projects can share up to 100% of their business logic, models, and validation code. One language, one toolchain, one set of conventions – across mobile apps and the web.
At Netlight, I’ve always had the space to pursue work driven by curiosity and craft; the willingness to build the tools you want to use, not just the ones that already exist. Jaspr is what that looks like when you follow a problem all the way through.
Under the hood
One of the most deliberate decisions in Jaspr’s design was to use DOM-based rendering rather than the canvas approach Flutter Web takes. Canvas gives you pixel-perfect Flutter apps in the browser, but at a cost: SEO is poor, loading is heavier, and you’re isolated from the web platform. Jaspr’s rendering algorithm is closer to React – working directly with the DOM – which means better performance, better accessibility, and content that search engines can actually read.
Developer experience was a first-class priority from the start. Jaspr supports stateful hot-reload during development – preserving client-side state while swapping code instantly, which Dart’s compiler architecture makes uniquely possible. The framework also surfaces component scope hints in the editor: you can see at a glance whether a component renders server-side, client-side, or both – which matters a lot when you’re working across a full-stack Dart codebase.
For the Google migration, I built jaspr_content; a plugin for Markdown-driven content sites that handles templating, data loading, and flexible customisation across flutter.dev and dart.dev’s 3,900+ pages. It’s now available as an open-source package for anyone building content-heavy sites in Dart. On the performance side, dart.dev now compiles to WebAssembly via Dart’s dart2wasm compiler on compatible browsers – delivering near-native runtime performance without a single line of JavaScript.
Kilian is a software engineering consultant at Netlight and the creator and maintainer of Jaspr. Read his full perspective on the framework's design, tooling, and future: Jaspr: Why web development in Dart might just be a good idea. Read Google’s account of the migration: We rebuilt Flutter’s websites with Dart and Jaspr.