The Future of Xamarin Community Toolkit

Brandon Minnick

With the upcoming release of .NET MAUI later this year, we are excited to share our plans for Xamarin Community Toolkit! This includes plans for a .NET MAUI Community Toolkit, backwards compatible version of the Xamarin Community Toolkit, and the sunsetting of the current Xamarin Community Toolkit. However, before we get to all of this, we want to thank all of our amazing contributors to the library.

Since the very first release of the Xamarin Community Toolkit, it has quickly become one of the most popular open-source Xamarin libraries with:

All of this success comes from you, our amazing Xamarin Developer Community! Every feature implemented, every pull request submitted, and every bug reported has been done by a member of the Xamarin Developer Community. It is truly a community effort.

We want to send a special thank you to our two community maintainers, Andrei Misiukevich and Pedro Jesus. Thank you for the countless hours you’ve both contributed to the toolkit ❤️. Now, let’s get into some of the exciting announcements today.

Introducing the .NET MAUI Community Toolkit

Just like Xamarin.Forms is evolving into .NET MAUI, the Xamarin Community toolkit is evolving as well. I am excited to announce the upcoming release of the .NET MAUI Community Toolkit! This is a new Community Toolkit library that is fully optimized for .NET MAUI.

We will be releasing two NuGet Packages:

  • CommunityToolkit.Maui

  • CommunityToolkit.Maui.Markup

Like the Xamarin Community Toolkit, the .NET MAUI Community Toolkit is fully open-source and community supported! We are currently working on porting the features from Xamarin Community Toolkit to the .NET MAUI Community Toolkit, and encourage you to continue helping us out.

Going forward, the .NET MAUI Community Toolkit will be the recommended toolkit for all .NET MAUI apps.

CommunityToolkit.Maui CommunityToolkit.Maui.Markup
Dependency .NET MAUI .NET MAUI
Native Implementation .NET MAUI Handlers .NET MAUI Handlers
Target .NET 6.0 (Same as .NET MAUI) .NET 6.0 (Same as .NET MAUI)
Platforms iOS, Android, Windows, macOS (Same as .NET MAUI) iOS, Android, Windows, macOS (Same as .NET MAUI)

We are targeting August 2021 to release the first preview of the new CommunityToolkit.Maui NuGet packages, and we will publish a transition guide to help navigate any breaking changes between Xamarin.CommunityToolkit and CommunityToolkit.Maui.

And yes, both Andrei Misiukevich and Pedro Jesus have graciously volunteered to continue on as maintainers for .NET MAUI Commmunity Toolkit. Thank you to you both!

Introducing Xamarin.CommunityToolkit.MauiCompat

To help all of us avoid breaking changes when porting our Xamarin.Forms apps to .NET MAUI, we are releasing two .NET MAUI-Compatible versions of the Xamarin Community Toolkit:

  • Xamarin.CommunityToolkit.MauiCompat

  • Xamarin.CommunityToolkit.Markup.MauiCompat

These MauiCompat NuGet packages will be nearly identical to the current Xamarin Community Toolkit libraries; we are only changing the Xamarin.Forms dependency to .NET MAUI, keeping the rest of the code base the same.

The MauiCompat library allows us to continue using the Xamarin Community Toolkit as we use it today. The only thing you need to do is uninstall the Xamarin.CommunityToolkit NuGet package, install the Xamarin.CommunityToolkit.MauiCompat NuGet Package, and update the namespaces. No further code changes are required!

We are targeting August 2021 to release the first preview of the new MauiCompat NuGet packages.

Xamarin.Community.Toolkit Xamarin.CommunityToolkit.MauiCompat Xamarin.Community.Toolkit.Markup Xamarin.CommunityToolkit.Markup.MauiCompat
Dependency Xamarin.Forms .NET MAUI Xamarin.Forms .NET MAUI
Native Implementation Custom Renderer Custom Renderer Custom Renderer Custom Renderer
Target .NET Standard 1.0 (Same as Xamarin.Forms) .NET 6.0 (Same as .NET MAUI) .NET Standard 1.0 (Same as Xamarin.Forms) .NET 6.0 (Same as .NET MAUI)
Platforms iOS, Android, GTK#, Tizen, UWP, WPF (Same as Xamarin.Forms) iOS, Android, Windows, macOS (Same as .NET MAUI) iOS, Android, GTK#, Tizen, UWP, WPF (Same as Xamarin.Forms) iOS, Android, Windows, macOS (Same as .NET MAUI)

