Early Preview of Exrin

Please Note: Exrin is no longer actively developed.

I have quietly been working away over the last few months coding a solution to problems I have continued to experience with each Xamarin Forms project. After about 1.5 years of 60hr+ weeks of exclusive Xamarin Forms development, I am approaching 5,000hrs in Xamarin Forms and it was time to put that knowledge down in a framework.

The issues I have continued to encounter where no existing solution is available:

  1. An easy way to unit test ViewModel’s
  2. Enforce consistent handling and filtering of user actions
  3. A solid navigation service
  4. Handling threads for performance
  5. Ensuring high isolation of code

While simple apps may not face these issues, they occur frequently on any larger scale or enterprise level mobile app especially with multiple developers.


exrinWith that said, I wanted to introduce an early preview of Exrin – Xamarin Forms Framework. This is a framework with zero dependencies and you can use other MVVM Frameworks with it, however I did add in a few helper functions that means this can stand on its own without any other MVVM framework. You will have to bring your own Dependency Injection Framework, and I prefer AutoFac for this.


Is this framework opinionated? Yes, and here they are:

  • PCL’s are the preferred method for creating apps
  • MVVM Pattern is required
  • Dependency Injection is required
  • and more …

The best way to see the framework setup is to have a look at the Tesla Sample App. Far from complete but it does currently have a working pin login mechanism showing how it all fits together, along with unit tests.

Feel free to contact me if you have any queries regarding the Exrin Framework. Please see the Contact page.



  1. Jesse Liberty

    Stupid question time. In the docs you say you use Autofac, but Autofac says:

    …manually creating scopes everywhere and sprinkling use of the container through your code is not necessarily the best way to go. Using the Autofac integration libraries …things get resolved from a central, “top level” location in the application and manual resolution is rare.”

    The problem is that there is no integration library for Xamarin.Forms. Are you therefore resolving manually? Or am I (once again!) missing something?


    1. Adam Pedley

      If you look at the sample project, I use AutoFac in the InjectionProxy. https://github.com/exrin/ExrinSample/blob/master/Exrin-Sample/Exrin_Sample/Proxy/InjectionProxy.cs

      Exrin uses this to perform all the dependency injection from the top level.

      If you need to register additional services or classes, you would do that in the Bootstrapper, or PlatformBootstrapper. Then it will be available for DI across the app.

      I strongly discourage using the ServiceLocator.