riverpod-auto-dispose

Enable automatic disposal of Riverpod providers after one frame without listeners.

Updated Mar 28, 2026
One-click install
npx skills add https://github.com/masssi164/weave --skill riverpod-auto-dispose-masssi164
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: riverpod-auto-dispose
Source: https://github.com/masssi164/weave/tree/main/.agent/skills/riverpod-auto-dispose
Command: npx skills add https://github.com/masssi164/weave --skill riverpod-auto-dispose-masssi164

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Enable automatic disposal of Riverpod providers when they have no listeners. This helps prevent memory leaks and unnecessary work by releasing resources as soon as a provider is no longer observed.

Core Features & Use Cases

  • Automatic disposal when a provider has zero listeners for one frame to free memory and stop work.
  • Enabling options: default code generation (keepAlive disabled) or manual with isAutoDispose: true (Provider.autoDispose or @Riverpod(...)).
  • Lifecycle hooks and control: ref.onDispose for cleanup, ref.invalidate to force disposal, and ref.keepAlive to temporarily preserve results.
  • Use Case: prevent leaks in long-running apps and manage resources for parameterized providers by avoiding infinite caching.

Quick Start

Add autoDispose to your Riverpod provider to enable automatic disposal when it has no listeners.

Frequently Asked Questions about riverpod-auto-dispose

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I automatically dispose of Riverpod providers to prevent memory leaks in Flutter?

To automatically dispose of Riverpod providers and prevent memory leaks, enable autoDispose so providers release resources when they have zero listeners for one frame. You can activate this using codegen annotations or Provider.autoDispose in your Flutter app.

What is the difference between ref.keepAlive and ref.onDispose in Riverpod state management?

In Riverpod state management, ref.onDispose executes cleanup logic when a provider is destroyed, while ref.keepAlive temporarily preserves provider results to prevent automatic disposal despite having no active listeners.

How do I configure autoDispose for parameterized Riverpod providers?

To configure autoDispose for parameterized Riverpod providers, apply Provider.autoDispose or disable keepAlive in codegen. This avoids infinite caching by ensuring the provider disposes when it loses listeners, managing memory for dynamic arguments.

When does a Riverpod autoDispose provider actually trigger resource cleanup?

A Riverpod autoDispose provider triggers resource cleanup after exactly one frame of having zero active listeners. This delayed disposal mechanism ensures resources are released efficiently without interrupting rapid UI rebuilds during navigation.

Can I force the disposal of a Riverpod provider manually?

Yes, you can force the disposal and state invalidation of a Riverpod provider manually by calling ref.invalidate. This triggers the ref.onDispose lifecycle hook and destroys the current state, forcing a fresh computation on the next read.

Does Riverpod code generation enable autoDispose by default?

Yes, Riverpod code generation enables autoDispose by default when the keepAlive parameter is not specified or set to false. This ensures automatic resource cleanup occurs unless you explicitly override the lifecycle behavior.