Note: To ensure no breaking changes, Xamarin.CommunityToolkit.MauiCompat will continue using Custom Renderers and will not utilize .NET MAUI Handlers

Unifying Xamarin Community Toolkit + Windows Community Toolkit

The .NET MAUI Community Toolkit will debut in a new GitHub repository where we are combining efforts with the Windows Community Toolkit team! This allows us to combine engineering, DevOps, and documentation and marketing resources with Windows Community Toolkit. We are also sharing code between both toolkits via new library, CommunityToolkit.Common.

The new libraries are open-source and can be found in the CommunityToolkit GitHub Organziation. This GitHub Organization was previously named Windows Community Toolkit (windows-toolkit). The updated + unified organization allows us to most efficiently share code and CI/CD workflows between toolkits, and opens the possibility for additional toolkits in the future.

You can learn more about the Windows Community Toolkit’s work for WinUI 3 and the new CommunityToolkit.WinUI identity in their official announcement.

You can also follow our progress here in the Community Toolkit GitHub Organization, and don’t be shy about submitting pull requests!

Stay tuned to the .NET Blog for more updates on the unified CommunityToolkit!

Sunsetting Xamarin.CommunityToolkit

Following the same schedule as Xamarin.Forms, we will continue to service Xamarin Community Toolkit through November 2022.

We will continue accepting pull requests adding new features until September 2021.

We will continue accepting pull requests fixing bugs and publish service releases through November 2022.

The source code for Xamarin Community Toolkit will remain in its current GitHub Repository in the Xamarin GitHub Organization: https://github.com/xamarin/XamarinCommunityToolkit

Schedule

When will all of these new libraries be available? Here’s our upcoming schedule!

Date Milestone
August 2021 NuGet Pre-Release of Xamarin.CommunityToolkit.MauiCompat
August 2021 NuGet Pre-Release of Xamarin.CommunityToolkit.Markup.MauiCompat
August 2021 NuGet Pre-Release of CommunityToolkit.Maui
August 2021 NuGet Pre-Release of CommunityToolkit.Maui.Markup
August 2021 NuGet Pre-Release of CommunityToolkit.Common
September 2021 Last Call for Pull Requests adding new features to Xamarin Community Toolkit
November 2021 .NET MAUI GA
November 2021 Feature Freeze for Xamarin Community Toolkit
November 2022 Final Release of Xamarin Community Toolkit

Summary

Thank you to all of the amazing contributors to Xamarin Community Toolkit! We could not have created such a successful library without your help, and we can’t wait to see the amazing new features you’ll add to the .NET MAUI Community Toolkit!

We can use your help porting features from Xamarin Community Toolkit, so be sure to check out the new open-source .NET Community Toolkit repositories and start submitting pull requests today!

4 comments

Discussion is closed. Login to edit/delete existing comments.

  • saint4eva 0

    Nice one. What about

    CommunityToolkit.Maui.Comet
    • Brandon MinnickMicrosoft employee 0

      I love the idea! It’s certainly a possibility!

      If you’re interested in creating it, owning it, maintaining it, etc, send me an email: bramin@microsoft.com 🙌

  • Максим Кошевой 0

    Great news! Will be happy to help port XCT to CommunityToolkit.Maui.

    Are there any planned differences between CommunityToolkit.Maui and Xamarin.CommunityToolkit.MauiCompat except what renderer is used? I mean, is solution structure and features will be the same?

    • Gerald VersluisMicrosoft employee 0

      We didn’t plan that far yet I think 🙂 For the MauiCompat one the features will be the same as the current Toolkit. For the “.NET MAUI Native” one we’ll have to see. Since we now have overlap with the CommunityToolkit.Windows (aka Windows Community Toolkit) we will have to see which features move to a more common place etc.

Feedback usabilla icon