Wow! It's been a while, but we have a juicy new release for you. We had to take some time to heal internally, to train and mentor the future generations of maintainers which are going to carry us forward. Additionally the .NET ecosystem changed underneath us, and we didn't have continuous integration setup. Let this be a lesson to anyone considering operating an open-source project that targets nine platforms. Have a roadmap and succession plan in place and never allow long-running branches, ever. Implement continuous integration and mature your release processes to the point where cutting a new release is as simple as pressing a button.
So what is ReactiveUI?
ReactiveUI is inspired by functional reactive programming and is the father of the ReactiveCocoa (Cocoa/Swift) framework. Internally we debate whether we are or are not a framework, as at its core the project is essentially a bunch of extension methods for the Reactive Extensions.
ReactiveUI was started seven years ago and is now old enough to attend grade school but unlike a teenager is extremely stable. ReactiveUI has matured over the years into a solid and fine choice for building your next application. Additionally, because the implementation is unopinionated migration from another framework to ReactiveUI is incredibly easy.. You can slide it in on a single ViewModel and then migrate as you become more comfortable. Avoid those costly rewrites.
When reading the code, you'll find that ReactiveUI is rather unopinionated in the implementation, but we have always held some beliefs which have been the basis and foundation of the project.
We believe that code is communication between people, that also happens to run on a computer. If you optimise for humans, then over a long time your project will end up better. Software should be understandable by other people; that is super important.
We believe that only the power of the Reactive Extensions allows you to express the idea around a feature in one readable place.
Think about your typical user interface? It's a mutable bag of sadness with code all over the place. Instead of telling a computer how to do its job, why not define what the computers job is and get out of its way? If that sounds odd, let us re-introduce you to Microsoft Excel.
Instead of doing the typical ViewModel isLoading = true/false mutable dance by toggling it on and off in different branches of your code. Why not express the condition in a single place using a Microsoft Excel expression - =SUM(A1: B2)?
Still not convinced?
Maybe you need to watch this insanely smart, and eccentric guy in a tie-dye t-shirt do maths on a whiteboard:
Async/await is the zombie plague. Liberate your codebase today.
ReactiveUI is used in production at GitHub, Slack, Microsoft and is supported by consultants from different companies from all around the world. It's used at our clients, we can't name names specifically, but we encourage our community to showcase where and how they have used ReactiveUI in their applications, some members have even gone as far as open-sourcing their app and sharing their entire codebase. You are of course under no obligation to share these insights (or code) with us but it is greatly appreciated by the project maintainers, and you'll usually get a retweet out of it.
Where are the examples?
We are working on it; this release was for us. Next release is for you. For now:
Rx is hard
No, it's not. Learning Rx is one of the best things you can do to improve yourself as a software engineer. Unit testing was hard, so was dependency injection at first. The principals you learn during your journey will forever change you and best of all the knowledge is implementation and language agnostic. We have designed ReactiveUI so you can slowly transition from an async/await codebase at a pace that feels comfortable to you.Read more...
This release resolves a NuGet metadata defect which was preventing the installation of ReactiveUI into Windows Phone projects (issue https://github.com/reactiveui/ReactiveUI/issues/1146). The assemblies within v6.5.2 are the same as those found in v6.5.1 and v6.5.0.Read more...
This release resolves a NuGet metadata defect which was preventing the installation of ReactiveUI into portable class libraries that targeted
Profile259. The assemblies within v6.5.1 are the same as those found in v6.5.0.
Thanks to @kentcb, our support of UITableViewController and UICollectionViewController are much more reliable, and will correctly animate in items. A huge thanks for an awesome PR!Read more...
Thanks to @mteper, ReactiveUI now has 64-bit Xamarin.Mac supportRead more...
Bug Fixes:Read more...
ReactiveUI now fully supports the new 64-bit Xamarin.iOS API, if you are running Xamarin.iOS 8.4 or higher (currently in the Beta channel).Read more...
Several small fixes have come together to enable ReactiveUI ViewModel-based Routing and auto-serialization for Xamarin.Forms-based apps:Read more...
On Android, an improved Scheduler based on RxJava is now automatically configured in your application, that no longer requires setup in OnCreate. Using the main thread scheduler should now work even in contexts such as bound services or other non-Activity scenarios. (#717).Read more...