{"id":14956354,"url":"https://github.com/rrousselgit/riverpod","last_synced_at":"2026-01-11T04:11:55.138Z","repository":{"id":37086540,"uuid":"256184861","full_name":"rrousselGit/riverpod","owner":"rrousselGit","description":"A reactive caching and data-binding framework.   Riverpod makes working with asynchronous code a breeze.","archived":false,"fork":false,"pushed_at":"2025-04-30T19:42:33.000Z","size":33609,"stargazers_count":6602,"open_issues_count":122,"forks_count":984,"subscribers_count":78,"default_branch":"master","last_synced_at":"2025-04-30T19:47:46.044Z","etag":null,"topics":["dart","flutter","hacktoberfest","inheritedwidget","provider","riverpod","service-locator","state-management"],"latest_commit_sha":null,"homepage":"https://riverpod.dev","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rrousselGit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"rrousselGit"}},"created_at":"2020-04-16T10:40:29.000Z","updated_at":"2025-04-30T19:42:36.000Z","dependencies_parsed_at":"2024-02-04T17:00:13.966Z","dependency_job_id":"bedbb50e-099b-4667-a165-275e5418a139","html_url":"https://github.com/rrousselGit/riverpod","commit_stats":{"total_commits":1320,"total_committers":164,"mean_commits":8.048780487804878,"dds":"0.23030303030303034","last_synced_commit":"0f148f429fe3b7301cb1d8c6dd9e19c0ab85da40"},"previous_names":["rrousselgit/river_pod"],"tags_count":378,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrousselGit%2Friverpod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrousselGit%2Friverpod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrousselGit%2Friverpod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrousselGit%2Friverpod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rrousselGit","download_url":"https://codeload.github.com/rrousselGit/riverpod/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252590526,"owners_count":21772935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","flutter","hacktoberfest","inheritedwidget","provider","riverpod","service-locator","state-management"],"created_at":"2024-09-24T13:12:51.878Z","updated_at":"2026-01-11T04:11:55.132Z","avatar_url":"https://github.com/rrousselGit.png","language":"Dart","readme":"\u003cp\u003e\n  \u003ca href=\"https://flutter.dev/docs/development/packages-and-plugins/favorites\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/rrousselGit/riverpod/master/resources/flutter_favorite.png\" width=\"100\" align=\"left\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/rrousselGit/riverpod/actions\"\u003e\u003cimg src=\"https://github.com/rrousselGit/riverpod/workflows/Build/badge.svg\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/rrousselgit/riverpod\"\u003e\u003cimg src=\"https://codecov.io/gh/rrousselgit/riverpod/branch/master/graph/badge.svg\" alt=\"codecov\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/rrousselgit/riverpod\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/rrousselgit/riverpod.svg?style=flat\u0026logo=github\u0026colorB=deeppink\u0026label=stars\" alt=\"Star on Github\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-purple.svg\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/GSt793j6eT\"\u003e\u003cimg src=\"https://img.shields.io/discord/765557403865186374.svg?logo=discord\u0026color=blue\" alt=\"Discord\"\u003e\u003c/a\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://www.netlify.com\"\u003e\n      \u003cimg src=\"https://www.netlify.com/img/global/badges/netlify-color-accent.svg\" alt=\"Deploys by Netlify\" /\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/rrousselGit/riverpod/blob/master/resources/icon/Facebook%20Cover%20A.png?raw=true\" width=\"100%\" alt=\"Riverpod\" /\u003e\n\u003c/p\u003e\n\n---\n\nA reactive caching and data-binding framework. https://riverpod.dev\nRiverpod makes working with asynchronous code a breeze by:\n\n- Handling errors/loading states by default. No need to manually catch errors\n- Natively supporting advanced scenarios, such as pull-to-refresh\n- Separating the logic from your UI\n- Ensuring your code is testable, scalable and reusable\n\n| riverpod         | [![pub package](https://img.shields.io/pub/v/riverpod.svg?label=riverpod\u0026color=blue)](https://pub.dartlang.org/packages/riverpod)                 |\n| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |\n| flutter_riverpod | [![pub package](https://img.shields.io/pub/v/riverpod.svg?label=flutter_riverpod\u0026color=blue)](https://pub.dartlang.org/packages/flutter_riverpod) |\n| hooks_riverpod   | [![pub package](https://img.shields.io/pub/v/riverpod.svg?label=hooks_riverpod\u0026color=blue)](https://pub.dartlang.org/packages/hooks_riverpod)     |\n\nWelcome to [Riverpod] (anagram of [Provider])!\n\nFor learning how to use [Riverpod], see its documentation:\n\\\u003e\\\u003e\\\u003e https://riverpod.dev \u003c\u003c\u003c\n\nLong story short:\n\n- Define network requests by writing a function annotated with `@riverpod`:\n\n  ```dart\n  @riverpod\n  Future\u003cString\u003e boredSuggestion(Ref ref) async {\n    final response = await http.get(\n      Uri.https('boredapi.com', '/api/activity'),\n    );\n    final json = jsonDecode(response.body);\n    return json['activity']! as String;\n  }\n  ```\n\n- Listen to the network request in your UI and gracefully handle loading/error states.\n\n  ```dart\n  class Home extends ConsumerWidget {\n    @override\n    Widget build(BuildContext context, WidgetRef ref) {\n      final boredSuggestion = ref.watch(boredSuggestionProvider);\n      // Perform a switch-case on the result to handle loading/error states\n      return switch (boredSuggestion) {\n        AsyncData(:final value) =\u003e Text('data: $value'),\n        AsyncError(:final error) =\u003e Text('error: $error'),\n        _ =\u003e const Text('loading'),\n      };\n    }\n  }\n  ```\n\n## Contributing\n\nContributions are welcome!\n\nHere is a curated list of how you can help:\n\n- Report bugs and scenarios that are difficult to implement\n- Report parts of the documentation that are unclear\n- Fix typos/grammar mistakes\n- Update the documentation or add examples\n- Implement new features by making a pull-request\n\n## Sponsors\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://raw.githubusercontent.com/rrousselGit/freezed/master/sponsorkit/sponsors.svg\"\u003e\n    \u003cimg src='https://raw.githubusercontent.com/rrousselGit/freezed/master/sponsorkit/sponsors.svg'/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n[provider]: https://github.com/rrousselGit/provider\n[riverpod]: https://github.com/rrousselGit/riverpod\n[flutter_hooks]: https://github.com/rrousselGit/flutter_hooks\n[inheritedwidget]: https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html\n[hooks_riverpod]: https://pub.dev/packages/hooks_riverpod\n[flutter_riverpod]: https://pub.dev/packages/flutter_riverpod\n","funding_links":["https://github.com/sponsors/rrousselGit"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frrousselgit%2Friverpod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frrousselgit%2Friverpod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frrousselgit%2Friverpod/lists"}