Here is my essential list of official and community plugins and libraries for applications. You will find a lot of Xamarin and Xamarin.Forms libraries, but also great libraries for .NET that can help power your apps. If you have a favorite library or are the creator of one, please send a PR!
Xamarin.Essentials: The stuff your app needs
Xamarin.Essentials gives developers essential cross-platform APIs for their mobile applications. Xamarin.Essentials exposes over 60 native APIs in a single cross-platform package for developers to consume in their iOS, Android, UWP, or Xamarin.Forms application. Browse through the documentation on how to get started today.
The repository for Xamarin.Essentials can be found at https://github.com/xamarin/Essentials. If you have any suggestions or feature requests, or if you find any issues, please open a new issue.
If you have bene using my plugins, I will continue to support the ones that aren't in Xamarin.Essentials, but I recommend you transition using my guide.
Shiny: That complex stuff made easy
Shiny is an amazing project from Allan Ritchie, Microsoft MPV and long time Xamarin developer, that makes really complex native functionality easy. This includes things such at Bluetooth LE, Background Jobs, HTTP Transers, Push Notifications, NFC, and more.
Plugins for Xamarin are community built NuGet and Components that add cross-platform functionality or abstracts platform specific functionality to a common API. These are both completely cross-platform and extremely small (i.e., they do 1 or 2 things really well with minimal-to-no dependencies). The Plugin API can be accessed on each platform, however, you will most likely only use the common API in a .NET Standard project.
Notice: Plugins for Xamarin featured here are produced by the amazing open source community of Xamarin developers. Xamarin does not provide official support for these plugins, please contact their creator with any issues.
Browse through the most popular plugins out there today!
Name | Description | NuGet | Docs & Source | Creator |
---|---|---|---|---|
Audio Recorder | Record audio on a device's microphone input. | NuGet | GitHub | @NateRickard |
Barcode Scanner | Scan and create barcodes with ZXing.NET.Mobile. | NuGet | GitHub | @Redth |
Breach Detector | Detect root, emulation, debug mode and other security concerns. | NuGet | GitHub | @nmilcoff |
Calendar | Query and modify device calendars | NuGet | GitHub | Caleb Clarke |
Config | Define the settings of the application for each environment in which it will run. | NuGet | GitHub | @abonilla93 |
Custom Vision | Runs CoreML and TensorFlow models from https://CustomVision.ai on device | NuGet | GitHub | @JimBobBennett |
File Picker | Pick and save files. | NuGet | GitHub | @studyxnet |
File Uploader | Upload files using multipart request. | NuGet | GitHub | @rdelrosario |
Fingerprint | Access Fingerprint sensor on iOS, Android, and Windows. | NuGet | GitHub | @smstuebe |
Geolocator | Easily detect GPS location of device. | NuGet | GitHub | @JamesMontemagno |
Identity Document Scanning | Enable scanning of various identity documents in your app. | NuGet | GitHub | @microblink |
In-App Billing | Make, Query, and get In-App Purchases and Subscriptions. | NuGet | GitHub | @JamesMontemagno |
Media | Take or pick photos and videos. | NuGet | GitHub | @JamesMontemagno |
Media Manager | Playback for Audio and Video. | NuGet | GitHub | @mhvdijk |
Multilingual Plugin | Simple cross platform plugin for handling language localization. | NuGet | GitHub | @CrossGeeks |
Screenshot | Get and save a screenshot of your apps. | NuGet | GitHub | @wilson_vargasm |
Speech Recognition | Speech to Text. | NuGet | GitHub | @allanritchie911 |
Simple Audio Player | Play multiple MP3 or wave files from a shared library. | NuGet | GitHub | @adrianstevens |
Store Review | Ask for store review or launch app store page. | NuGet | GitHub | @jamesmontemagno |
Toast | A simple way of showing toast/pop-up notifications. | NuGet | GitHub | @AdamPed & @EgorBo |
User Dialogs | Message box style dialogs. | NuGet | GitHub | @allanritchie911 |
Name | Description | NuGet | Docs & Source | Creator |
---|---|---|---|---|
Akavache | An asynchronous, persistent (i.e. writes to disk) key-value store. | NuGet | GitHub | @paulcbetts |
Cosmos DB | Azure Cosmos DB is a globally distributed, multi-model database service. | NuGet | GitHub | @azurecosmosdb |
LiteDB | LiteDB - A .NET NoSQL Document Store in a single data file | NuGet | GitHub | @mbdavid |
š Monkey Cache | Cache any data structure for a specific amount of time with minimal dependencies. | NuGet | GitHub | @jamesmontemagno |
Mono.Data.Sqlite | Add Mono.Data.Sqlite to any Xamarin or Windows .NET app. | NuGet | GitHub | @mattleibow |
Realm | Realm is a mobile database: a replacement for SQLite and ORMs. | NuGet | GitHub | @realm |
SQLite-net | Simple, powerful, cross-platform SQLite client and ORM for .NET | NuGet | GitHub | @praeclarum |
These are just some awesome libraries that work in any .NET app!
Name | Description | NuGet | Docs & Source | Creator |
---|---|---|---|---|
AnyBind | Easily bind ViewModel to one or more Models. | NuGet | GitHub | Alexander Kvenvolden |
Expressive | Expression parsing and evaluation framework | NuGet | GitHub | Shawn Lawrence |
HttpTracer | Simple tracing library to capture HTTP request/responses. | NuGet | GitHub | BSi Labs |
MvvmHelpers | Collection of small MVVM helpers for app devs. | NuGet | GitHub | Creator |
Portable Razor | Lightweight implemenation of ASP.NET MVC APIs for mobile. | NuGet | GitHub | @JosephHill |
Sockets | TCP & UDP Listeners and Clients + UDP multicast. | NuGet | GitHub | @rdavis_au |
TinyInsights | Abstraction for one or more analytics providers from shared code. | NuGet | GitHub | TinyStuff Team |
Xamarin.Forms and Windows has MVVM built right, but perhaps you want to go farther and need more. Checkout these great libraries to help you out:
- FreshMvvm - A super light Mvvm Framework designed specifically for Xamarin.Forms. It's designed to be Easy, Simple and Flexible.
- MvvmAtom - Provides the middle ground by providing the base classes and wiring for most commonly used MVVM feature.
- MvvmCross - Build clean, pixel perfect, native UIs. Share behavior and business logic in a single codebase across supported platforms, using the Model-View-ViewModel (MVVM) design pattern.
- MvvmLight - The main purpose of the toolkit is to accelerate the creation and development of MVVM applications in Xamarin.Android, Xamarin.iOS, Xamarin.Forms, Windows 10 UWP, & Windows Presentation Foundation (WPF).
- Prism - Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Windows 10 UWP, and Xamarin.Forms.
- Xamarin.Forms Mvvm Adaptor - ViewModel-first mvvm framework for Xamarin.Forms. Lightweight, it adapts Xamarin's existing mvvm engine.
Looking for controls for your apps? These vendors have absolutely everything that you need. Many offer free trials, community editions or a free version.
Checkout the awesome trailer for these controls on YouTube.
Here are some awesome UI controls for your Xamarin.Forms apps!
Name | Description | NuGet | Docs & Source | Creator |
---|---|---|---|---|
AutoForms | Auto generated Xamarin.Forms UI from your Domain Models | NuGet | GitHub | Patrick Abadi, Daniel Packard |
AutoSuggestBox | Auto-complete/suggestion textbox control | NuGet | GitHub | dotMorten |
Bit controls | Multi calendar date time picker based on noda time and a few other controls. | NuGet | GitHub | Bit foundation |
Breadcrumb | Automatically generated breadcrumb navigation control for Xamarin.Forms. | NuGet | GitHub | Ieuan Walker |
Color Picker | An interactive and responsive Color Picker Control for Xamarin.Forms based on SkiaSharp! | NuGet | GitHub | Udara Alwis |
Debug Rainbows | Overlay grids to help manage layouts. | NuGet | GitHub | Steven Thewissen |
FFImageLoading | Image loading with caching, placeholders, transformations and more | NuGet | GitHub | @molinch, @daniel-luberda |
Glidex.Forms | Glidex.Forms is a library using Glide for faster Xamarin.Forms images on Android. | NuGet | GitHub | @jonathanpeppers |
FloatingActionMenu | Floating action menu, inspired by the material design floating action button. | NuGet | GitHub | DIPS AS Team |
MagicGradients | Gradients everywhere! Powered by SkiaSharp | NuGet | GitHub | Marcin GierlasiÅski |
Material Design Controls for Xamarin.Forms | The suite of Material Design controls with a feature-rich. Create fast, beautiful, and cross-platform mobile apps. | NuGet | GitHub | Horus Studio |
MtAdmob | Add Google Admob banners, interstitials and rewarded videos to Android and iOS with a single line of code. | NuGet | GitHub | @marcojak |
PancakeView | An extended ContentView for Xamarin.Forms with rounded corners, borders, shadows and more. | NuGet | GitHub | Steven Thewissen |
Popup | Custom popups with a nice modality feed to it. | NuGet | GitHub | DIPS AS Team |
Shared Transitions | Des | NuGet | GitHub | Giampaolo Gabba |
Sheet | Sliding bottom / top sheet control. | NuGet | GitHub | DIPS AS Team |
Sharpnado | Collection of controls including Tabs, TaskLoaderVIew, and more. | NuGet | GitHub | Jean-Marie Alfonsi |
Skeleton for Xamarin.Forms | The latest trend for loading approaches in Xamarin Forms apps. | NuGet | GitHub | Horus Studio |
SkiaSharp | Cross-platform 2D graphics API for .NET powered by Skia | NuGet | GitHub | Mono Team |
SkiaSharp for Xamarin.Forms | Cross-platform 2D graphics API for Xamarin.Forms powered by Skia | NuGet | GitHub | Mono Team |
StateButton | With this control you are able to create any style of button. This is possible as it acts as a wrapper to your XAML and provides you the events/ commands and properties to bind too. | Nuget | GitHub | Ieuan Walker |
StateSquid | Turn any layout into an individual state-aware element | Nuget | GitHub | Steven Thewissen |
Switch | A switch control that allows you to design/ create any switch you want | Nuget | GitHub | Ieuan Walker |
TouchEffect | Make Xamarin.Forms views touch-responsive without TapGestureRecognizer. | NuGet | GitHub | Andrei Misiukevich |
TrendGraph | Display a trend graph in your mobile app. | NuGet | GitHub | DIPS AS Team |
Xamanimation | An awesome animation library for Xamarin.Forms | NuGet | GitHub | Creator |
Xamlly | Control library featuring progress, switch, toggle button, and more. | NuGet | GitHub | Mohamed Elshawaf |
These are things that your app needs, but aren't UI or normal libraries such as Visual Studio extensions or other magic build time things.
Name | Description | NuGet | Docs & Source | Creator |
---|---|---|---|---|
Mobile Tasks for Azure DevOps | Tasks to update version numbers & package information | VS Marketplace | GitHub | James Montemagno |
Mobile.BuildTools | Handle Project Secrets, Process SCSS to Xamarin.Forms CSS, Cross platform image management, White-Labeling and more powered by MSBuild. | NuGet | GitHub | Dan Siegel |
ResizetizerNT | Add & Resize SVGs and PNGs to your shared projects. | NuGet | GitHub | Jon Dick |
VSMac-CodeCoverage | Gather code coverage results for your unit test projects from Visual Studio for Mac. | mpack install | GitHub | Arthur Demanuele |
VSMac-CodeDistribution | A Visual Studio for Mac extension that visualises code distribution between projects. Particularly useful for Xamarin projects to understand the amount of code shared between platforms. | mpack install | GitHub | Arthur Demanuele |
If you are looking to create a plugin be sure to browse through NuGet first and ensure that the plugin doesn't exist. If one does join in on the fun and collaborate. If it doesn't and you want to start building a Plugin here are some tools and guidelines to get you started.
Tools to get Started
- Visual Studio Plugin Templates: Provides a complete plugin template and easy NuGet specification to publish.
- Using & Developing Plugins for Xamarin: Join Developer Evangelist James Montemagno as he walks you through creating a plugin from scratch on Xamarin University
Requirements of a Plugin
- Open source on GitHub
- Documentation on GitHub's README file
- Name: "FEATURE_NAME Plugin for Xamarin and Windows"
- Namespace: Plugin.FEATURE_NAME
- App-store friendly OSS license (we like MIT)
- No dependency on Xamarin.Forms
- Have a list of supported and unsupported OSs in its GitHub wiki
Licensed under MIT see License file. Each plugin licensed under parent license unless stated in it's readme file.
All I have ever asked is to be active by submitting bugs, features, and sending those pull requests down! Want to go further? Make sure to subscribe to my weekly development podcast Merge Conflict, where I talk all about awesome Xamarin goodies and you can optionally support the show by becoming a supporter on Patreon.