Skip to content
A Model-View-Update Proof of Concept for Xamarin.iOS and Xamarin.Android
F#
Branch: master
Clone or download

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
samples Small refactorings Feb 6, 2020
src Small refactorings Feb 6, 2020
.gitignore Updated gitignore to ignore .idea Oct 23, 2019
LICENSE.md Readme + license Jan 30, 2020
README.md Readme + license Jan 30, 2020

README.md

Fabulous.XamarinNative

What is this?

This is a very early proof of concept, intended to explore possible use cases for Fabulous running on Xamarin.iOS and Xamarin.Android. It is based on the "half-elmish approach" of Fabulous.StaticView, which was built on top of existing XAML views for Xamarin.Forms applications.

Why does it exist?

We think that Xamarin.Forms is nice for some scenarios, but building native apps with Xamarin.iOS and Xamarin.Android still has its advantages for certain areas as well. We also believe in MVU as the superior architecture approach compared to the ubiquitous MVVM. So we would like to have a Fabulous implementation for native Xamarin apps. Simple as that :-).

Constraints

Xamarin apps can be built in all languages that are supported by .NET – in theory. In practice, the Xamarin tooling, e.g., the parts that automatically generate the code for outlets and actions created by Xcode Interface Builder, has not been given as much love for F# as it has been given for C#, and therefore suffers from some very bleeding edges. The focus of the Xamarin universe clearly is on C#, where tooling works excellent.

Another caveat is that native UIs on both iOS and Android are heavily based on object-oriented concepts. So building them in a functional-first language such as F# would work – in theory. In practice, one would be spending much time dealing with things like inheritance, mutating state, and eventually writing a lot of ugly boiler-plate code.

In other words: We think that it makes sense to keep writing the UI stuff in C#.

It's a library, not a framework

We think of this as a library that is being used behind the scenes and across the apps. So a Fabulous.XamarinNative program will be hosted by the "views" aka UIViewControllers and Activities and enable you to share common logic behind those platform-specific frontends.

However, it will not deal with things like navigation and other tasks that are taken care of by heavy-weight frameworks like MvvmCross.

Credits

This library would not be possible without the fabulous Fabulous library!

You can’t perform that action at this time.