kaisel | kaiselSkip to contentThe idea behind kaisel — Flutter Routes as Values →<br>kaisel<br>Routes as values. A Dart 3-native router for Flutter — no string paths, no codegen.
Get StartedView on GitHub
Get started<br>Terminal windowflutter pub add kaisel
The getting started guide takes you from install to<br>navigating with typed routes in a few minutes — sealed class, exhaustive<br>switch, done.
Sealed routes, exhaustive builds<br>Navigation is a switch over a sealed type. Add a route and the compiler<br>finds every place that must handle it — no runtime “unknown route” left.
The stack is a value<br>Your history is a List of route objects. Push, pop, and set are list<br>operations — testable without a widget tree, restorable across process<br>death.
Every navigation. One observer.<br>Register a standard NavigatorObserver once — it sees tab switches and<br>adaptive in-place changes that produce no route event in other routers.
Zero codegen<br>No build_runner, no generated files, no magic strings. Routes are plain<br>Dart classes you already know how to write.
Learn<br>Tutorial: your first app<br>The mental model<br>Navigation<br>Shells & tabs<br>Modal flows<br>Adaptive layouts<br>Guards<br>URLs & deep linking
Migrate<br>Migration overview<br>From go_router<br>From auto_route<br>From Navigator<br>Roadmap<br>API reference