Automatic Lifecycle
No more "if (mounted)" checks. Subscriptions cancel, tasks stop, state disposes — all tied to widget lifecycle.
Lifecycle-aware ViewModels for Flutter.

class CounterViewModel extends ViewModel {
late final count = state(0);
void increment() => count.update((n) => n + 1);
}class CounterPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final vm = context.vm<CounterViewModel>();
return vm.count.build(
(count) => Text('$count'),
);
}
}