Skip to content

Conversation

snapsl
Copy link
Contributor

@snapsl snapsl commented Aug 23, 2025

Summary by CodeRabbit

  • Documentation
    • Updated 3.0 migration guide: clarified migration steps for updated provider/notifier patterns and consolidated family-style notifiers into a single notifier approach; migration examples revised to show constructor-based usage and removal of former parameters.
    • Wide-ranging grammar, punctuation, and wording improvements across concepts, how-tos, migration pages, and FAQ for clarity.
    • Minor heading and formatting tweaks; no runtime behavior changes.

Copy link

coderabbitai bot commented Aug 23, 2025

Walkthrough

Documentation edits across many pages: grammar fixes plus API migration updates in the 3.0 migration doc. ProviderObserver.didAddProvider now takes ProviderObserverContext and value. Notifier family examples migrate from Family* variants to Notifier/AsyncNotifier/StreamNotifier with constructor args and no-arg build().

Changes

Cohort / File(s) Summary of changes
3.0 migration doc
website/docs/3.0_migration.mdx
Update ProviderObserver example signature to didAddProvider(ProviderObserverContext context, Object? value). Replace Family*Notifier examples with Notifier/AsyncNotifier/StreamNotifier usages, move family parameter into constructor, change build(String arg)build(). Multiple punctuation and wording edits.
Concepts & hooks
website/docs/concepts/about_hooks.mdx, website/docs/concepts2/*
Editorial fixes across hooks, auto_dispose, consumers, containers, family, offline, overrides, providers, refs: grammar, tense, punctuation; no API/behavior changes.
From Provider & quickstarts
website/docs/from_provider/motivation/motivation.mdx, website/docs/from_provider/quickstart.mdx
Heading and typo corrections.
How-to guides
website/docs/how_to/cancel.mdx, website/docs/how_to/pull_to_refresh.mdx
Small wording/typo fixes.
Migrations & changelog
website/docs/migration/from_state_notifier.mdx, website/docs/whats_new.mdx
Punctuation/formatting tweaks (e.g., inline code for ProviderException).
FAQ
website/docs/root/faq.mdx
Grammar fix in header.

Sequence Diagram(s)

sequenceDiagram
  participant App
  participant ProviderContainer
  participant ProviderObserver
  participant Notifier

  rect rgba(60,130,200,0.06)
  Note left of ProviderContainer: Provider added/initialized
  App->>ProviderContainer: register/create provider
  ProviderContainer->>ProviderObserver: didAddProvider(ProviderObserverContext context, value)
  end

  rect rgba(90,170,90,0.06)
  Note left of Notifier: Notifier family migration: arg → constructor, build() no-arg
  ProviderContainer->>Notifier: instantiate Notifier(arg)
  Notifier->>Notifier: build()
  Notifier-->>ProviderContainer: state/value
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Add 3.0 blogs #4094 — Overlapping edits to website/docs/3.0_migration.mdx covering ProviderObserver and Notifier family migration examples.
  • Sync dev with master #4068 — Implements the ProviderObserver signature change to accept ProviderObserverContext, which these docs reference.
  • Cleanup #4043 — Related Notifier/Ref migration edits and example/type alias adjustments affecting the same migration surface.

Poem

A hop, I fix a phrase and line,
I move an arg, make build() fine.
Observers now get context, not three,
Notifiers shed their family tree.
I nibble docs and dance — hooray! 🥕🐇

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 6350b91 and f7f570b.

📒 Files selected for processing (2)
  • website/docs/concepts2/containers.mdx (1 hunks)
  • website/docs/concepts2/family.mdx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • website/docs/concepts2/containers.mdx
  • website/docs/concepts2/family.mdx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (10)
  • GitHub Check: riverpod_lint (stable, packages/riverpod_analyzer_utils_tests)
  • GitHub Check: riverpod_lint (stable, packages/riverpod_lint_flutter_test)
  • GitHub Check: riverpod_lint (master, packages/riverpod_analyzer_utils_tests)
  • GitHub Check: riverpod_lint (master, packages/riverpod_lint)
  • GitHub Check: riverpod_lint (master, packages/riverpod_lint_flutter_test)
  • GitHub Check: riverpod_lint (master, packages/riverpod_analyzer_utils)
  • GitHub Check: check_generation
  • GitHub Check: Redirect rules - river-pod
  • GitHub Check: Header rules - river-pod
  • GitHub Check: Pages changed - river-pod
✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (33)
website/docs/how_to/pull_to_refresh.mdx (3)

18-20: Polish phrasing for readability.

“complex due as” reads off. Consider either “complex because” or “complex due to.”

Apply:

-In general, pull-to-refreshes can be complex due as there are multiple
-problems to solve:
+In general, pull-to-refresh can be complex because there are multiple
+problems to solve:

38-41: Minor grammar nits in intro paragraph.

Tweak gerund and verb agreement.

-Before implement a pull-to-refresh, we first need something to refresh.  
+Before implementing pull-to-refresh, we first need something to refresh.  
 We can make a simple application which uses [Bored API](https://www.boredapi.com/)
-to suggests a random activity to users.
+to suggest a random activity to users.

50-52: Article before acronym.

Use “an HTTP GET”.

-Now, we'll want to define a provider making a HTTP GET request to fetch
+Now, we'll want to define a provider making an HTTP GET request to fetch
website/docs/concepts2/containers.mdx (3)

92-92: Fix duplicated word.

-Riverpod does this for a few reasons, which come down the the same logic: "No global state".
+Riverpod does this for a few reasons, which come down to the same logic: "No global state".

101-101: Typo: “no” → “do”.

-And generally, the UI will no nothing but invoke one method on the provider's Notifier.
+And generally, the UI will do nothing but invoke one method on the provider's Notifier.

143-144: Missing conjunction.

-This feature is quite advanced generally discouraged, but useful for performance optimizations.
+This feature is quite advanced and generally discouraged, but useful for performance optimizations.
website/docs/concepts2/providers.mdx (3)

68-68: Verb form: “combine” not “combined”.

-Allows you to combined caches together, automatically invalidating what is needed.
+Allows you to combine caches, automatically invalidating what is needed.

85-85: Preposition: “come in”.

-Providers come 6 variants:
+Providers come in 6 variants:

83-83: Infinitive “to render”.

-Providers offer a built-in way for UIs render a spinner/error for side effects (such as form submission).
+Providers offer a built-in way for UIs to render a spinner/error for side effects (such as form submission).
website/docs/concepts2/offline.mdx (5)

95-96: Nit: prefer “I/O” over “IO”

Minor style tweak for technical writing consistency.

-This is generally safe, as Riverpod is designed to be used primarily
-as a cache for IO operations (network requests, database queries, etc).
+This is generally safe, as Riverpod is designed to be used primarily
+as a cache for I/O operations (network requests, database queries, etc.).

43-46: Grammar: fix “You need have to either”

Tighten phrasing.

-You need have to either:
+You need to either:

92-94: Wording seems contradictory around “leak happens … stay … indefinitely”

As written, it suggests the default prevents leaks but lets deleted providers remain indefinitely. Recommend clarifying intent.

-By default, state is only cached for 2 days. This default ensures that
-no leak happens and deleted providers stay in the database indefinitely
+By default, state is cached for 2 days. This helps prevent leaks, ensuring that
+deleted providers don't remain in the database indefinitely.

122-126: Nit: smoother phrasing for “help doing”

Improve readability.

-Destroy keys help doing simple data migrations by enabling Riverpod to know when
+Destroy keys help with simple data migrations by enabling Riverpod to know when

129-132: Word choice: “This is voluntary” → “This is intentional”

More idiomatic in technical docs.

-This is voluntary, as this allows the provider to start its network requests as soon as possible.
+This is intentional, as it allows the provider to start its network requests as soon as possible.
website/docs/migration/from_state_notifier.mdx (3)

32-33: Grammar: “thought of as”

Minor idiomatic correction.

-`AsyncNotifier` can be thought as a `FutureProvider` which can expose ways to be modified from the UI.
+`AsyncNotifier` can be thought of as a `FutureProvider` that exposes ways to be modified from the UI.

41-43: Grammar: add missing “to”

-Let's see how to define a `Notifier`, how it compares with `StateNotifier` and how to migrate
-the new `AsyncNotifier` for asynchronous state.
+Let's see how to define a `Notifier`, how it compares with `StateNotifier`, and how to migrate
+to the new `AsyncNotifier` for asynchronous state.

228-231: Grammar: tighten “had already have”

-AVOID accessing `.state` from tests; if you have to, do it _if and only if_ you had already have
+AVOID accessing `.state` from tests; if you have to, do it _if and only if_ you already have
website/docs/concepts2/refs.mdx (4)

113-114: Hyphenation: “go-to choice”

-It is the most common way to listen to providers, and should be your go to choice.
+It is the most common way to listen to providers, and should be your go-to choice.

296-299: Clarity: missing preposition

-You can safely call [Ref.read] button clicks to perform work. The following example
+You can safely call [Ref.read] inside button clicks to perform work. The following example

315-319: Fix “as a mean” → “as a means” (singular/plural idiom)

-Do not use [Ref.read] as a mean to "optimize" your code by avoiding [Ref.watch].
+Do not use [Ref.read] as a means to "optimize" your code by avoiding [Ref.watch].

323-328: Repeat: “as a means”

-// ❌ Don't use "read" as a mean to ignore changes
+// ❌ Don't use "read" as a means to ignore changes
website/docs/from_provider/quickstart.mdx (3)

6-8: Subject–verb agreement: “who want to learn”

-This section is designed for people familiar with the [Provider] package who
-wants to learn about Riverpod.
+This section is designed for people familiar with the [Provider] package who
+want to learn about Riverpod.

10-12: Word choice: “definitely” (not “definitively”)

-[sandbox] example to test Riverpod's features out. If you like what you see there, you should then
-definitively consider a migration.
+[sandbox] example to test Riverpod's features out. If you like what you see there, you should then
+definitely consider migrating.

121-124: Clarity: eager initialization phrasing

Tighten wording and fix number agreement.

-In other words, since Riverpod can't be forced to be eager initialized, they can be read and cached
-in your startup phase, so that they're warm and ready when needed inside the rest of your application.
+In other words, since providers can't be eagerly initialized, you can read them during your startup
+phase so they're warm and ready when needed inside the rest of your application.
website/docs/how_to/cancel.mdx (1)

88-93: Minor grammar: remove the hyphen in “no-longer”.

Use “no longer” (adverbial phrase) rather than the hyphenated form.

Apply this diff:

-That is because our provider is no-longer used, and therefore disposed
+That is because our provider is no longer used, and therefore disposed
website/docs/whats_new.mdx (1)

967-967: Consistent code formatting for type names.

Backticks around ProviderException in the heading improve readability. For consistency, consider using backticks for other occurrences of ProviderException across the document (e.g., earlier headings/paragraphs where it appears without code formatting).

website/docs/concepts2/auto_dispose.mdx (2)

55-61: Tense/voice consistency and minor clarity tweaks

Recommend present tense throughout and active voice for who triggers lifecycle hooks. Also prefer “unused” over “not used” for concision.

-When that counter reaches zero, the provider is considered "not used", and
-[Ref.onCancel](https://pub.dev/documentation/hooks_riverpod/3.0.0-dev.17/hooks_riverpod/Ref/onCancel.html)
-is triggered. 
-At that point, Riverpod waits for one frame (cf. `await null`). If, after that frame,
-the provider is still not used, then the provider is destroyed and
-[Ref.onDispose](https://pub.dev/documentation/hooks_riverpod/3.0.0-dev.17/hooks_riverpod/Ref/onDispose.html)
-will be triggered.
+When that counter reaches zero, the provider is considered unused, and Riverpod triggers
+[Ref.onCancel](https://pub.dev/documentation/hooks_riverpod/3.0.0-dev.17/hooks_riverpod/Ref/onCancel.html).
+At that point, Riverpod waits for one frame (cf. `await null`). If, after that frame,
+the provider is still unused, the provider is destroyed and
+[Ref.onDispose](https://pub.dev/documentation/hooks_riverpod/3.0.0-dev.17/hooks_riverpod/Ref/onDispose.html)
+is triggered.

71-76: Tighten phrasing of onDispose explanation

Streamline the sentence and avoid “enables registering a listener for whenever…”.

-In both cases, you may want to execute some logic when that happens.  
-This can be achieved with `ref.onDispose`. This method enables
-registering a listener for whenever the state is destroyed.
+In both cases, you may want to run some logic.  
+You can do this with `ref.onDispose`, which lets you register a callback
+that runs when the state is destroyed.
 
-For example, you may want to use it to close any active `StreamController`:
+For example, you might use it to close any active `StreamController`:
website/docs/3.0_migration.mdx (5)

11-11: Smoother sentence structure

Minor style improvement for readability.

-They should, in general, be relatively minor, but we recommend you read this page carefully.
+In general, the changes are relatively minor, but we recommend reading this page carefully.

18-20: Avoid comma splice; parallelize list

Adjust punctuation to avoid a run-on and keep the verb forms parallel.

-It is important to us that the migration is as smooth as possible, so we will do our best to help you, 
-improve the migration guide, or even include helpers to make the migration easier.
+It is important to us that the migration is as smooth as possible. We will do our best to help you,
+improve the migration guide, and even include helpers to make the migration easier.

121-122: Optional: tighten “legacy” paragraph

Non-blocking wording tweak; current text is correct.

-They are not removed, but are no longer part of the main API. This is to discourage their use
-in favor of the new `Notifier` API.
+They are not removed but are no longer part of the main API. This discourages their use
+in favor of the new `Notifier` API.

199-204: Clarify phrasing around API moves

“[Notifier]s” is valid Markdown, but might read awkwardly. Also specify these are instance APIs.

-For the sake of simplification, [Ref] has lost its type parameter, and all properties/methods that were
-using the type parameter have been moved to [Notifier]s.  
+For the sake of simplification, [Ref] has lost its type parameter, and the affected APIs have moved to
+the [Notifier] instance API.  
 
-Specifically, `ProviderRef.state`, `Ref.listenSelf` and `FutureProviderRef.future` should be replaced by
-`Notifier.state`, `Notifier.listenSelf` and `AsyncNotifier.future` respectively.
+Specifically, replace `ProviderRef.state`, `Ref.listenSelf`, and `FutureProviderRef.future` with
+`Notifier.state`, `Notifier.listenSelf`, and `AsyncNotifier.future`, respectively.

311-313: Minor grammar tweak in “family variant” paragraph

Optional readability improvement.

-In the same vein as the previous point, the family variant of Notifiers has been removed.
-Now, we only use `Notifier`/`AsyncNotifier`/`StreamNotifier`, and `FamilyNotifier`/... have been removed.
+In the same vein as the previous point, the family variant of notifiers has been removed.
+Now, we use only `Notifier`/`AsyncNotifier`/`StreamNotifier`; `FamilyNotifier`/... have been removed.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 7eb4964 and 55f1b2f.

📒 Files selected for processing (17)
  • website/docs/3.0_migration.mdx (4 hunks)
  • website/docs/concepts/about_hooks.mdx (1 hunks)
  • website/docs/concepts2/auto_dispose.mdx (2 hunks)
  • website/docs/concepts2/consumers.mdx (1 hunks)
  • website/docs/concepts2/containers.mdx (1 hunks)
  • website/docs/concepts2/family.mdx (1 hunks)
  • website/docs/concepts2/offline.mdx (1 hunks)
  • website/docs/concepts2/overrides.mdx (1 hunks)
  • website/docs/concepts2/providers.mdx (1 hunks)
  • website/docs/concepts2/refs.mdx (1 hunks)
  • website/docs/from_provider/motivation/motivation.mdx (1 hunks)
  • website/docs/from_provider/quickstart.mdx (1 hunks)
  • website/docs/how_to/cancel.mdx (1 hunks)
  • website/docs/how_to/pull_to_refresh.mdx (1 hunks)
  • website/docs/migration/from_state_notifier.mdx (1 hunks)
  • website/docs/root/faq.mdx (1 hunks)
  • website/docs/whats_new.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
website/docs/concepts2/offline.mdx

[grammar] ~95-~95: There might be a mistake here.
Context: ...iverpod is designed to be used primarily as a cache for IO operations (network re...

(QB_NEW_EN)

website/docs/concepts2/providers.mdx

[grammar] ~33-~33: There might be a mistake here.
Context: ... we were to try using it inside widgets, we'd have to cache the result ourselves ...

(QB_NEW_EN)

website/docs/concepts2/auto_dispose.mdx

[grammar] ~55-~55: There might be a mistake here.
Context: ...e provider is considered "not used", and [Ref.onCancel](https://pub.dev/documenta...

(QB_NEW_EN)


[grammar] ~56-~56: There might be a mistake here.
Context: ...dev.17/hooks_riverpod/Ref/onCancel.html) is triggered. At that point, Riverpod w...

(QB_NEW_EN)


[grammar] ~72-~72: There might be a mistake here.
Context: ...ith ref.onDispose. This method enables registering a listener for whenever the ...

(QB_NEW_EN)

website/docs/3.0_migration.mdx

[grammar] ~15-~15: There might be a mistake here.
Context: ...encountered a scenario that is difficult to migrate, please [open an issue](https...

(QB_NEW_EN)


[grammar] ~19-~19: There might be a mistake here.
Context: ...de helpers to make the migration easier. ::: ## Automatic retry Riverpod 3.0 no...

(QB_NEW_EN)


[grammar] ~121-~121: There might be a mistake here.
Context: ...ain API. This is to discourage their use in favor of the new Notifier API. To ...

(QB_NEW_EN)


[grammar] ~199-~199: There might be a mistake here.
Context: ...er, and all properties/methods that were using the type parameter have been moved...

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (12)
  • GitHub Check: Redirect rules - river-pod
  • GitHub Check: riverpod_lint (stable, packages/riverpod_analyzer_utils)
  • GitHub Check: riverpod_lint (stable, packages/riverpod_lint)
  • GitHub Check: riverpod_lint (stable, packages/riverpod_lint_flutter_test)
  • GitHub Check: riverpod_lint (master, packages/riverpod_lint_flutter_test)
  • GitHub Check: riverpod_lint (stable, packages/riverpod_analyzer_utils_tests)
  • GitHub Check: riverpod_lint (master, packages/riverpod_lint)
  • GitHub Check: riverpod_lint (master, packages/riverpod_analyzer_utils_tests)
  • GitHub Check: riverpod_lint (master, packages/riverpod_analyzer_utils)
  • GitHub Check: check_generation
  • GitHub Check: Header rules - river-pod
  • GitHub Check: Pages changed - river-pod
🔇 Additional comments (13)
website/docs/how_to/pull_to_refresh.mdx (1)

106-106: Typo fix looks good.

“as follows” is correct here. No further change needed.

website/docs/concepts2/containers.mdx (1)

96-98: Grammar correction LGTM.

“…how/when a state is modified.” reads correctly now.

website/docs/from_provider/motivation/motivation.mdx (1)

68-68: Hyphenation fix is correct.

“error-prone” is the right spelling.

website/docs/root/faq.mdx (1)

108-108: Header wording LGTM.

“export” matches subject–verb agreement in the question.

website/docs/concepts2/providers.mdx (1)

33-36: Article/number agreement fix LGTM.

“inside widgets” resolves the grammatical issue flagged by tooling.

website/docs/concepts2/consumers.mdx (1)

92-92: LGTM: clearer emphasis on the real problem beyond leaks

The clarification reads well and matches the surrounding explanation of auto-dispose reliability.

website/docs/migration/from_state_notifier.mdx (1)

32-32: LGTM: duplicate punctuation fixed

The sentence now ends with a single period.

website/docs/concepts2/refs.mdx (1)

115-115: LGTM: clearer description of Ref.listen

The “addListener style” phrasing is concise and accurate.

website/docs/from_provider/quickstart.mdx (1)

55-55: LGTM: heading corrected

“Start with leaves” reads correctly and matches the guidance below.

website/docs/concepts/about_hooks.mdx (1)

14-14: Solid grammar fix in intro sentence.

Reads naturally and improves clarity. No further changes needed here.

website/docs/concepts2/overrides.mdx (1)

15-15: Wording correction looks good.

“done on <Link ... />, using the overrides parameter.” reads correctly and matches how overrides are configured on containers/scopes.

website/docs/concepts2/family.mdx (1)

99-99: Grammar fix LGTM.

“in tests” is the correct preposition in this context.

website/docs/concepts2/auto_dispose.mdx (1)

51-57: Verified: All versioned hooks_riverpod 3.0.0-dev.17 links resolve successfully (HTTP 200). No broken or unreachable URLs were found in website/docs/concepts2/auto_dispose.mdx.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
website/docs/3.0_migration.mdx (3)

34-49: Two TabItem components marked as default

Only one TabItem should have the defaultValue prop. Having it on both can cause rendering issues.

-<TabItem value="ProviderScope" label="ProviderScope" defaultValue>
+<TabItem value="ProviderScope" label="ProviderScope" defaultValue>
...
-<TabItem value="ProviderContainer" label="ProviderContainer" defaultValue>
+<TabItem value="ProviderContainer" label="ProviderContainer">

136-137: Fix broken “What’s new” anchor slug in migration guide

The heading in website/docs/whats_new.mdx at line 564 reads:

### All `updateShouldNotify` now use `==`

By Docusaurus’s slug rules, this generates the anchor #all-updateshouldnotify-now-use (no trailing dash). In website/docs/3.0_migration.mdx (lines 136–137), update the link accordingly:

-In Riverpod 3.0, [all providers now use `==` to filter updates](./whats_new.mdx#all-updateshouldnotify-now-use-).
+In Riverpod 3.0, [all providers now use `==` to filter updates](./whats_new.mdx#all-updateshouldnotify-now-use).

• File: website/docs/3.0_migration.mdx
• Lines: 136–137
• Updated slug: all-updateshouldnotify-now-use


311-340: Update provider declaration and usage example for Family→Notifier migration

The migration snippet should also update the provider declaration to drop .family and the extra type parameter, and include how to pass the constructor argument when reading the provider:

-final provider = NotifierProvider.family<CounterNotifier, int, String>(CounterNotifier.new);
+final provider = NotifierProvider<CounterNotifier, int>(CounterNotifier.new);

-class CounterNotifier extends FamilyNotifier<int, String> {
+class CounterNotifier extends Notifier<int> {
+  CounterNotifier(this.arg);
+  final String arg;

   @override
-  int build(String arg) {
+  int build() {
     // Use `arg` as needed
      return 0;
   }
}

Add a one-line usage example after the diff to show passing the argument when reading:

• Flutter:

final value = ref.watch(provider('some-id'));

• Vanilla:

final value = container.read(provider('some-id'));

Please confirm that ref.watch(provider('arg')) and container.read(provider('arg')) are the correct call syntaxes in v3.0.

♻️ Duplicate comments (1)
website/docs/3.0_migration.mdx (1)

16-16: Stray parenthesis fixed — thanks

The extra “)” after the link was removed correctly.

🧹 Nitpick comments (5)
website/docs/3.0_migration.mdx (5)

15-16: Tense/flow tweak for clarity

Consider present tense and a tighter clause.

-If there is anything that is unclear, or if you encountered a scenario that is difficult
-to migrate, please [open an issue](https://github.com/rrousselGit/riverpod/issues/new/choose).
+If anything is unclear, or if you encounter a scenario that is difficult to migrate,
+please [open an issue](https://github.com/rrousselGit/riverpod/issues/new/choose).

18-19: Comma splice and parallelism

Small grammar/flow improvement; make the list parallel.

-It is important to us that the migration is as smooth as possible, so we will do our best to help you, 
-improve the migration guide, or even include helpers to make the migration easier.
+It is important to us that the migration is as smooth as possible, so we will do our best to help you,
+improve the migration guide, and even include helpers to make the migration easier.

121-122: Minor wording polish

Semicolon reads better than a comma splice here.

-They are not removed, but are no longer part of the main API. This is to discourage their use
+They are not removed; they are no longer part of the main API. This is to discourage their use
 in favor of the new `Notifier` API.

172-174: Preposition/capitalization nit

Lowercase “such” mid‑sentence and use “to” instead of “in”.

-In the scenario where you didn't use a `Notifier`, you can refactor your provider in its notifier equivalent
-(Such as converting [StreamProvider] to [StreamNotifierProvider]).
+In the scenario where you didn't use a `Notifier`, you can refactor your provider to its notifier equivalent
+(such as converting [StreamProvider] to [StreamNotifierProvider]).

199-205: Tighten the explanation about Ref changes

Minor rephrase for readability.

-For the sake of simplification, [Ref] has lost its type parameter, and all properties/methods that were
-using the type parameter have been moved to [Notifier]s.  
+To simplify the API, [Ref] has lost its type parameter. Properties/methods that depended on that type
+have moved to the corresponding [Notifier]s.  
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 55f1b2f and 734528d.

📒 Files selected for processing (1)
  • website/docs/3.0_migration.mdx (4 hunks)
🧰 Additional context used
🪛 LanguageTool
website/docs/3.0_migration.mdx

[grammar] ~15-~15: There might be a mistake here.
Context: ...encountered a scenario that is difficult to migrate, please [open an issue](https...

(QB_NEW_EN)


[grammar] ~19-~19: There might be a mistake here.
Context: ...de helpers to make the migration easier. ::: ## Automatic retry Riverpod 3.0 no...

(QB_NEW_EN)


[grammar] ~121-~121: There might be a mistake here.
Context: ...ain API. This is to discourage their use in favor of the new Notifier API. To ...

(QB_NEW_EN)


[grammar] ~199-~199: There might be a mistake here.
Context: ...er, and all properties/methods that were using the type parameter have been moved...

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: riverpod_lint (stable, packages/riverpod_analyzer_utils_tests)
  • GitHub Check: riverpod_lint (stable, packages/riverpod_lint_flutter_test)
  • GitHub Check: riverpod_lint (stable, packages/riverpod_lint)
  • GitHub Check: check_generation
  • GitHub Check: riverpod_lint (master, packages/riverpod_analyzer_utils)
  • GitHub Check: riverpod_lint (master, packages/riverpod_analyzer_utils_tests)
  • GitHub Check: riverpod_lint (master, packages/riverpod_lint_flutter_test)
  • GitHub Check: riverpod_lint (master, packages/riverpod_lint)
🔇 Additional comments (2)
website/docs/3.0_migration.mdx (2)

11-11: Wording LGTM

The softened guidance about the scope of changes reads clearly.


187-195: Observer API update reads correctly

The example matches the new ProviderObserver signature (context + value).

@snapsl snapsl requested a review from rrousselGit August 24, 2025 09:36
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
website/docs/3.0_migration.mdx (1)

16-16: Stray “)” after link is fixed—nice cleanup.

The extra closing parenthesis reported earlier is gone; punctuation reads correctly now.

🧹 Nitpick comments (5)
website/docs/3.0_migration.mdx (5)

18-19: Reduce comma splices and tighten phrasing in the info block.

Current sentence is a bit comma-heavy. Splitting it improves readability and addresses the “too many commas” feedback.

-It is important to us that the migration is as smooth as possible, so we will do our best to help you, 
-improve the migration guide, or even include helpers to make the migration easier.
+It is important to us that this migration is as smooth as possible.
+We will do our best to help you, improve this guide and include helpers when needed.

121-121: Drop the unnecessary comma.

Not an independent clause after “removed,” so the comma is unnecessary.

-They are not removed, but are no longer part of the main API. This is to discourage their use
+They are not removed but are no longer part of the main API. This is to discourage their use

199-200: Prefer “simplicity,” tighten wording, and avoid awkward pluralization of a link.

Small grammar/style pass and clearer pluralization.

-For the sake of simplification, [Ref] has lost its type parameter, and all properties/methods that were
-using the type parameter have been moved to [Notifier]s.  
+For simplicity, [Ref] has lost its type parameter, and properties/methods that used it have moved to [Notifier] classes.  

311-312: Avoid repetition in “family variant” paragraph.

Reads cleaner and avoids repeating “removed.”

-In the same vein as the previous point, the family variant of Notifiers has been removed.
-Now, we only use `Notifier`/`AsyncNotifier`/`StreamNotifier`, and `FamilyNotifier`/... have been removed.
+In the same vein as the previous point, the family variants of Notifiers have been removed.
+Use `Notifier`/`AsyncNotifier`/`StreamNotifier`; the `Family*` variants are no longer available.

8-8: Confirmed whats_new.mdx exists and its anchors are in place

  • Found website/docs/whats_new.mdx; there’s no explicit id: or slug: in its frontmatter, so the page uses the default slug derived from its file name.
  • The heading
    ## Automatic retry
    produces the #automatic-retry fragment, which matches your link on line 24.
  • The heading
    ### All `updateShouldNotify` now use `==`
    produces the #all-updateshouldnotify-now-use fragment. Update the link on line 137 to use this exact slug instead of #updateShouldNotify.
  • To keep things tidy, pick one link style—either omit the file extension ([…](whats_new#automatic-retry)) or always include it ([…](./whats_new.mdx#automatic-retry))—and apply it consistently across both references.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 734528d and 6350b91.

📒 Files selected for processing (1)
  • website/docs/3.0_migration.mdx (4 hunks)
🧰 Additional context used
🪛 LanguageTool
website/docs/3.0_migration.mdx

[grammar] ~19-~19: There might be a mistake here.
Context: ...de helpers to make the migration easier. ::: ## Automatic retry Riverpod 3.0 no...

(QB_NEW_EN)


[grammar] ~121-~121: There might be a mistake here.
Context: ...ain API. This is to discourage their use in favor of the new Notifier API. To ...

(QB_NEW_EN)


[grammar] ~199-~199: There might be a mistake here.
Context: ...er, and all properties/methods that were using the type parameter have been moved...

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: check_generation
  • GitHub Check: riverpod_lint (stable, packages/riverpod_lint_flutter_test)
  • GitHub Check: riverpod_lint (master, packages/riverpod_lint_flutter_test)
  • GitHub Check: riverpod_lint (stable, packages/riverpod_analyzer_utils_tests)
  • GitHub Check: riverpod_lint (master, packages/riverpod_analyzer_utils_tests)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants