Announcing Experimental Mobile Blazor Bindings

Eilon Lipton

Eilon

Today I’m excited to announce a new experimental project to enable native mobile app development with Blazor: Experimental Mobile Blazor Bindings. These bindings enable developers to build native mobile apps using C# and .NET for iOS and Android using familiar web programming patterns. This means you can use the Blazor programming model and Razor syntax to define UI components and behaviors of an application. The UI components that are included are based on Xamarin.Forms native UI controls, which results in beautiful native mobile apps.

Here is a sample Counter component, which may look familiar to Blazor developers, that increments a value on each button press:

<StackLayout>
    <Label FontSize="30"
           Text="@("You pressed " + count + " times")" />
    <Button Text="+1"
            OnClick="@HandleClick" />
</StackLayout>

@code {
    int count;

    void HandleClick()
    {
        count++;
    }
}

Notice that the Blazor model is present with code sitting side by side the user interface markup that leverages Razor syntax with mobile specific components. This will feel very natural for any web developer that has ever used Razor syntax in the past. Now with the Experimental Mobile Blazor Bindings you can leverage your existing web skills and knowledge to build native iOS and Android apps powered by .NET.

Here is the code above running in the Android Emulator:

Clicking increment button in Android emulator

Get started with Mobile Blazor Bindings

To get started, all you need is the .NET Core 3.0 or 3.1 SDK, Visual Studio or Visual Studio for Mac, and the ASP.NET and web development and Mobile development with .NET (Xamarin.Forms) workloads installed.

Install the templates by running this command from a command/shell window:

dotnet new -i Microsoft.MobileBlazorBindings.Templates::0.1.173-beta

And then create your first project by running this command:

dotnet new mobileblazorbindings -o MyApp

Open the solution (SLN file) in Visual Studio and mark either the Android or iOS project as the StartUp Project, which should look like this:

VS solution with shared UI, Android, and iOS projects

Now run your first Mobile Blazor Bindings app in a local emulator or on an attached mobile device! Don’t have one set up yet for development? No worries, the Xamarin documentation has all the details for you here:

For documentation and walkthroughs, check out the Mobile Blazor Bindings documentation.

Why Mobile Blazor Bindings now?

Many developers delight in using XAML and Xamarin.Forms to craft beautiful native mobile apps. We have heard from a set of developers that come from a web programming background that having web specific patterns to build mobile applications would be ideal for them. The goal of these bindings is to see if developers would like to have the option of writing markup and doing data binding for native mobile applications using the Blazor-style programming model with Razor syntax and features. Would you love to see this option in the box for future versions of Visual Studio?

Learn more

To learn more about Experimental Mobile Blazor Bindings, please check out these resources:

Give feedback

Please send us your feedback via issues in our GitHub repo and by completing a short survey about your experience and expectations.

We hope you try out this new framework and let us know your thoughts!

Eilon Lipton
Eilon Lipton

Follow Eilon   

16 comments

  • Guillermo Perez
    Guillermo Perez

    I would like to see more books on how to use Blazor instead of creating new projects that we can barely use what we already have… For example at this point I’m waiting until May for a book that will explain how to use Blazor

    • Avatar
      David Ortinau

      Hi Guillermo, I’m looking forward to more books and materials as well! In the meantime, feel free to suggest topics here for the Blazor team.

  • Avatar
    Juho Hanhimäki

    I feel advancing PWAs should be the main focus. I don’t want to spend time developing native mobile app UI in addition to the web app UI which will already scale to mobile devices. For sure there are more challenges in this area than Blazor team alone can solve, but I hope Microsoft will embrace PWA and really work to push the whole industry towards it.

    Regardless I guess these bindings can be helpful for those who want to focus resources on building a native mobile app.

    • Avatar
      David Ortinau

      Good feedback Juho, thanks.

      Even more than embracing PWA I think it’s important, and hopefully encouraging, to know that we first and foremost embrace supporting customer needs over and above a specific approach to technology. In that way I believe we will absolutely push the whole industry forward!

  • Avatar
    FillTable Admin

    First time trying this on iOS, got exception:

    System.PlatformNotSupportedException: ‘Loading…’

    on

    var host = Host.CreateDefaultBuilder()
                    .ConfigureServices((hostContext, services) =>
                    {
                        // Register app-specific services
                        //services.AddSingleton<AppState>();
                    })
                    .Build();
    • Avatar
      FillTable Admin

      I get what MSFT is trying to do. Blazor that works everywhere just like other mobile development frameworks. It make sense to have one to be competitive. While it is good enough to cover most of the cases without platform specific, it’s always a good practice to have developers native to the platform. I love blazor, but I also like native mobile development.

  • Avatar
    Paulo Pinto

    Guys please focus on Blazor for WebAssembly scenarios, that is all.

    Give us a solid story on WPF, UWP and Xamarin alongside native .NET cross platform instead of chasing rabbits!

    I see too much Silverlight and XNA bad memories in this UI craziness where the community is just being ignored.

    And no we don’t want any kind Electron support.

  • Avatar
    Duncan Jack

    Wow. Been using Blazor for about 6 months, just started using Xamarin.Forms over Christmas. Thought ‘Wouldn’t it be great if …” and now you’ve gone and done it!

    Well done and thank you. And good job on the resources too.

    • Avatar
      David Ortinau

      Thanks Duncan! Let me know how you get on with it. Very early stages and plenty of controls to light up yet, but it’s a start.

  • Gísli Sigurðsson
    Gísli Sigurðsson

    Great article, I have been really excited since I saw this announced a few months ago, have already set this up and started tinkering. Created a fart counting app because my coworker is always annoyed that I am so flatulent and now he can keep count 😀

    I saw both in the demo I watched yesterday and when I was tinkering with it that there are a lot of errors while building that you said that we can just ignore, so for the time being I just added these lines to the _import.razor for every blazor component that was throwing an error:

    @using Button = Microsoft.MobileBlazorBindings.Elements.Button

    I know it is a hacky solution and incredibly temporary, but at least you can see your errors now and not these false positives until this is fixed properly.

    The Blazor future is bright 🙂

  • kerschl.alexander@kermi.de
    kerschl.alexander@kermi.de

    Please focus on WebAssembly and Xamarin Forms first
    There is a lot to do here instead of wasting resources. Nobody needs another web based app toolkit.
    Better think about a native cross platform gui…

Leave a comment