ref.watch vs ref.read in Riverpod: what is the difference and when do I use each?
ref.watch subscribes and rebuilds, ref.read reads once and never rebuilds. Use watch in every build method and read only inside event callbacks. Here is the decision matrix, the source of both methods in flutter_riverpod 3.4.3, and the four silent failure modes: watch in a callback, read in a provider body, read on an autoDispose provider, and read used as an optimization.