rrousselGit/riverpod
74.5
Strong · 23 September 2026
47.1k
lines of production code
Dart
primary language
4
measurements over time
What this system is
Riverpod is a reactive state management and dependency injection library for Dart and Flutter applications. It provides a suite of provider types—including synchronous, asynchronous, and stream-based variants—along with code generation tools to simplify state declaration and consumption. The system includes a DevTools extension for inspecting provider states, static analysis lints for code correctness, and experimental features for data persistence and mutations.
How it got here
2020–2021 — Riverpod 1.0 release and modularization
46 changes.
This period centered on the major Riverpod 1.0 release, introducing a new provider syntax with Notifier and code generation while restructuring the library into modular entry points. The legacy Provider framework was removed, and the monorepo was migrated to Dart pub workspaces with updated SDK constraints. Extensive documentation overhauls, new example applications, and comprehensive test coverage were added to support the new API surface.
2022–2023 — Internationalization and code generation foundation
41 changes.
This period focused on expanding the project's global accessibility by adding comprehensive documentation translations for Japanese, Spanish, Bengali, German, Korean, Russian, and Chinese. Simultaneously, the core infrastructure was modernized through the introduction of the riverpod\_annotation package and a refactored code generator, alongside a migration of the linting system to the analysis\_server\_plugin framework.
2024–2025 — Riverpod 3.0 core refactoring and localization
52 changes.
This period focused on the major architectural overhaul of the Riverpod core library, introducing functional providers, AsyncNotifier, and mutation handling while restructuring internal implementations. Concurrently, the project significantly expanded its internationalization efforts by adding comprehensive documentation translations for Korean, Japanese, and Turkish locales. The work also included the introduction of experimental persistence and mutation APIs, supported by extensive test coverage and internal tooling updates.
2026 — Riverpod DevTool initial scaffolding
7 changes.
This period focused on establishing the foundational structure for the Riverpod DevTool, including the core Flutter application, code generator, and a debug testbed. It introduced the primary UI features for state inspection and provider management, alongside essential development scripts and unit tests to ensure reliability. Additionally, Arabic localization was added to the documentation website to broaden accessibility.
Features
Add Marvel example UI components
The Marvel example application now includes dedicated UI widgets for the user interface, specifically a reusable LoadingImage widget that handles network image loading with error and loading states, a static MarvelLogo asset, and a complex SearchBar component. The SearchBar provides an animated, focus-aware search experience that displays character suggestions and navigates to character details, leveraging hooks\_riverpod for state management and flutter\_hooks for lifecycle management.
examples/marvel/lib/src/widgets · high confidence
Add Marvel example application
Introduces a new Flutter example app that demonstrates how to perform HTTP requests, handle pagination, cancel in-flight requests, implement a search bar with independent state, support deep-linking, and optimize widget rebuilds. The example requires a \configurations.json\ file for Marvel API keys and uses the \freezed\ package for code generation.
examples/marvel · high confidence
Add Pub.dev example application
Introduces a new example app in the \examples/pub\ directory that demonstrates fetching and displaying package data from the pub.dev API. The app includes a search page with debounced queries, a package detail view with like/unlike functionality, and uses Riverpod code generation (\riverpod\_annotation\) alongside Freezed for data models and Dio for HTTP requests.
examples/pub · high confidence
Add Random Number example using Riverpod NotifierProvider
The examples/random\_number directory now contains a new Flutter application demonstrating a random number generator. This example showcases the Riverpod library by implementing a NotifierProvider to manage state, featuring a UI with a button that triggers state updates and a consumer widget that displays the generated random number.
_examples/random\number · high confidence
Add Riverpod Counter example using the new @riverpod generator syntax
The examples/counter directory now contains a standard Flutter Counter application that demonstrates the modern Riverpod API. The app uses the \@riverpod\ annotation on a \Counter\ class to define shared state, relying on the \riverpod\_generator\ to produce the \counterProvider\ and associated types in \main.g.dart\. Users can observe the state via \ref.watch\ and modify it through \ref.read(counterProvider.notifier).increment()\, with the entire tree wrapped in \ProviderScope\.
examples/counter · high confidence
Add Riverpod Todo example app
A new todo-list example application has been added to the repository, demonstrating advanced state management with Riverpod. The app showcases the use of NotifierProvider for complex business logic (adding, editing, toggling, and removing todos), StateProvider for managing filter states, and computed Providers to optimize performance by caching derived values like the count of uncompleted items and the filtered list. It also utilizes Flutter Hooks for managing text input controllers and includes UI components for filtering (All, Active, Completed) and swiping to dismiss items.
examples/todos · high confidence
Add Riverpod benchmarks directory with configuration
A new benchmarks directory has been added to measure Riverpod performance. It includes a README with instructions to run benchmarks via \flutter run\, an analysis options file tailored for the benchmark app (disabling specific linter rules like \type\_annotate\_public\_apis\ and \close\_sinks\), and standard Flutter project files (\.gitignore\, \.metadata\).
benchmarks · high confidence
Add State Inspector debug application
A new debug application has been added to the devtool suite to exercise and inspect various Riverpod provider states. This app includes a counter example, providers with complex data structures (nested lists, maps, records), async notifiers for loading and error states, and auto-disposed providers, providing a comprehensive testbed for the State Inspector feature.
_other\_projects/devtool\_debug\app · high confidence
Add build, test, and coverage automation scripts
New shell scripts are introduced to streamline the development workflow: \scripts/generate.sh\ runs \build\_runner\ in parallel across all packages containing it (excluding \riverpod\_analyzer\_utils\ to avoid duplication), \scripts/test\_all.sh\ executes the test suites for the \riverpod\, \flutter\_riverpod\, and \hooks\_riverpod\ packages sequentially, and \scripts/coverage.sh\ activates and runs the \coverage\ tool to generate test coverage reports.
scripts · high confidence
Add macOS platform support to the Marvel example app
The Marvel example application now includes a native macOS target, enabling users to build and run the app on macOS via Xcode. This change introduces the standard Flutter macOS project structure, including the Xcode project workspace, Swift application entry points (AppDelegate and MainFlutterWindow), and the necessary configuration files (Info.plist, entitlements, and xcconfigs) to support both Debug and Release builds.
examples/marvel/macos · high confidence
Added Arabic (ar) localization for the Riverpod documentation website
Users can now view the Riverpod documentation in Arabic. This change introduces the \website/i18n/ar\ locale directory, containing \code.json\ for UI strings (such as navigation, admonitions, and version labels) and \docusaurus-plugin-content-docs/current.json\ for sidebar and page metadata. It also includes translated MDX documentation files, covering the introduction, getting started guide, provider concepts, and the 3.0 migration guide, along with localized code snippets for examples like the 'Hello World' app.
website/i18n/ar · high confidence
Added Bengali (bn) documentation translations
The website now includes Bengali language support for the documentation site. This change adds the \website/i18n/bn\ locale directory containing \code.json\ for UI strings (such as 404 pages, blog pagination, search, and sidebar labels) and \current.json\ for documentation sidebar categories and example links. It also introduces Bengali translations for core concept guides, including providers, reading providers (watch, listen, read), combining providers, and modifiers like \autoDispose\ and \family\, along with their associated Dart code snippets.
website/i18n/bn · high confidence
Added Chinese (Simplified) documentation translations
Added the initial Chinese (Simplified) translation files for the Riverpod documentation, including the sidebar configuration (\current.json\) and translated Markdown pages for concepts such as code generation, hooks, provider combining, and case studies like pull-to-refresh and request cancellation.
website/i18n/zh-Hans/docusaurus-plugin-content-docs · high confidence
Added German translations for new Riverpod cookbooks
New German-language documentation has been added for the 'Pull-to-refresh / Retry-on-error', 'Search as we type', and 'Testing' cookbooks. These guides provide practical examples for implementing common patterns such as debounced search inputs, error handling, and unit/widget testing with provider overrides using \ProviderContainer\ and \ProviderScope\.
website/i18n/de/docusaurus-plugin-content-docs/current/cookbooks · high confidence
Added Japanese documentation for Riverpod migration motivation
A new Japanese-language guide has been added to explain the rationale for migrating from Provider to Riverpod. This documentation details Provider's limitations, such as issues with duplicate types, single-value emission, complex combining, lack of type safety, difficult state disposal, and testing overhead, while highlighting Riverpod's modern solutions like AsyncValue, ref.watch/ref.listen, autoDispose, and family modifiers.
_website/i18n/ja/docusaurus-plugin-content-docs/current/from\_provider, website/i18n/ja/docusaurus-plugin-content-docs/current/from\provider/motivation · high confidence
Added Japanese documentation for network request cancellation and pull-to-refresh patterns
New Japanese case study guides have been added to the documentation site. The 'cancel' guide explains how to manage network requests using debouncing and cancellation techniques via \ref.onDispose\ and \ref.watch\ in Riverpod. The 'pull\_to\_refresh' guide demonstrates how to implement pull-to-refresh functionality using \RefreshIndicator\ and \AsyncValue\ pattern matching, including handling loading and error states.
_website/i18n/ja/docusaurus-plugin-content-docs/current/case\studies · high confidence
Added Japanese documentation for provider select optimization
A new Japanese-language guide has been added to the advanced documentation section, explaining how to use the \select\ and \selectAsync\ features to optimize widget rebuilds. The content details how to filter provider updates by specific properties to improve performance, including handling asynchronous values, and provides code examples for implementation.
website/i18n/ja/docusaurus-plugin-content-docs/current/advanced · high confidence
Added Japanese documentation for testing Riverpod applications
The Japanese localization of the documentation now includes a new 'Testing' cookbook. This guide explains how to write tests for Riverpod providers, specifically covering how to avoid shared state between tests using \ProviderContainer\ and how to override providers with mock objects using \ProviderScope\ or \ProviderContainer\ overrides. The entry includes the main documentation page and several Dart/Flutter code snippets demonstrating these testing patterns.
website/i18n/ja/docusaurus-plugin-content-docs/current/cookbooks · high confidence
Added Japanese migration guides for Riverpod 0.13.0→0.14.0 and 0.14.0→1.0.0
New Japanese-language documentation has been added to the website's i18n folder, covering the migration paths from Riverpod 0.13.0 to 0.14.0 and from 0.14.0 to 1.0.0. These guides explain key syntax changes, such as the requirement for a second type argument in \StateNotifierProvider\, the shift to accessing the notifier via \.notifier\, and the unification of provider access to \ref.watch\. The documentation also details the usage of the \riverpod\_cli\ migration tool to automate these updates.
website/i18n/ja/docusaurus-plugin-content-docs/current/migration · high confidence
Added Korean (ko) documentation for Riverpod getting started and introduction
New Korean-language documentation has been added to the website, specifically covering the 'Getting Started' guide and the 'Why Riverpod' introduction. This includes instructions for installing the package via pubspec.yaml, enabling riverpod\_lint, and running initial 'Hello world' examples for both Flutter and Dart-only environments, as well as an explanation of Riverpod's reactive caching capabilities and motivation.
website/i18n/ko/docusaurus-plugin-content-docs/current/introduction · high confidence
Added Korean (ko) translations for core documentation pages
New Korean translations have been added for the 'Essentials' documentation section, covering topics such as combining requests, best practices (do's and don'ts), eager initialization, FAQs, making the first request, passing arguments, provider observers, side effects, testing, and websockets. These files provide localized guidance for Korean-speaking users on using Riverpod's core features.
website/i18n/ko/docusaurus-plugin-content-docs/current/essentials · high confidence
Added Korean documentation for Riverpod provider modifiers
New Korean-language documentation pages have been added for the \.autoDispose\ and \.family\ provider modifiers. These pages explain how to automatically destroy provider state when unused (\.autoDispose\) and how to create unique providers based on external parameters (\.family\), including usage examples, parameter restrictions, and common patterns like canceling HTTP requests or handling multiple parameters with Freezed or Equatable.
website/i18n/ko/docusaurus-plugin-content-docs/current/concepts/modifiers · high confidence
Added Korean migration guides for Riverpod 0.13.0–1.0.0 and Notifier APIs
New Korean-language documentation has been added to the migration section, covering upgrades from Riverpod 0.13.0 to 0.14.0 and 0.14.0 to 1.0.0, as well as migration paths from \ChangeNotifier\ and \StateNotifier\ to the new \Notifier\ and \AsyncNotifier\ APIs. These guides explain syntax changes, such as the unified \ref.watch\ pattern and the removal of \useProvider\, and provide instructions for using the \riverpod\_cli\ migration tool. A supporting Dart utility file (\utils.dart\) with annotated providers was also added to support code examples in the documentation.
website/i18n/ko/docusaurus-plugin-content-docs/current/migration · high confidence
Added Korean translations for Riverpod documentation
This update adds comprehensive Korean (ko) translations for the Riverpod documentation, including new case studies for debouncing/cancelling network requests and pull-to-refresh, as well as concept guides covering code generation, hooks, provider lifecycles, observers, and reading providers. These files provide localized explanations and code examples for Korean-speaking users.
website/i18n/ko/docusaurus-plugin-content-docs/current/concepts · high confidence
Added Korean translations for search and testing cookbooks
New Korean (ko) documentation pages and code snippets have been added for the 'Search as we type' and 'Testing' cookbooks. The 'Search as we type' page provides a guide on implementing debounced search bars using \FutureProvider\ and \StateProvider\, while the 'Testing' section explains how to isolate provider state between tests and override providers using \ProviderScope\ and \ProviderContainer\ for unit and widget testing.
website/i18n/ko/docusaurus-plugin-content-docs/current/cookbooks · high confidence
Added Russian translations for core Riverpod documentation
The documentation website now includes a complete Russian (ru) localization for the current version of the guides. This update adds translated sidebar labels and six core concept pages: Providers, Reading providers, Combining providers, ProviderObserver, and the \.autoDispose\ and \.family\ modifiers. Users can now access these essential concepts in Russian, improving accessibility for non-English speakers.
website/i18n/ru/docusaurus-plugin-content-docs · high confidence
Added Spanish documentation for Riverpod providers
New Spanish-language documentation has been added for the core provider types, including Provider, FutureProvider, StreamProvider, StateProvider, and StateNotifierProvider. These pages explain the specific use cases for each provider, such as caching synchronous or asynchronous operations, handling stream updates, and managing simple state changes, and include code snippets demonstrating how to implement and consume them in Flutter applications.
website/i18n/es/docusaurus-plugin-content-docs/current/concepts/modifiers, website/i18n/es/docusaurus-plugin-content-docs/current/providers · high confidence
Added Spanish documentation for StateProvider usage
The Spanish documentation for the StateProvider has been added to the website, providing users with translated examples and explanations. This includes code snippets demonstrating how to define a StateProvider, update state using both the \update\ method and direct \.state\ assignment, and integrate the provider with UI components like dropdowns and list views to manage and display sorted product data.
_website/i18n/es/docusaurus-plugin-content-docs/current/providers/state\provider · high confidence
Added Spanish documentation for getting started with Riverpod
New Spanish-language documentation has been added to the website, starting with a 'Getting Started' guide. This guide explains how to install the appropriate Riverpod package (hooks\_riverpod, flutter\_riverpod, or riverpod) based on the application type and provides 'Hello world' code examples for each variant, including the necessary ProviderScope setup and basic provider usage.
website/i18n/es/docusaurus-plugin-content-docs/current · high confidence
Added Spanish translation for the Testing cookbook
The Testing cookbook documentation is now available in Spanish, providing guidance on isolating state between tests and overriding provider behavior for mocking.
website/i18n/es/docusaurus-plugin-content-docs/current/cookbooks · high confidence
Added development and publishing scripts for the Riverpod DevTools extension
The \packages/riverpod\_devtool/scripts\ directory now includes \dev.sh\ and \publish.sh\ to streamline local development and release workflows. The \dev.sh\ script launches the Flutter application in Chrome with a simulated environment flag, while \publish.sh\ handles dependency retrieval, builds the DevTools extension, and validates the package before distribution.
_packages/riverpod\devtool/scripts · high confidence
Added diagram for reading providers
A new Excalidraw diagram titled 'How to read a provider' has been added to the website's static assets. This visual aid illustrates the decision flow for determining the correct method to read a provider based on the context, such as inside widgets, inside another provider, or within tests and Dart-only packages.
website/static/img/intro · high confidence
Added lint\_visitor\_generator package for AST visitor code generation
A new internal tooling package, lint\_visitor\_generator, has been added to generate Riverpod AST visitors. This package includes a build.yaml configuration and a builder implementation that scans for @\_ast annotated extensions to automatically generate mixin and class structures (such as RiverpodAstVisitor, RecursiveRiverpodAstVisitor, and CollectionRiverpodAst) for traversing and analyzing Dart code nodes.
_packages/lint\_visitor\generator · high confidence
Example app demonstrates offline persistence with Riverpod and SQFlite
The example application in \packages/riverpod\_sqflite/example/lib\ now includes two complete implementations for persisting provider state to a local SQLite database using \JsonSqFliteStorage\. One implementation (\generated.dart\) utilizes code generation (\@riverpod\, \@JsonPersist\) to automatically handle serialization and provider wiring, while the other (\manual.dart\) shows the equivalent setup using manual provider definition and explicit JSON encoding/decoding. Both examples demonstrate how to initialize the storage, configure cache options (such as caching indefinitely), and automatically sync state changes to the database.
_packages/riverpod\sqflite/example/lib · high confidence
Experimental mutation and persist APIs are now publicly exported
The \flutter\_riverpod\ and \hooks\_riverpod\ packages now expose experimental mutation and persistence capabilities through dedicated entry points. Users can import \packages/flutter\_riverpod/lib/experimental/mutation.dart\ to access mutation-related types such as \Mutation\, \MutationState\, and \MutationTransaction\, and \packages/flutter\_riverpod/lib/experimental/persist.dart\ to access persistence utilities like \Storage\, \StorageOptions\, and \PersistedData\. The same exports are available in \hooks\_riverpod\, enabling consistent access to these experimental features across both Flutter and Hooks-based Riverpod implementations.
_packages/flutter\_riverpod/lib/experimental, packages/hooks\riverpod/lib/experimental · high confidence
French documentation and sidebar translations added
The French localization for the Riverpod documentation site has been added, including the sidebar configuration in \current.json\ (with translated category and link labels) and core concept pages such as code generation, hooks, provider lifecycles, and modifiers.
website/i18n/fr/docusaurus-plugin-content-docs · high confidence
German documentation for .autoDispose and .family modifiers added
New German-language documentation pages have been added for the \.autoDispose\ and \.family\ provider modifiers. The \.autoDispose\ page explains how to automatically clean up provider state when it is no longer in use, including usage with \ref.keepAlive\ and handling disposal of HTTP requests. The \.family\ page details how to create parameterized providers, covering parameter constraints, combining \family\ with \autoDispose\ to prevent memory leaks, and passing multiple parameters using libraries like Freezed or Equatable.
website/i18n/de/docusaurus-plugin-content-docs/current/concepts/modifiers · high confidence
German documentation for Riverpod core concepts and migration guides added
This update adds the German (de) localization for the Riverpod documentation site, covering the core concepts of Providers, reading providers (watch, listen, read), combining providers, and ProviderObservers, along with migration guides for versions 0.13.0 to 0.14.0 and 0.14.0 to 1.0.0. The new files include translated markdown guides and the corresponding Dart code snippets used in the examples, ensuring German-speaking users have access to the same conceptual explanations and code patterns as the English documentation.
website/i18n/de/docusaurus-plugin-content-docs/current/concepts · high confidence
German documentation for Riverpod providers added
The German localization of the Riverpod documentation now includes guides for \FutureProvider\, \Provider\, \StateNotifierProvider\, and \StateProvider\. These new pages provide explanations and code snippets for handling asynchronous operations, caching synchronous calculations, managing complex state with \StateNotifier\, and handling simple state changes with \StateProvider\.
website/i18n/de/docusaurus-plugin-content-docs/current/providers · high confidence
Initial release of riverpod\_annotation package
The riverpod\_annotation package is introduced, providing the core annotations and types required by the riverpod code generator. This includes exports for provider types (such as Provider, FutureProvider, StreamProvider, Notifier, AsyncNotifier, and StreamNotifier), their corresponding elements, family overrides, and the AsyncValue hierarchy (AsyncLoading, AsyncData, AsyncError, AsyncResult). It also exposes internal implementation details like $Ref, $Family, and various modifier classes, along with utility annotations like $internal and $mustCallSuper, establishing the foundational API surface for Riverpod's static code generation.
_packages/riverpod\_annotation/lib, packages/riverpod\generator · high confidence
Initial scaffolding for Riverpod DevTool and its generator
This change introduces the foundational project structure for the Riverpod DevTool and its associated code generator. It adds the \riverpod\_devtool\ Flutter application package, including its metadata, analysis options, and README, alongside the \riverpod\_devtool\_generator\ package which contains the build configuration and the core generator logic for inspecting provider states. Additionally, a \devtool\_debug\_app\ is added in \other\_projects\ to serve as a testbed for the new tooling.
_other\_projects, packages/riverpod\_devtool, packages/riverpod\_devtool\generator · high confidence
Introduce AsyncNotifier and AsyncNotifierProvider for async state management
Users can now use the new AsyncNotifier and AsyncNotifierProvider classes to manage state that requires asynchronous initialization while retaining the ability to perform side-effects. This feature allows developers to build providers similar to FutureProvider but with the added capability to expose public methods for updates (e.g., caching network requests and allowing user-triggered changes). The implementation includes the core AsyncNotifier abstract class, the AsyncNotifierProvider, and support for parameterized providers via AsyncNotifierProviderFamily.
_packages/riverpod/lib/src/providers/async\notifier · high confidence
Introduce Riverpod DevTools extension with state inspection and provider management
This change adds the \riverpod\_devtool\ extension, providing a new UI for inspecting and managing Riverpod providers. Users can now view provider states, filter and search providers by origin or arguments, and inspect the internal state of providers via a variable tree. The extension includes a terminal for executing code against provider instances, an inspector settings dialog to control visibility of private members, and handles hot-restart scenarios to ensure state consistency. It also introduces a fuzzy search feature to highlight matching text in provider lists.
_packages/riverpod\devtool/lib · high confidence
Introduce StreamNotifier and StreamNotifierProvider
Adds the \StreamNotifier\ abstract class and \StreamNotifierProvider\ to the Riverpod library, providing a provider type that manages a \Stream\ of values. This allows developers to create providers that can mutate their state over time via a stream, similar to \FutureProvider\ but with continuous updates. The implementation includes the core provider class, an associated family provider for parameterized instances, and an orphan file defining the abstract notifier behavior.
_packages/riverpod/lib/src/providers/stream\notifier · high confidence
Introduce experimental mutation and persist APIs
The library now exposes two new experimental modules: \mutation.dart\ and \persist.dart\. The mutation module provides types for managing asynchronous state transitions, including \MutationTransaction\, \Mutation\, and various states like \MutationIdle\, \MutationPending\, \MutationSuccess\, and \MutationError\. The persist module introduces APIs for data persistence, exposing \StorageOptions\, \PersistedData\, \Storage\, \StorageCacheTime\, and related notifier and result types. These additions allow users to experiment with structured mutation handling and local storage persistence within the Riverpod ecosystem.
packages/riverpod/lib/experimental · high confidence
Introduce internal analyzer plugin with custom lint rules
The \internal\_lint\ package now provides an analysis server plugin that enforces four new internal lint rules: \avoid\_sub\_read\ (prevents using \sub.read()\ within Riverpod packages), \generic\_name\ (enforces uppercase T suffix and minimum length for generic type parameters), \show\_all\_public\_api\ (ensures \show\ combinators in exports match public API and offers a fix to update them), and \rule\_visitor\ (validates that custom analyzer rules correctly register node processors matching their visitor methods).
_packages/internal\lint · high confidence
Introduce riverpod\_analyzer\_utils package for shared analyzer logic
The new riverpod\_analyzer\_utils package centralizes shared utilities for Riverpod's static analysis tools. It exposes a comprehensive set of types and helpers for parsing and analyzing Dart code, including AST visitors, provider declaration models, dependency tracking structures, and type checkers for Riverpod-specific constructs like providers, widgets, and refs. This consolidation allows other Riverpod linting and analysis packages to reuse common logic rather than duplicating it.
_packages/riverpod\_analyzer\utils/lib · high confidence
Introduce riverpod\_analyzer\_utils package for static analysis
The new riverpod\_analyzer\_utils package provides the core utilities for Riverpod's static analysis and linting capabilities. It includes a generated AST visitor (nodes.g.dart) to identify Riverpod-specific code patterns, helper extensions for parsing argument lists and string manipulation, and a type-checking system to validate provider definitions and annotations. This package serves as the foundation for detecting issues such as missing provider scopes, invalid dependencies, and unsupported provider values during development.
_packages/riverpod\_analyzer\utils/lib/src · high confidence
Introduce structured Riverpod type checkers for analyzer utilities
The \riverpod\_analyzer\_utils\ package now includes a new set of \TypeChecker\ definitions organized into dedicated modules (\core\, \generator\, \legacy\_providers\, \providers\, and \widgets\). These checkers provide precise identification for Riverpod-specific types such as \ProviderBase\, \AsyncValue\, \NotifierProvider\, and various Flutter widget types like \ConsumerWidget\ and \HookConsumerWidget\. This structural change enables the analyzer to more accurately detect and validate Riverpod usage patterns by explicitly mapping internal and external type relationships.
_packages/riverpod\_analyzer\_utils/lib/src/riverpod\types · high confidence
Introduction of HookConsumer and StatefulHookConsumerWidget
The hooks\_riverpod package now provides HookConsumer and StatefulHookConsumerWidget, enabling Flutter widgets to simultaneously use flutter\_hooks and listen to Riverpod providers. HookConsumer allows stateless widgets to access providers via a builder function while utilizing hooks, and StatefulHookConsumerWidget extends this capability to stateful widgets, bridging the gap between the two libraries for combined usage.
_packages/hooks\riverpod/lib/src · high confidence
Introduction of \`@riverpod\` annotation and \`Raw\` type alias for provider generation
The \riverpod\_annotation\ package now exposes the core \Riverpod\ annotation class and its shorthand \riverpod\ constant, which allow developers to mark classes or functions for code generation. This change introduces the \dependencies\ parameter to explicitly control provider scoping behavior, ensuring that providers depending on scoped providers correctly declare their dependencies. Additionally, a \Raw\ type alias is added, enabling providers to return raw \Future\ or \Stream\ objects without automatic conversion to \AsyncValue\, and allowing the linter to accept otherwise unsupported return types like \ChangeNotifier\.
_packages/riverpod\annotation/lib/src · high confidence
Italian documentation and UI translations added
The website now includes a complete Italian localization for the documentation site. This adds Italian translations for all user-facing interface elements (such as navigation, search, and pagination) via \code.json\, translates the documentation sidebar categories and links in \current.json\, and provides Italian versions of key documentation pages including guides on code generation, hooks, combining providers, performance optimization, and case studies for pull-to-refresh and request cancellation.
website/i18n/it · high confidence
Japanese documentation for Riverpod concepts added
Added a comprehensive set of Japanese-language documentation pages for the Riverpod library, covering core concepts such as providers, code generation, hooks, combining providers, and provider modifiers like \.autoDispose\ and \.family\. The update includes explanatory text and Dart code snippets for reading state via \ref.watch\, \ref.listen\, and \ref.read\, as well as examples for \ProviderObserver\ and immutability.
website/i18n/ja/docusaurus-plugin-content-docs/current, website/i18n/ja/docusaurus-plugin-content-docs/current/concepts, website/i18n/ja/docusaurus-plugin-content-docs/current/essentials · high confidence
Japanese documentation for core Riverpod providers added
New Japanese documentation pages and code examples have been added for the core provider types: \Provider\, \StateProvider\, \StateNotifierProvider\, \ChangeNotifierProvider\, \FutureProvider\, and \StreamProvider\. These pages explain usage patterns such as caching computed results, managing immutable state with \StateNotifier\, handling asynchronous data with \FutureProvider\, and monitoring streams with \StreamProvider\, including specific examples for Todo lists and product sorting.
website/i18n/ja/docusaurus-plugin-content-docs/current/providers · high confidence
Korean documentation for migrating from Provider to Riverpod
Added Korean translations for the 'from\_provider' migration guide, including motivation, quickstart, and comparison sections. This helps Korean-speaking users understand the differences between the two libraries and follow a step-by-step migration path.
_website/i18n/ko/docusaurus-plugin-content-docs/current/from\provider · high confidence
Marvel example now supports offline mode with bundled mock data
The Marvel example application now includes a \FakeDio\ implementation and associated JSON fixtures (such as \characters.json\ and \character\_1009368.json\) that allow the app to run without an active internet connection or valid API keys. This change introduces a local data layer that intercepts API requests and returns pre-cached responses, enabling developers to test and demonstrate the UI and state management logic independently of the external Marvel API.
examples/marvel/lib/src · high confidence
New CodeSnippet component with localized template support
The website now uses a new \CodeSnippet\ component for displaying code examples, featuring a redesigned UI with a macOS-style title bar and window controls. This component introduces support for localized code snippets via \{@template}\ markers, allowing specific parts of the code to be translated without duplicating the entire block. It also includes logic to automatically trim snippet content based on start/end markers and handles multiple code variants (e.g., codegen vs. hooks) in tabs.
website/src/components/CodeSnippet · high confidence
New Feature component for landing page content blocks
A new Feature component has been added to the website to render content blocks on the landing page. This component displays a title, description, and either an image or a code snippet, with support for alternating left/right layouts via a direction prop. The styling includes responsive flexbox layouts, hover effects, and gradient text for titles, providing a consistent visual style for feature highlights.
website/src/components/Feature · high confidence
New Marvel example screens with Riverpod 1.0 and Freezed integration
The Marvel example application now includes the home and character detail screens, rewritten to use Riverpod 1.0.0 and the new ScopedProvider API. The home screen displays a paginated, searchable list of characters using debounced API requests and handles Dio errors in the UI, while the detail screen fetches individual character data via deep links with request cancellation support. State management relies on Freezed for immutable data classes and AsyncValue for handling loading, error, and data states across both screens.
examples/marvel/lib/src/screens · high confidence
New SQLite-based persistent storage for Riverpod
A new \JsonSqFliteStorage\ class has been added to the \riverpod\_sqflite\ package, enabling developers to persist Riverpod state directly into a local SQLite database. This storage implementation supports JSON serialization and integrates with the experimental \riverpod/experimental/persist.dart\ API, allowing for features like automatic expiration of cached data based on time durations and explicit destruction keys. Users can now open a database at a specified path, which automatically creates the necessary schema and cleans up any expired entries upon initialization.
_packages/riverpod\sqflite/lib/src · high confidence
New StackOverflow example application
Added a new StackOverflow client example that demonstrates using Riverpod with code generation, Freezed for data models, and Dio for API requests. The app fetches and displays Flutter-related questions from the StackOverflow API, featuring a paginated list view, pull-to-refresh, and scoped providers for UI optimization. It includes generated code for providers and JSON serialization, along with macOS platform support.
examples/stackoverflow · high confidence
New experimental annotations for persistence and dependency scoping
The \riverpod\_annotation\ package introduces three new experimental annotations in the \experimental\ directory to support advanced usage patterns. \RiverpodPersist\ and \JsonPersist\ enable third-party code generators to add persistence capabilities to Notifiers, with \JsonPersist\ specifically handling JSON-based storage for primitive types or objects with \fromJson\/\toJson\ methods. Additionally, the \Dependencies\ annotation allows non-provider objects (such as \Consumer\ widgets) to explicitly declare their reliance on scoped providers, enabling the linter to warn if those providers are not properly overridden in the widget tree.
_packages/riverpod\annotation/lib/experimental · high confidence
New landing page banner with code snippets
The website now features a redesigned landing page banner that includes a visual badge, updated branding, and two interactive code snippets demonstrating how to create and consume providers. This new component replaces the previous banner layout, providing a more modern look with gradient backgrounds and improved call-to-action buttons.
website/src/components/Banner · high confidence
New provider code generation tool
A new tool located in \tools/generate\_providers\ has been added to automatically generate provider boilerplate code. The \generate\_providers.dart\ script accepts arguments for \riverpod\ or \flutter\_riverpod\ and a target file, then produces generated code covering various provider types (such as \StateProvider\, \FutureProvider\, \NotifierProvider\, and \ChangeNotifierProvider\) with support for both \autoDispose\ and \family\ configurations. The tool also includes documentation generation logic in \src/docs.dart\ to provide macro-based documentation for features like \autoDispose\ and \family\.
tools · high confidence
New provider modifiers for selective listening and async handling
Riverpod introduces new modifiers to \ProviderListenable\ that allow more granular control over provider subscriptions. The \select\ modifier enables filtering rebuilds by watching only specific properties of a provider's state, while \selectAsync\ provides a similar capability for asynchronous providers, allowing developers to await specific data fields without triggering unnecessary rebuilds. Additionally, the \listenable\ modifier exposes a \ValueListenable\ for providers, facilitating integration with Flutter's existing listenable-based APIs, and the \future\ modifier on async providers allows awaiting the resolution of a provider's state directly.
packages/riverpod/lib/src/core/modifiers · high confidence
New pure Dart Riverpod example for Marvel API integration
The example application in \packages/riverpod/example/lib\ has been replaced with a pure Dart script that demonstrates using Riverpod without Flutter. This new example fetches comics from the Marvel Developer API, showcasing how to manage asynchronous provider dependencies (loading configuration before the repository) and resource disposal via \ProviderContainer\. It utilizes \Freezed\ for immutable data models and \Dio\ for HTTP requests, providing a concrete reference for non-Flutter Riverpod usage.
packages/riverpod/example/lib · high confidence
Riverpod 1.0.0 release
This change introduces Riverpod 1.0.0, marking a major version release of the library. The diff shows the introduction of new core files such as \\_internals.dart\ and \framework.dart\, which establish the foundational structure for the new API. It includes generated code for the devtool (\framework.g.dart\) to support debugging and inspection of provider states, and reorganizes internal exports to support the new provider syntax and modifiers. This release represents a significant structural update to the library's internals and public API surface.
packages/riverpod/lib/src · high confidence
Riverpod generator restructured with new JSON persistence and template-based code generation
The \riverpod\_generator\ package has been refactored to use a new template-based architecture for generating provider code, introducing dedicated template classes for families, notifiers, and providers. A significant new capability is the addition of \JsonGenerator\, which automatically generates JSON-specific persistence logic for notifiers annotated with \@JsonPersist\, handling encoding and decoding of primitive types, collections, and objects. The generator now also supports renaming family providers via \provider\_family\_name\_prefix\ in \build.yaml\ and allows customizing provider names with \provider\_name\_prefix\. Additionally, the generator now processes all part files within a library rather than just one, and includes improved error handling for syntax errors and conflict resolution between public and private providers.
_packages/riverpod\generator/lib · high confidence
Spanish documentation for Riverpod concepts and migration guides added
New Spanish-language documentation has been added to the website, covering core Riverpod concepts such as providers, reading providers, combining providers, and provider observers. The release also includes migration guides for upgrading from versions 0.13.0 to 0.14.0 and from 0.14.0 to 1.0.0, detailing syntax changes like the unification of \ref.watch\ and the removal of legacy methods like \useProvider\ and \context.read\.
website/i18n/es/docusaurus-plugin-content-docs/current/concepts · high confidence
Turkish language support added to documentation site
Added Turkish (tr) translations for the documentation website, including UI strings (code.json), sidebar labels, and translated content for guides, concepts, and migration pages (e.g., 3.0 migration, code generation, hooks).
website/i18n/tr · high confidence
Removals
Removal of legacy Provider framework implementation
The \lib/flutter\_hooks\_provider.dart\ entry point and the \lib/src/framework.dart\ implementation file have been deleted. This removes the legacy \Provider\, \ProviderOverride\, and \ProviderScope\ classes that were previously exported, effectively stripping this library of its core state management API.
lib/src · high confidence
Architecture
Core provider classes restructured into new internal implementation files
The internal implementation of the provider framework has been reorganized into dedicated source files: \functional\_provider.dart\, \notifier\_provider.dart\, and \provider.dart\. This change introduces the \$FunctionalProvider\ class to handle functional provider logic, defines the \AnyNotifier\ base class for all notifier types, and establishes the \ProviderBase\ sealed class as the common root for all providers. These structural updates underpin the migration to functional provider modifiers and unify the internal element handling, affecting how providers are instantiated and managed at the core level.
packages/riverpod/lib/src/core/provider · high confidence
Introduce common internal utilities and result types
This change adds a new \common\ library to Riverpod containing foundational internal utilities. It introduces a \$Result\ sealed class to unify data and error states, a \Tenable\ class to handle synchronous and asynchronous values with error support, and a \$Observable\ listenable for provider state management. Additionally, it provides environment constants (\kDebugMode\, \kReleaseMode\, \kProfileMode\), internal linting annotations for API visibility control, and helper extensions for stack traces and string formatting.
packages/riverpod/lib/src/common · high confidence
Behavioural changes
3 commits (0 fixes) modifying resources
A change to existing behaviour in resources — 3 commits, 13 files.
resources · medium confidence · unverified
Add Spanish documentation for Riverpod providers
Added Spanish translations for the documentation covering provider examples, including a basic todo list implementation using StateNotifierProvider, a filtered completed-todos provider, and navigation button logic demonstrating both unoptimized and optimized previous-page button patterns.
website/i18n/es/docusaurus-plugin-content-docs/current/providers/provider · high confidence
Added Flutter project metadata and analysis options for the example app
The example application now includes a .metadata file to track the Flutter SDK revision and channel, along with an analysis\_options.yaml file that configures linting rules. The analysis options exclude platform-specific build directories and disable specific linter rules (type\_annotate\_public\_apis, close\_sinks, avoid\_print, public\_member\_api\_docs) that are either unnecessary for example apps or cause false positives, ensuring the example code adheres to appropriate static analysis standards without being overly restrictive.
_packages/hooks\riverpod/example · high confidence
Added German documentation and code snippets for Riverpod 3.0.0 getting started
The German localization for the documentation site now includes a new 'Getting started' guide and corresponding Dart/Flutter code snippets. This addition provides users with translated instructions for installing Riverpod packages (flutter\_riverpod, hooks\_riverpod, and riverpod) and running 'Hello World' examples, reflecting the SDK constraint updates to Dart 3.7.0 and the package version bumps to 3.0.0-dev.12.
website/i18n/de/docusaurus-plugin-content-docs/current · high confidence
Added Japanese documentation for Riverpod getting started and rationale
The Japanese localization for the Introduction section now includes two new pages: 'Getting Started' and 'Why Riverpod'. The 'Getting Started' guide provides instructions for installing the package (both Flutter and Dart-only variants), enabling the riverpod\_lint custom lint, and running a 'Hello world' example, including an embedded DartPad for online experimentation. The 'Why Riverpod' page explains the framework's motivation, highlighting its ability to handle asynchronous data fetching, caching, and error handling automatically, illustrated with a simplified Pub.dev client example.
website/i18n/ja/docusaurus-plugin-content-docs/current/Introduction · high confidence
Added Korean documentation for Riverpod providers
Added Korean translations for the core provider documentation pages, including \ChangeNotifierProvider\, \FutureProvider\, \NotifierProvider\, \Provider\, \StateNotifierProvider\, \StateProvider\, and \StreamProvider\. The update also includes the associated Dart code snippets and example files (such as todo-list and product-sorting demos) to ensure the Korean documentation is complete and runnable.
website/i18n/ko/docusaurus-plugin-content-docs/current/providers · high confidence
Core API rework: TickerMode-based pausing and deprecation of .exists
The core provider interaction model has been updated to improve performance and reliability. Widgets now use TickerMode to automatically pause provider subscriptions when they are hidden, reducing unnecessary network requests and stream activity. The WidgetRef.exists method is deprecated in favor of the new ref.listen(provider.exist) pattern. Additionally, all provider errors are now reported to the Container's Zone, and race conditions in listener management and state scheduling have been fixed.
_packages/flutter\riverpod/lib/src/core · high confidence
Devtools extension configuration and publish settings
The Riverpod devtools extension now includes a \config.yaml\ file that defines its metadata, including the package name, version (1.0.0), issue tracker URL, and a specific Material icon code point. It also explicitly sets \requiresConnection\ to true. Additionally, a \.pubignore\ file has been added to control publishing, ensuring that only the \build\ directory is included in the published package.
packages/riverpod/extension · high confidence
Dynamic version display and centralized document metadata
The website now displays package versions (Riverpod, Flutter Riverpod, Hooks Riverpod, and generators) dynamically by reading directly from the pubspec.yaml files, ensuring the documentation always reflects the current library versions without manual updates. Additionally, a new centralized metadata file defines titles for all documentation pages across multiple languages (English, Chinese, Turkish, Russian, Korean), supporting the site's internationalization efforts and providing a single source of truth for page headings.
website/src · high confidence
Example app updated to Riverpod 1.0.0 API
The example application in packages/flutter\_riverpod/example/lib has been migrated to the Riverpod 1.0.0 release. This update introduces the ConsumerWidget base class for widgets that need to access providers, replaces the legacy read-only access pattern with ref.watch for state observation, and utilizes the ProviderScope widget to initialize the provider container at the root of the application tree.
_packages/flutter\riverpod/example/lib · high confidence
Introduce modular export files for Riverpod APIs
The library now provides three distinct entry points to help users import only the APIs they need: \riverpod.dart\ exports the core modern API (including \ProviderContainer\, \Ref\, \Notifier\, \AsyncValue\, and related providers); \legacy.dart\ exports legacy types such as \StateNotifier\ and \StateNotifierProvider\; and \misc.dart\ exports advanced or less commonly used types like families, transformers, and listenables. This allows users to avoid importing the entire package when they only require a subset of functionality.
packages/riverpod/lib · high confidence
Korean translation for Riverpod 3.0 'What's New' documentation
Added a new Korean translation for the 'What's new in Riverpod 3.0' documentation page. This entry covers the initial content for the Korean locale, detailing major highlights such as offline persistence, mutations, automatic retry, and various API unifications and lifecycle changes introduced in version 3.0.
website/i18n/ko/docusaurus-plugin-content-docs/current · high confidence
Korean translation for advanced select optimization guide
Added the Korean (ko) translation for the 'Advanced: Select' documentation page, covering performance optimization techniques such as filtering widget rebuilds using the \select\ provider feature and handling asynchronous properties with \selectAsync\.
website/i18n/ko/docusaurus-plugin-content-docs/current/advanced · high confidence
Legacy ChangeNotifierProvider now supports explicit dispose control
The \ChangeNotifierProvider\ in the legacy API layer now exposes a \disposeNotifier\ flag (defaulting to \true\), allowing users to explicitly control whether the underlying \ChangeNotifier\ is automatically disposed. This flag is also supported in the \overrideWith\ method, enabling overrides to preserve or change the disposal behavior of the original provider.
_packages/flutter\riverpod/lib/src/providers · high confidence
Legacy state management providers moved to internal legacy module
The \StateProvider\, \StateNotifierProvider\, and the new \StateController\ class have been relocated to the \packages/riverpod/lib/src/providers/legacy\ directory. This change consolidates legacy state-management APIs into a dedicated internal module, marking them for eventual deprecation or removal while preserving their current functionality for existing users.
packages/riverpod/lib/src/providers/legacy · high confidence
Marvel example app initializes with Riverpod ProviderScope and global unfocus behavior
The Marvel example application now wraps its root widget in a ProviderScope to enable state management via Riverpod, allowing for mocked HTTP requests through provider overrides. Additionally, the app implements a global behavior where tapping on empty space unfocuses any active input fields, improving the user experience when navigating away from text inputs.
examples/marvel/lib · high confidence
New homepage content for Riverpod features and highlights
The website now includes dedicated data files defining the content for the landing page's features and highlights sections. These files introduce key product capabilities such as declaring shared state, recomputing states via Providers and families, inspecting state with the Flutter DevTools extension, and using lint rules and refactors for maintainability. The highlights section emphasizes declarative programming, common UI pattern implementation, and tooling readiness, providing the structured content that powers the redesigned landing page.
website/src/data · high confidence
Notifier and NotifierProvider refactored into separate files
The core Notifier and NotifierProvider classes have been reorganized into dedicated files (orphan.dart and family.dart) within the notifier provider module. This change introduces a dedicated NotifierProviderFamily class to handle parameterized providers and refactors the Notifier class to delegate build execution through a new runBuild method, improving code structure and separation of concerns for synchronous state management.
packages/riverpod/lib/src/providers/notifier · medium confidence
Redesigned landing page with new visual components
The website's home page has been visually redesigned to feature a new Highlight component for showcasing key points, a structured features checklist with icon cards, and a dedicated sponsors section with a call-to-action. This change updates the user interface of the landing page to present information in a more modern, grid-based layout with enhanced styling and hover effects.
website/src/components/Highlight, website/src/pages · high confidence
Reorganized library exports into modular entry points
The flutter\_riverpod package now exposes its API through distinct entry points: flutter\_riverpod.dart for core providers and widgets, legacy.dart for deprecated StateNotifier and ChangeNotifier APIs, and misc.dart for family providers and advanced utilities. This change requires users to update their import statements to target the specific module they need, replacing the previous single-entry-point approach.
_packages/flutter\riverpod/lib · high confidence
Restrict riverpod\_sqflite public API to JsonSqFliteStorage
The riverpod\_sqflite package now explicitly exports only the JsonSqFliteStorage class, hiding other internal symbols from the public API surface. This change ensures that users of the package interact solely with the intended storage implementation, reducing the risk of depending on internal details that may change.
_packages/riverpod\sqflite/lib · high confidence
Restructured public API exports with legacy support
The hooks\_riverpod package now organizes its public API into distinct entry points: hooks\_riverpod.dart exposes the core hooks and consumer widgets (including the new StatefulHookConsumerWidget), legacy.dart provides backward-compatible access to older state management types like StateNotifier and ChangeNotifier, and misc.dart contains family providers and utility classes. This change requires users to update their imports to target the specific module they need, with a deprecation notice guiding users away from importing ChangeNotifierProviderFamily from the main entry point.
_packages/hooks\riverpod/lib · high confidence
Riverpod 1.0.0 release with new provider syntax and API changes
This update introduces Riverpod 1.0.0, bringing significant API changes including the introduction of \Notifier\ and \NotifierProvider\ as a new syntax for state management, replacing older patterns. The release removes deprecated features such as \cacheTime\ and \disposeDelay\, renames \ProviderStateOwner\ to \ProviderContainer\, and changes the read API from \provider.readOwner(container)\ to \container.read(provider)\. Additionally, \AsyncValue\ has been rewritten without Freezed, \ref.maintainState\ is deprecated in favor of \ref.keepAlive()\, and families now support a \name\ property. The \ChangeNotifierProviderFamilyBuilder\ is added to support family providers with external parameters.
_packages/flutter\riverpod/lib/src · high confidence
Riverpod analyzer utils: restructured node analysis and added \`listenManual\` support
The \riverpod\_analyzer\_utils\ package has been restructured into a modular node-based architecture under \lib/src/nodes\, introducing dedicated files for annotations, dependencies, generated providers (functions and notifiers), manual providers, and widget/ref invocations. This change adds support for the \listenManual\ method on \WidgetRef\, enabling static analysis of manual listener subscriptions in Flutter widgets. It also introduces a new \ConstantSymbol\ hierarchy to correctly parse \PrefixedIdentifier\ retry values in \@Riverpod\ annotations, and refactors dependency resolution to explicitly handle both functional and class-based provider declarations with improved caching and error reporting.
_packages/riverpod\_analyzer\utils/lib/src/nodes · high confidence
Riverpod core framework refactored with new mutations, devtools, and async value internals
The core library has been significantly restructured, introducing a new \mutations.dart\ module that provides \MutationTransaction\ and \MutationTarget\ for managing side-effects like form submissions. A new \devtool.dart\ module adds debug capabilities, including \debugTrackProviderCreation\ for stack trace tracking and \RiverpodDevtool\ for IDE navigation. \AsyncValue\ internals have been updated with new extensions for state inspection (\isRefreshing\, \isReloading\, \retrying\) and a \map\ method for type-safe state handling. The \element.dart\ file now includes \ElementWithFuture\ for handling async transitions and \handleStream\ for stream conversion, while \base\_ref.dart\ defines the foundational \BaseRef\ and \BaseWidgetRef\ interfaces for provider interactions.
packages/riverpod/lib/src/core · high confidence
Riverpod linting and code assists migrate to the analysis\_server\_plugin framework
The riverpod\_lint package has been rewritten to use the \analysis\_server\_plugin\ framework instead of the previous \custom\_lint\ implementation. This migration updates the underlying engine for all Riverpod lints (such as \avoid\_build\_context\_in\_providers\, \functional\_ref\, and \missing\_provider\_scope\) and code assists (including widget conversions like \ConvertToConsumerWidget\ and provider conversions like \ClassBasedToFunctionalProvider\). For users, this ensures compatibility with newer versions of the Dart analyzer while preserving the existing linting rules and quick-fix capabilities.
_packages/riverpod\lint/lib · high confidence
Riverpod providers refactored to use AsyncValue for internal state
The core provider implementations (Provider, FutureProvider, StreamProvider, Notifier, AsyncNotifier, and StreamNotifier) have been restructured to use AsyncValue as the internal state representation. This change standardizes how providers handle loading, data, and error states, ensuring consistent behavior across synchronous and asynchronous providers. Users will benefit from more reliable state management, particularly in edge cases involving initialization and error handling, as the internal state transitions are now unified under the AsyncValue model.
packages/riverpod/lib/src/providers · high confidence
Updated Japanese getting-started documentation for Riverpod 3.0
The Japanese 'getting started' documentation has been updated to reflect the Riverpod 3.0 API changes. This includes new code examples for both standalone Dart and Flutter applications, demonstrating the new \ProviderContainer\ usage and \@riverpod\ code generation syntax. The pubspec examples now target SDK version 3.7.0 and include dependencies for \riverpod\ version 3.0.0-dev.12, \flutter\_riverpod\, and \riverpod\_generator\.
_website/i18n/ja/docusaurus-plugin-content-docs/current/getting\started · high confidence
Updated Riverpod example to use ProviderScope and legacy imports
The hooks\_riverpod example application has been updated to wrap the app in a ProviderScope widget, which is now the standard way to provide the provider container, replacing the previous MultiProvider approach. The example also imports the legacy.dart package, indicating a migration path or compatibility layer for existing code patterns while adopting the newer ProviderScope architecture.
_packages/hooks\riverpod/example/lib · high confidence
Updated documentation code snippets to use Riverpod 2.0 syntax
The code snippets in the website documentation have been updated to reflect the Riverpod 2.0 API changes. Providers are now declared using the \@riverpod\ annotation with generated code (e.g., \async.g.dart\, \combine.g.dart\), replacing the previous class-based or manual provider definitions. Asynchronous providers now return \AsyncValue\ states, and widgets use Dart's pattern matching (\switch\ expressions) to handle \AsyncData\, \AsyncError\, and loading states, ensuring the examples match the current library behavior.
website/static/snippets · high confidence
Updated first\_app example to use Riverpod 2.0 syntax
The first\_app example has been updated to reflect the latest Riverpod API changes. The provider definition now uses the \FutureProvider\ constructor with a callback function instead of the previous class-based syntax, and the UI layer utilizes the \Consumer\ widget to access state, replacing the older \ConsumerWidget\ approach. These changes align the example with current Riverpod best practices for managing asynchronous data.
_examples/first\app · high confidence
Website overhaul: Docusaurus 2 migration and Riverpod 3.0 documentation
The documentation site has been rebuilt using Docusaurus 2, introducing a modern static site generator with support for 13 languages (including Arabic with RTL layout) and Algolia search. The content has been restructured to reflect Riverpod 3.0, featuring a new sidebar with dedicated sections for concepts, guides, and references, alongside migration guides and a FAQ. New interactive features include embedded DartPad examples and annotated code legends to improve readability. The site also now displays banners for outdated translations and version-specific documentation, and includes a redesigned footer with community links and sponsor badges.
website · high confidence
Website styling overhaul with new theme support and typography
The website's visual presentation has been updated to support both light and dark themes, with specific styling adjustments for code blocks (including highlighted lines) and the navigation sidebar. The typography has been switched to the 'Inter' font family, and the layout now uses a 1860px maximum width with defined breakpoints for responsive design. These changes affect the overall look and feel of the documentation site, ensuring consistent styling across different themes and screen sizes.
website/src/scss · high confidence
Test coverage
Add integration test for provider dependency declarations; Added Riverpod provider container benchmarks; Added comprehensive test coverage for Riverpod provider lifecycle and state management; Added comprehensive test coverage for core Riverpod functionality; Added comprehensive test suite for riverpod\_generator; Added feature tests for Riverpod core capabilities; Added integration tests for provider hash generation; Added legacy framework tests for provider lifecycle and dependency handling; Added lint tests for Riverpod rules; Added meta-test for public API documentation and export integrity; Added smoke test for the example app's counter widget; Added smoke test for the hooks\_riverpod example app; Added test coverage for Riverpod core and Flutter integration features; Added test infrastructure for Riverpod lint rules; Added test infrastructure for provider mutation and state testing; Added test matrix for Notifier, AsyncNotifier, and StreamNotifier providers; Added test suite for riverpod\_analyzer\_utils; Added test utilities for Riverpod legacy API; Added tests for ChangeNotifierProvider scoping, overrides, and disposal; Added tests for HookConsumer and version health checks; Added tests for JsonSqFliteStorage persistence behavior; Added tests for Result equality and ProviderException stack trace formatting; Added tests for legacy FutureProvider variants; Added tests for legacy StreamProvider behavior; Added tests for legacy framework behavior; Added tests for legacy provider behaviors; Added tests for legacy scoped provider behavior; Added tests for mutations, TickerMode behavior, and provider subscription lifecycle; Added tests for notifier\_extends lint scenarios; Added tests for provider and widget conversion assists; Added tests for provider dependency linting scenarios; Added tests for provider modifiers; Added tests for the functional\_ref lint rule; Added third-party fake\_async test utility; Added unit tests for Riverpod Devtool internal utilities; Added widget tests for the Todos example app; Integration tests for Riverpod generator annotations, async providers, and dependencies; Removed legacy framework tests.
Dependencies
Migrate to Dart pub workspaces and update SDK constraints
The project has migrated to Dart's native pub workspaces, consolidating the monorepo structure under a root \pubspec.yaml\ that lists all packages and examples. This change updates the minimum Dart SDK constraint to ^3.12.0 across all packages and examples, and removes the legacy \pubspec.lock\ file in favor of workspace-managed resolution. Key package versions are synchronized, such as \riverpod\ and \flutter\_riverpod\ at 3.4.3, \hooks\_riverpod\ at 3.4.3, and \riverpod\_generator\ at 4.0.9, while internal tooling packages like \riverpod\_analyzer\_utils\ are updated to 1.0.0-dev.12.
(dependencies) · high confidence
Housekeeping
Initial example project scaffolding
The example application directory has been initialized with standard Flutter project configuration files, including a .gitignore to exclude build artifacts and tool-specific directories, a .metadata file tracking the Flutter SDK revision and channel, and an analysis\_options.yaml file that customizes linting rules (such as disabling type annotations and print statements) to suit the needs of an example app rather than a library.
_packages/flutter\riverpod/example · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 68 → 74 (+6.1)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 98 → 91 (-6.9)
- Architecture 100 → 98 (-2.0)
- Maturity 64 → 65 (+1.7)
- Readiness 61 → 76 (+15.4)
- Security 71 → 82 (+10.4)
- Domain Modelling 100 → 100 (+0.0)
Resolved (19)
- Change coupling clique: misc.dart, misc.dart, misc.dart (packages/flutter_riverpod/lib/misc.dart)
- Change coupling: notifier.dart ↔ stream_notifier.dart (packages/riverpod/lib/src/providers/notifier.dart)
- Change coupling: orphan.dart ↔ orphan.dart (packages/riverpod/lib/src/providers/async_notifier/orphan.dart)
- Change coupling: orphan.dart ↔ orphan.dart (packages/riverpod/lib/src/providers/async_notifier/orphan.dart)
- Change coupling: provider_scope.dart ↔ internals.dart (packages/flutter_riverpod/lib/src/core/provider_scope.dart)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Off-boarding risk: anonymized user #1
- Test reliability not included
- complexity unreadable for .dart — churn × complexity hotspots could not be measured
New (223)
- Boundary-crossing change coupling: change_notifier_provider.dart ↔ state_notifier_provider.dart (packages/flutter_riverpod/lib/src/providers/legacy/change_notifier_provider.dart)
- Change coupling clique: orphan.dart, orphan.dart, orphan.dart (packages/riverpod/lib/src/providers/async_notifier/orphan.dart)
- Change coupling: state_notifier_provider.dart ↔ state_provider.dart (packages/riverpod/lib/src/providers/legacy/state_notifier_provider.dart)
- Change coupling: state_notifier_provider.dart ↔ stream_provider.dart (packages/riverpod/lib/src/providers/legacy/state_notifier_provider.dart)
- ClassTooLong: ProviderElement (packages/riverpod/lib/src/core/element.dart)
- ConvertToStatefulBaseWidget._convertStatelessToStatefulWidget (cognitive 36) (packages/riverpod_lint/lib/src/assists/consumers/convert_to_stateful_base_widget.dart)
- ConvertToStatefulBaseWidget._convertStatelessToStatefulWidget (cyclomatic 22) (packages/riverpod_lint/lib/src/assists/consumers/convert_to_stateful_base_widget.dart)
- ConvertToStatelessBaseWidget._convertStatefulToStatelessWidget (cognitive 50) (packages/riverpod_lint/lib/src/assists/consumers/convert_to_stateless_base_widget.dart)
- ConvertToStatelessBaseWidget._convertStatefulToStatelessWidget (cyclomatic 32) (packages/riverpod_lint/lib/src/assists/consumers/convert_to_stateless_base_widget.dart)
- Documentation: no installation or build instructions
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (website/README.md)
- Duplicated block (10 lines × 2) (website/docs/how_to/eager_initialization/require_value/codegen.dart)
- Duplicated block (10 lines × 4) (website/docs/introduction/getting_started/hello_world/hooks_codegen/main.dart)
- Duplicated block (10–17 lines × 4) (website/docs/how_to/pull_to_refresh/display_activity3.dart)
- Duplicated block (11 lines × 2) (packages/riverpod/lib/src/core/proxy_provider_listenable.dart)
- Duplicated block (11 lines × 2) (packages/riverpod_devtool/lib/src/vm_service/cache.dart)
- Duplicated block (11 lines × 2) (website/i18n/ar/docusaurus-plugin-content-docs/current/introduction/hello_world/hooks_codegen/main.dart)
- Duplicated block (11 lines × 2) (website/i18n/ar/docusaurus-plugin-content-docs/current/introduction/hello_world/main.dart)
- Duplicated block (11 lines × 2) (website/i18n/it/docusaurus-plugin-content-docs/current/essentials/first_request/raw/hook_consumer_widget.dart)
- …and 203 more
Changes since last survey
- 31 commits — 27 feature/other, 4 fixes
By area
- packages/riverpod — 9 commits
- website/yarn.lock — 6 commits
- website/docs — 5 commits
- packages/riverpod_lint — 3 commits
- examples/first_app — 2 commits
- (repo) — 1 commit
- examples/pub — 1 commit
- packages/flutter_riverpod — 1 commit
- packages/internal_lint — 1 commit
- packages/riverpod_lint_flutter_test — 1 commit
- website/i18n — 1 commit
Notable commits
- fix: Fix diagnostics
- fix: fix(riverpod): prevent infinite loop in circular-dependency check (#4872) (#4873)
- fix: fix: avoid selectAsync notifications after disposal (#4847)
- fix: fix: parse Activity price as num to support integer JSON values (#4866)
- change: Add a prefer_keep_alive_annotation lint (#4856)
- change: Allow analyzer 14 (#4861)
- change: Bump colord from 2.9.3 to 2.10.0 in /website (#4875)
- change: Bump dio from 5.10.0 to 5.11.0 (#4852)
- change: Bump dio from 5.11.0 to 5.11.1 (#4874)
- change: Bump fast-uri from 3.1.4 to 3.1.5 in /website (#4843)
- change: Bump fast-uri from 3.1.5 to 3.1.7 in /website (#4869)
- change: Bump joi from 17.13.4 to 17.13.7 in /website (#4876)
- change: Bump nanoid from 3.3.16 to 3.3.18 in /website (#4848)
- change: Bump shimmer from 3.0.0 to 4.0.0 (#4859)
- change: Bump svgo from 2.8.3 to 2.8.4 in /website (#4877)
- change: Changelog
- change: Changelog
- change: Depend on test_api instead of test (#4845)
- change: Deprecate old .exist (#4881)
- change: Format
- …and 11 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
rrousselGit/riverpod was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit af3ef247f47957cad28248ec6cf8efeec5e66876 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.