{"id":13430562,"url":"https://github.com/reactiveui/ReactiveUI","last_synced_at":"2025-03-16T06:30:26.090Z","repository":{"id":38433668,"uuid":"715082","full_name":"reactiveui/ReactiveUI","owner":"reactiveui","description":"An advanced, composable, functional reactive model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming. ReactiveUI allows you to  abstract mutable state away from your user interfaces, express the idea around a feature in one readable place and improve the testability of your application.","archived":false,"fork":false,"pushed_at":"2024-04-11T23:18:46.000Z","size":88754,"stargazers_count":7894,"open_issues_count":74,"forks_count":1113,"subscribers_count":360,"default_branch":"main","last_synced_at":"2024-04-13T17:56:37.912Z","etag":null,"topics":["android","csharp","dotnet","first-timers","fody","framework","functional-reactive-programming","hacktoberfest","ios","mvvm","reactive-extensions","reactive-programming","reactiveui","reactivex","tizen","uwp","winforms","wpf","xamarin","xamarin-forms"],"latest_commit_sha":null,"homepage":"https://www.reactiveui.net","language":"C#","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/reactiveui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":["reactivemarbles"]}},"created_at":"2010-06-11T05:24:29.000Z","updated_at":"2024-05-01T08:47:02.373Z","dependencies_parsed_at":"2023-12-19T04:23:04.628Z","dependency_job_id":"9531e885-2477-4348-b338-36aa041b67ab","html_url":"https://github.com/reactiveui/ReactiveUI","commit_stats":{"total_commits":4471,"total_committers":208,"mean_commits":"21.495192307692307","dds":0.5911429210467457,"last_synced_commit":"248d5131ac3ba51b71f64aaf852f444b34355719"},"previous_names":[],"tags_count":258,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FReactiveUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FReactiveUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FReactiveUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FReactiveUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reactiveui","download_url":"https://codeload.github.com/reactiveui/ReactiveUI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":220988558,"owners_count":16734587,"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":["android","csharp","dotnet","first-timers","fody","framework","functional-reactive-programming","hacktoberfest","ios","mvvm","reactive-extensions","reactive-programming","reactiveui","reactivex","tizen","uwp","winforms","wpf","xamarin","xamarin-forms"],"created_at":"2024-07-31T02:00:55.185Z","updated_at":"2025-03-16T06:30:26.085Z","avatar_url":"https://github.com/reactiveui.png","language":"C#","readme":"![Build](https://github.com/reactiveui/ReactiveUI/workflows/Build/badge.svg) \n[![Code Coverage](https://codecov.io/gh/reactiveui/ReactiveUI/branch/main/graph/badge.svg)](https://codecov.io/gh/reactiveui/ReactiveUI)\n[![#yourfirstpr](https://img.shields.io/badge/first--timers--only-friendly-blue.svg)](https://reactiveui.net/contribute) \n[![](https://img.shields.io/badge/chat-slack-blue.svg)](https://reactiveui.net/slack)\n\n\u003cbr\u003e\n\u003ca href=\"https://github.com/reactiveui/reactiveui\"\u003e\n  \u003cimg width=\"160\" heigth=\"160\" src=\"https://raw.githubusercontent.com/reactiveui/styleguide/master/logo/main.png\"\u003e\n\u003c/a\u003e\n\u003cbr\u003e\n\n# What is ReactiveUI?\n\n[ReactiveUI](https://reactiveui.net/) is a composable, cross-platform model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming, which is a paradigm that allows you to [abstract mutable state away from your user interfaces and express the idea around a feature in one readable place](https://www.youtube.com/watch?v=3HwEytvngXk) and improve the testability of your application.\n\n[🔨 Get Started](https://reactiveui.net/docs/getting-started/) [🛍 Install Packages](https://reactiveui.net/docs/getting-started/installation/) [🎞 Watch Videos](https://reactiveui.net/docs/resources/videos) [🎓 View Samples](https://reactiveui.net/docs/resources/samples/) [🎤 Discuss ReactiveUI](https://reactiveui.net/slack)\n\n## Book\nThere has been an excellent [book](https://kent-boogaart.com/you-i-and-reactiveui/) written by our Alumni maintainer Kent Boogart.\n\n## NuGet Packages\n\nInstall the following packages to start building your own ReactiveUI app. \u003cb\u003eNote:\u003c/b\u003e some of the platform-specific packages are required. This means your app won't perform as expected until you install the packages properly. See the \u003ca href=\"https://reactiveui.net/docs/getting-started/installation/\"\u003eInstallation\u003c/a\u003e docs page for more info.\n\n| Platform          | ReactiveUI Package                  | NuGet                  |\n| ----------------- | ----------------------------------- | ---------------------- |\n| .NET Standard     | [ReactiveUI][CoreDoc]               | [![CoreBadge]][Core]   |\n|                   | [ReactiveUI.Fody][FodyDoc]          | [![FodyBadge]][Fody]   |\n| Unit Testing      | [ReactiveUI.Testing][TestDoc]       | [![TestBadge]][Test]   |\n| WPF               | [ReactiveUI.WPF][WpfDoc]            | [![WpfBadge]][Wpf]     |\n| UWP               | [ReactiveUI.Uwp][UwpDoc]            | [![UwpBadge]][Uwp]     |\n| WinUI             | [ReactiveUI.WinUI][WinUiDoc]        | [![WinUiBadge]][WinUi] |\n| MAUI              | [ReactiveUI.Maui][MauiDoc]          | [![MauiBadge]][Maui] |\n| Windows Forms     | [ReactiveUI.WinForms][WinDoc]       | [![WinBadge]][Win]     |\n| Xamarin.Forms     | [ReactiveUI.XamForms][XamDoc]       | [![XamBadge]][Xam]     |\n| Xamarin.Essentials| [ReactiveUI][XamDoc]                | [![CoreBadge]][Core]   |\n| AndroidX (Xamarin)| [ReactiveUI.AndroidX][DroDoc]       | [![DroXBadge]][DroX]   |\n| Xamarin.Android   | [ReactiveUI.AndroidSupport][DroDoc] | [![DroBadge]][Dro]     |\n| Xamarin.iOS       | [ReactiveUI][IosDoc]                | [![CoreBadge]][Core]   |\n| Xamarin.Mac       | [ReactiveUI][MacDoc]                | [![CoreBadge]][Core]   |\n| Tizen             | [ReactiveUI][CoreDoc]               | [![CoreBadge]][Core]   |\n| Blazor            | [ReactiveUI.Blazor][BlazDoc]        | [![BlazBadge]][Blaz]   |\n| Platform Uno      | [ReactiveUI.Uno][UnoDoc]            | [![UnoBadge]][Uno]     |\n| Platform Uno      | [ReactiveUI.Uno.WinUI][UnoWinUiDoc] | [![UnoWinUiBadge]][UnoWinUi] |\n| Avalonia          | [Avalonia.ReactiveUI][AvaDoc]       | [![AvaBadge]][Ava]     |\n| Any               | [ReactiveUI.Validation][ValDocs]    | [![ValBadge]][ValCore] |\n\n[Core]: https://www.nuget.org/packages/ReactiveUI/\n[CoreBadge]: https://img.shields.io/nuget/v/ReactiveUI.svg\n[CoreDoc]: https://reactiveui.net/docs/getting-started/installation/\n\n[Fody]: https://www.nuget.org/packages/ReactiveUI.Fody/\n[FodyDoc]: https://reactiveui.net/docs/handbook/view-models/boilerplate-code\n[FodyBadge]: https://img.shields.io/nuget/v/ReactiveUI.Fody.svg\n\n[Test]: https://www.nuget.org/packages/ReactiveUI.Testing/\n[TestBadge]: https://img.shields.io/nuget/v/ReactiveUI.Testing.svg\n[TestDoc]: https://reactiveui.net/docs/handbook/testing/\n\n[Wpf]: https://www.nuget.org/packages/ReactiveUI.WPF/\n[WpfBadge]: https://img.shields.io/nuget/v/ReactiveUI.WPF.svg\n[WpfDoc]: https://reactiveui.net/docs/getting-started/installation/windows-presentation-foundation\n\n[Uwp]: https://www.nuget.org/packages/ReactiveUI.Uwp/\n[UwpBadge]: https://img.shields.io/nuget/v/ReactiveUI.Uwp.svg\n[UwpDoc]: https://reactiveui.net/docs/getting-started/installation/universal-windows-platform\n\n[WinUi]: https://www.nuget.org/packages/ReactiveUI.WinUI/\n[WinUiBadge]: https://img.shields.io/nuget/v/ReactiveUI.WinUI.svg\n[WinUiDoc]: https://reactiveui.net/docs/getting-started/installation/universal-windows-platform\n\n[Maui]: https://www.nuget.org/packages/ReactiveUI.Maui/\n[MauiBadge]: https://img.shields.io/nuget/v/ReactiveUI.Maui.svg\n[MauiDoc]: https://blog.jetbrains.com/dotnet/2020/09/18/xamarin-maui-and-the-reactive-mvvm-between-them-webinar-recording/\n\n[Win]: https://www.nuget.org/packages/ReactiveUI.WinForms/\n[WinEvents]: https://www.nuget.org/packages/ReactiveUI.Events.WinForms/\n[WinBadge]: https://img.shields.io/nuget/v/ReactiveUI.WinForms.svg\n[WinDoc]: https://reactiveui.net/docs/getting-started/installation/windows-forms\n\n[Xam]: https://www.nuget.org/packages/ReactiveUI.XamForms/\n[XamEvents]: https://www.nuget.org/packages/ReactiveUI.Events.XamForms/\n[XamBadge]: https://img.shields.io/nuget/v/ReactiveUI.XamForms.svg\n[XamDoc]: https://reactiveui.net/docs/getting-started/installation/xamarin-forms\n[Dro]: https://www.nuget.org/packages/ReactiveUI.AndroidSupport/\n[DroBadge]: https://img.shields.io/nuget/v/ReactiveUI.AndroidSupport.svg\n[DroDoc]: https://reactiveui.net/docs/getting-started/installation/xamarin-android\n\n[DroX]: https://www.nuget.org/packages/ReactiveUI.AndroidX/\n[DroXBadge]: https://img.shields.io/nuget/v/ReactiveUI.AndroidX.svg\n\n[MacDoc]: https://reactiveui.net/docs/getting-started/installation/xamarin-mac\n[IosDoc]: https://reactiveui.net/docs/getting-started/installation/xamarin-ios\n\n[Uno]: https://www.nuget.org/packages/ReactiveUI.Uno/\n[UnoBadge]: https://img.shields.io/nuget/v/ReactiveUI.Uno.svg\n[UnoDoc]: https://reactiveui.net/docs/getting-started/installation/uno-platform\n[UnoWinUi]: https://www.nuget.org/packages/ReactiveUI.Uno.WinUI/\n[UnoWinUiBadge]: https://img.shields.io/nuget/v/ReactiveUI.Uno.WinUI.svg\n[UnoWinUiDoc]: https://reactiveui.net/docs/getting-started/installation/uno-platform\n\n[Blaz]: https://www.nuget.org/packages/ReactiveUI.Blazor/\n[BlazBadge]: https://img.shields.io/nuget/v/ReactiveUI.Blazor.svg\n[BlazDoc]: https://www.reactiveui.net/docs/getting-started/installation/blazor\n\n[Ava]: https://www.nuget.org/packages/Avalonia.ReactiveUI/\n[AvaBadge]: https://img.shields.io/nuget/v/Avalonia.ReactiveUI.svg\n[AvaDoc]: https://reactiveui.net/docs/getting-started/installation/avalonia\n[EventsDocs]: https://reactiveui.net/docs/handbook/events/\n\n[ValCore]: https://www.nuget.org/packages/ReactiveUI.Validation/\n[ValBadge]: https://img.shields.io/nuget/v/ReactiveUI.Validation.svg\n[ValDocs]: https://reactiveui.net/docs/handbook/user-input-validation/\n\n## Sponsorship\n\nThe core team members, ReactiveUI contributors and contributors in the ecosystem do this open-source work in their free time. If you use ReactiveUI, a serious task, and you'd like us to invest more time on it, please donate. This project increases your income/productivity too. It makes development and applications faster and it reduces the required bandwidth.\n\n[Become a sponsor](https://github.com/sponsors/reactivemarbles).\n\nThis is how we use the donations:\n\n* Allow the core team to work on ReactiveUI\n* Thank contributors if they invested a large amount of time in contributing\n* Support projects in the ecosystem\n\n## Support\n\nIf you have a question, please see if any discussions in our [GitHub issues](https://github.com/reactiveui/ReactiveUI/issues) or [Stack Overflow](https://stackoverflow.com/questions/tagged/reactiveui) have already answered it.\n\nIf you want to discuss something or just need help, here is our [Slack room](https://reactiveui.net/slack), where there are always individuals looking to help out!\n\nPlease do not open GitHub issues for support requests.\n\n## Contribute\n\nReactiveUI is developed under an OSI-approved open source license, making it freely usable and distributable, even for commercial use. \n\nIf you want to submit pull requests please first open a [GitHub issue](https://github.com/reactiveui/ReactiveUI/issues/new/choose) to discuss. We are first time PR contributors friendly.\n\nSee [Contribution Guidelines](https://www.reactiveui.net/contribute/) for further information how to contribute changes.\n\n## Core Team\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/glennawatson.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/glennawatson\"\u003eGlenn Watson\u003c/a\u003e\n        \u003cp\u003eMelbourne, Australia\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/chrispulman.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/chrispulman\"\u003eChris Pulman\u003c/a\u003e\n        \u003cp\u003eUnited Kingdom\u003c/p\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/rlittlesii.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/rlittlesii\"\u003eRodney Littles II\u003c/a\u003e\n        \u003cp\u003eTexas, USA\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/cabauman.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/cabauman\"\u003eColt Bauman\u003c/a\u003e\n        \u003cp\u003eSouth Korea\u003c/p\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n## Alumni Core Team\n\nThe following have been core team members in the past.\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/ghuntley.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/ghuntley\"\u003eGeoffrey Huntley\u003c/a\u003e\n        \u003cp\u003eSydney, Australia\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/kentcb.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/kentcb\"\u003eKent Boogaart\u003c/a\u003e\n        \u003cp\u003eBrisbane, Australia\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/olevett.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/olevett\"\u003eOlly Levett\u003c/a\u003e\n        \u003cp\u003eLondon, United Kingdom\u003c/p\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/anaisbetts.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/anaisbetts\"\u003eAnaïs Betts\u003c/a\u003e\n        \u003cp\u003eSan Francisco, USA\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/shiftkey.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/shiftkey\"\u003eBrendan Forster\u003c/a\u003e\n        \u003cp\u003eMelbourne, Australia\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/clairernovotny.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/clairernovotny\"\u003eClaire Novotny\u003c/a\u003e\n        \u003cp\u003eNew York, USA\u003c/p\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"105\"\u003e\n        \u003cimg width=\"100\" height=\"100\" src=\"https://github.com/worldbeater.png?s=150\"\u003e\n        \u003cbr\u003e\n        \u003ca href=\"https://github.com/worldbeater\"\u003eArtyom Gorchakov\u003c/a\u003e\n        \u003cp\u003eMoscow, Russia\u003c/p\u003e\n      \u003c/td\u003e\n     \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n## .NET Foundation\n\nReactiveUI is part of the [.NET Foundation](https://www.dotnetfoundation.org/). Other projects that are associated with the foundation include the Microsoft .NET Compiler Platform (\"Roslyn\") as well as the Microsoft ASP.NET family of projects, Microsoft .NET Core \u0026 Xamarin Forms.\n","funding_links":["https://github.com/sponsors/reactivemarbles"],"categories":["Frameworks, Libraries and Tools","C# #","C#","Reactive","框架, 库和工具","C\\#","🗒️ Cheatsheets","Functional Programming","Performance"],"sub_categories":["Functional Programming","响应式编程","📦 Libraries"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactiveui%2FReactiveUI","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactiveui%2FReactiveUI","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactiveui%2FReactiveUI/lists"}