riverpod-3-0-migration
Migrate Riverpod from 2.0 to 3.0; automatic retry, paused listeners, legacy providers import, Ref simplification, FamilyNotifier removal, ProviderException…
Skill by serverpod
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/serverpod-riverpod-3-0-migration
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/riverpod-3-0-migration
What's inside
- Skill name
riverpod-3-0-migration- Description
- Migrate Riverpod from 2.0 to 3.0; automatic retry, paused listeners, legacy providers import, Ref simplification, FamilyNotifier removal, ProviderException, updateShouldNotify. Use when the user asks about Riverpod 3 migration, upgrading to Riverpod 3, or breaking changes in 3.0.
- License
- BSD-3-Clause
- Instructions
- 71 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Riverpod — Migrating from 2.0 to 3.0 For a full list of changes and highlights, see the official Riverpod docs (What's new in Riverpod 3.0). This skill summarizes the main migration steps. ## Automatic retry Failing providers are **retried by default** in 3.0. To disable globally: ```dart ProviderScope(retry: (retryCount, error) => null, child: MyApp()) // or ProviderContainer(retry: (retryCount, error) => null) ``` To disable per provider, pass **retry: (retryCount, error) => null** when defining the provider (or `@Riverpod(retry: ...)` with codegen). See riverpod-retry. ## Out-of-view providers are paused Listeners in widgets that are not visible (e.g. off-screen) are **paused** by default. There is no global switch. To keep a subtree from pausing, wrap it in **TickerMode(enabled: true, child: ...)** so the Consumer(s) inside do not follow the pause behavior. ## Legacy providers (StateProvider, StateNotifierProvider, ChangeNotifierProvider) These are **moved to a legacy import**. They are not removed but discouraged. To keep using them: ```dart import 'package:flutter_riverpod/legacy.dart'; // or hooks_riverpod/legacy.dart, riverpod/legacy.dart ``` ## Updates use == All providers now use **==** to filter updates (no longer **identical**). **StreamProvider** / **StreamNotifier** values are compared with ==. To customize, override **updateShouldNotify(previous, next)** on the Notifier (e.g. return true to always notify). ## ProviderObserver API change Observer methods now receive a single **ProviderObserverContext** (with container, provider, and optional mutation) instead of separate (provider, value, container) parameters. Update signatures, e.g.: - **didAddProvider(ProviderObserverContext context, Object? value)** (and similar for other callbacks). ## Ref simplified; Ref subclasses removed - **Ref** no longer has a type parameter. Use **Ref** everywhere (e.g. replace **MyProviderRef** with **Ref** in codegen). - **ProviderRef.state**, **Ref.listenSelf**, **FutureProviderRef.future** are **moved onto Notifier/AsyncNotifier**: use **Notifier.state**, **Notifier.listenSelf**, **AsyncNotifier.future** instead of on ref. If you need these, use a class-based Notifier/AsyncNotifier and call them on the notifier. ## AutoDispose type names removed AutoDispose is still supported, but the separate type names (e.g. **AutoDisposeProvider**, **AutoDisposeNotifier**) are unified. Use **Provider**, **Notifier**, etc. with the same behavior. Migration: case-sensitive replace **AutoDispose** with a space (empty string) in type names. ## Family Notifier types removed **FamilyNotifier**, **FamilyAsyncNotifier**, **FamilyStreamNotifier** are removed. Use **Notifier** / **AsyncNotifier** / **StreamNotifier** and pass the parameter via the **constructor** (and store it in a field). Remove the parameter from **build**; **build()** takes no family argument. Example: - Before: `FamilyNotifier<int, String>` with `int build(String arg)`. - After: `Notifier<int>` with constructor `MyNotifier(this.arg)` and `final String arg;`, and **int build()** using **arg**. ## ProviderException When a provider throws, the exception is wrapped in **ProviderException**. If you catch the original type (e.g. **on NotFoundException**), change to **on ProviderException catch (e)** and check **e.exception is NotFoundException**. If you only use **AsyncValue** and **value.hasError** / **value.error**, no change needed. ## Summary - Retry: disable via **retry** on scope/container or provider. - Pause: use **TickerMode(enabled: true)** where you don’t want pausing. - Legacy: use **flutter_riverpod/legacy.dart** (or equivalent) for StateProvider / StateNotifierProvider / ChangeNotifierProvider. - Ref: use plain **Ref**; move **state** / **listenSelf** / **future** to Notifier/AsyncNotifier. - AutoDispose: remove “AutoDispose” from type names. - Family notifiers: use Notifier/AsyncNotifier with constructor argument; **build()** has no parameter. - Errors: catch **ProviderException** and inspect **exception** when you need the original type. For version highlights and more detail, see the official Riverpod documentation.
From serverpod/skills-registry, BSD-3-Clause.
More from serverpod/skills-registry
- 0.475score
riverpod-faq-and-practices
serverpod
Answers Riverpod FAQ (ref.refresh vs invalidate, ConsumerWidget vs StatelessWidget, Ref vs WidgetRef, reset all providers, ref after unmount) and do/don't…
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-getting-started
serverpod
Install Riverpod (flutter_riverpod or riverpod), wrap the app in ProviderScope, run a hello-world provider, and optionally enable riverpod_lint and code…
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-eager-initialization
serverpod
Eagerly initialize Riverpod providers at app startup by watching them in a root Consumer; handle loading/error in the initializer, AsyncValue.requireValue.
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-family
serverpod
Use Riverpod family providers to pass parameters and cache per parameter; FutureProvider.family, NotifierProvider.family, autoDispose with family, overriding…
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-containers
serverpod
Use ProviderScope in Flutter and ProviderContainer in Dart for Riverpod; where provider state is stored, overrides, observers, testing with…
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-from-provider
serverpod
Migrate from package:provider to Riverpod; ChangeNotifierProvider, ProxyProvider to ref.watch, context.watch to ref.watch, ConsumerWidget, incremental…
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-testing
serverpod
Test Riverpod providers and widgets; ProviderContainer.test, unit tests, widget tests with ProviderScope, tester.container(), mocking with overrides…
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-auto-dispose
serverpod
Enable automatic disposal of Riverpod providers when they have no listeners; keepAlive, onDispose, invalidate, ref.keepAlive.
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-cancel
serverpod
Cancel or debounce Riverpod async requests with ref.onDispose; cancel when user leaves the page, debounce rapid refreshes.
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-codegen-and-hooks
serverpod
Use Riverpod code generation (@riverpod, riverpod_generator) and hooks (hooks_riverpod, HookConsumerWidget, flutter_hooks with Riverpod).
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-consumers
serverpod
Use Riverpod Consumer, ConsumerWidget, and ConsumerStatefulWidget to read and watch providers in widgets; WidgetRef, builder ref parameter.
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-migration
serverpod
Migrate Riverpod from StateNotifier to Notifier/AsyncNotifier, from ChangeNotifier to AsyncNotifier, or upgrade from 0.13/0.14/1.0; ref.onDispose, family…
SkillDFreshness: D★ 10Claude Code +9
Signals
- Stars
- 10
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Mar 7, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- BSD-3-Clause
- Repository
- github.com/serverpod/skills-registry
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from serverpod
- 0.475score
riverpod-cancel
serverpod
Cancel or debounce Riverpod async requests with ref.onDispose; cancel when user leaves the page, debounce rapid refreshes.
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-consumers
serverpod
Use Riverpod Consumer, ConsumerWidget, and ConsumerStatefulWidget to read and watch providers in widgets; WidgetRef, builder ref parameter.
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-testing
serverpod
Test Riverpod providers and widgets; ProviderContainer.test, unit tests, widget tests with ProviderScope, tester.container(), mocking with overrides…
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-auto-dispose
serverpod
Enable automatic disposal of Riverpod providers when they have no listeners; keepAlive, onDispose, invalidate, ref.keepAlive.
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-codegen-and-hooks
serverpod
Use Riverpod code generation (@riverpod, riverpod_generator) and hooks (hooks_riverpod, HookConsumerWidget, flutter_hooks with Riverpod).
SkillDFreshness: D★ 10Claude Code +9 - 0.475score
riverpod-containers
serverpod
Use ProviderScope in Flutter and ProviderContainer in Dart for Riverpod; where provider state is stored, overrides, observers, testing with…
SkillDFreshness: D★ 10Claude Code +9
Cite this page
riverpod-3-0-migration skill. Agent Mart. https://agentmart.dev/skills/serverpod-riverpod-3-0-migration (last updated 2026-10-24)