Grial for .NET MAUI
Version 4.4.126.0
March 6, 2026
This release adds support for .NET 10 and introduces new handlers for NavigationPage and the Repeater control!
Breaking Changes (Summary)
.NET 8
Now that support has ended, we’re moving away from .NET 8. Our NuGet packages now support only .NET 9 and .NET 10. Our XAML templates are now built for .NET 10, so if you plan to download a new template, we strongly recommend migrating your application to .NET 10 first.
GrialNavigationPage
We made major improvements to GrialNavigationPage properties, the custom navigation bar, and GrialNavigationPageHandler.
- It’s no longer necessary to set up the
navigationlayout.axmlfile. If you currently have it, you must remove it—on .NET 10, it can cause a crash. - We no longer support the MAUI properties
NavigationPage.HasNavigationandNavigationPage.TitleView. If you need these behaviors, usegrial:GrialNavigationPage.HasNavigationandgrial:GrialNavigationPage.TitleViewinstead. - With this new implementation, the default navigation bar is hidden. If you have custom logic to calculate the navigation bar height, switch to our service
INavigationBarInfoService. You can resolve it viaServiceHelper.Get<INavigationBarInfoService>().
If you run into any navigation bar issues, please let us know—we’ll be actively working on improvements in the coming months.
Animations
Following the ClickGestureRecognizer removal, the attached property Animate.Clicked has also been removed. Use Animate.Tapped instead.
Repeater
We fixed a typo in the SpacingMode enum: Arround has been renamed to Around.
Mopups
We removed Mopups from Grial. All popups are now based on UXDivers Popups for .NET MAUI.
New Stuff
Repeater
We fully reworked the Repeater and its implementation. With recent improvements in MAUI’s CollectionView, we revisited where Repeater can provide unique value. We refactored virtualization and performance so it’s a better alternative to MAUI’s CollectionView and other vendors’ list controls. We also added new properties to fine-tune performance and memory usage.
In general, if you need faster initial load times, or your items have equal or fixed sizes, you’ll likely want to choose Repeater, since performance can be noticeably better in those scenarios.
- New property
MeasureStrategy: An enum with values [First(default),All]. As the names imply,Firstmeasures only the first item and reuses its size for all items (avoiding per-item measurement).Allinstructs theRepeaterto measure every item. This property is ignored ifItemSizehas a value. - New property
BufferSize: Anintthat lets you fine-tune how much the control allocates for virtualization. Larger values can make scrolling smoother, but will increase memory usage—use with care. - New property
EmptyView:Repeaternow supports an empty state natively. Set a view toEmptyView, and it will display whenItemsSourceisnullor empty.
GrialNavigationPage
GrialNavigationPageHandler has been fully reworked. This allows us to improve navigation bar performance and customization. In upcoming releases, we’ll build on this foundation and introduce additional features.
GrialNavigationPage.ForceShadowandGrialNavigationPage.HideShadoware now deprecated—useGrialNavigationPage.ShadowTypeinstead.- Android setup has been updated: the
navigationlayout.axmlfile is no longer required. Please remove it when migrating to .NET 10. - The properties
NavigationPage.HasNavigationandNavigationPage.TitleVieware no longer supported—useGrialNavigationPage.HasNavigationandGrialNavigationPage.TitleViewinstead.
ToolbarItemBadgeProperties
With our new navigation bar, it’s now easier to apply larger customizations. In this release, we’re introducing new attached properties for ToolbarItem that allow you to display a badge over the item. The badge can be a small dot (for notifications) or contain text (for example, the number of notifications or messages).
Here is the API—you can use grial:ToolbarItemBadgeProperties on a ToolbarItem to set the following properties:
| Property | Type | Description |
|---|---|---|
| IsVisible | bool | Badge visibility; if true and Text is empty, shows a dot indicator (unread). |
| Text | string | Badge text; when set, displays a pill/circle with text. Null/empty hides text (use with IsVisible for dot). |
| BackgroundColor | Brush | Badge background brush (solid or gradient). Default is red. |
| TextColor | Color | Badge text color. Default is white. |
| Position | BadgePosition | Badge position relative to the toolbar icon. Default is TopRight. |
| FontSize | double | Font size for badge text. Default 11 (iOS) or 12 (Android). |
| BadgeSize | double | Minimum badge size for text badges. Default 16 (iOS) or 18 (Android). |
| DotSize | double | Size of the dot indicator. Default 8. |
| CenterOffset | double | Distance from icon center to badge position; 0 center to 14 corner. Default 14. |
In a future release, we’ll continue expanding navigation bar customization options.
UXDivers Popups
Over the past months, the UXDivers team has made a major contribution to the MAUI ecosystem with their new popups library: UXDivers Popups for .NET MAUI.
We decided to migrate from Mopups to this library. We included the popups from their demo app, migrated our classic popups, and added 4 new popups designed by the Grial team. Here is the full list of popups now available:
- Simple Dialog
- Simple Dialog No Title
- Simple Dialog No Title Inverse
- Irregular Dialog
- Notification Popup
- Open Custom ActionSheet
- Clipboard Link Popup (New)
- Single Entry Form Popup (New)
- Interactive Notification Popup (New)
- Options List Popup (New)
- Floater (UXDivers Library)
- Toast (UXDivers Library)
- Options Sheet (UXDivers Library)
- Simple Text (UXDivers Library)
- Simple Action (UXDivers Library)
- Image Action Sheet (UXDivers Library)
- Icon Text Popup (UXDivers Library)
- List Action Popup (UXDivers Library)
- Form Popup (UXDivers Library)
Fixes
- Fixed issues related to the new
SafeAreaEdgesapproach in theParallaxViewcontrol. - Fixed issues related to the new
SafeAreaEdgesapproach in theDrawercontrol. - Fixed issues related to the new
GrialNavigationPageHandlerimplementation in theParallaxViewcontrol. - Fixed a crash in
VideoPlayeron iOS when the local view resource wasn’t found. - Fixed an RTL issue in
Repeaterthat caused a large blank space at the end. - Fixed an issue in
Repeateron iOS that allowed scrolling in both directions regardless of theOrientationvalue. - Fixed an issue with
Repeaterand theScrollPaddingproperty on .NET 10. - Fixed a crash in
BackgroundGradienton Android. - Fixed a crash in
EditorHandleron Android (.NET 10). - Fixed a crash in
EntryHandleron Android (.NET 10). - Fixed an issue with the
OrientationLockfeature that could cause a crash in some navigation scenarios.
Known Issues
- The YouTube
VideoPlayershows an error on iOS before loading the full YouTube website inside the control.
Version 4.3.120.0
May 7, 2025
This release adds support to .NET 9 and Right to Left languages! along with many control fixes and features listed bellow.
Breaking Changes
.NET 7 As we are now working .NET 9, we are moving one version forward, that means we are still supporting .NET 8 but .NET 7 is not supported anymore.
Dependency Services
Grial stopped supporting service access through the old DependencyService.Get<T>() method. To access Grial's Services such as ICultureServices or INavigationBarInfoService, you will now have to use MAUI's DI architecture. You can also use this helper method ServiceHelper.Get<...>(), which gives you access to the services registered in MAUI's container.
Navigation Page Setup On Android
We improved GrialNavigationBar performance on Android. However, to make this improvements we had to change the initial setup of the Grial solution. The new solutions downloaded from the Grial Web Admin will already include this new setup. To upgrade an existing Grial App to this version, please follow these instructions.
Local Handlers
Previous versions of Grial included two custom handlers: LabelHandler.cs and ScrollViewHandler.cs. These files were temporary workarounds for specific .NET MAUI issues. As of .NET 9, these workarounds are no longer necessary. Keeping these files in your solution may lead to unexpected behavior or compatibility problems. We strongly recommend removing them both from your project.
New Features
OrientationLock Service
The OrientationLock service was very popular in the days of Xamarin.Forms, and now, it has been finally migrated to MAUI! This means that you can force a specific orientation from C# code. A typical scenario for this is forcing the landscape orientation when the video player goes full screen.
Fixes
Fixed an issue on Drawer control that threw a null exception when it's scrolled on Android.
Fixed an issue related with the Repeater control where it scrolls on both directions on iOS.
Fixed an issue when the elements in a SwipeableLayout were swiped very fast on Android.
Fixed an issue with the NavigationBar on Android related with it's Shadow. In some cases it wasn't displayed.
Fixed Gradients. They now work with MAUI buttons.
Fixed an issue related to the Grial Map control.
Improved controls performance in .NET 9.
How to update from an existing solution?
- Update the
UXDivers.GrialMauinuget package to4.3.120and theUXDivers.GrialMaui.Mapsto4.2.116(if needed). - If you are using .net 9 the maui packages version must be higher than
9.0.30 - Delete the
LabelHandler.csfile if you have it in your solution and delete its initialization in theMauiProgram.csfile. - Do the same for the
ScrollViewHandler.csfile, if you have it in your solution delete it and delete its initialization in theMauiProgram.csfile. - Add the
navigationlayout.axmlfile in the pathPlatforms/Android/Resources/Layout/navigationlayout.axmlto be able to use the features of theGrialNavigationBaron Android. You can get this file downloading a new solution from the Grial Web Admin or you can create it yourself with the following content:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/navigation_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/navigationlayout_appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="4dp"
android:background="@android:color/transparent"
android:fitsSystemWindows="false">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/navigationlayout_toptabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/navigationlayout_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/navigationlayout_bottomtabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Version 4.2.117.0
September 12, 2024
This release adds support for the DataGrid control for .NET MAUI. Also, it is shipped with three new pages showcasing the DataGrid. Two new pages to play as starter pages for the app and finally the TaskFlow which includes tons of upgrades like the grial charts for MAUI, you can read more here.
New Features
DataGrid Control The DataGrid comes packed with features like row selection, alternating row colors, horizontal scrolling, and sorting. It also supports customizable header templates and is flexible enough to let you define custom templates with complex controls right inside the cells.
New Content
TaskFlow pages include: a main dashboard performance, an employee performance page and a employee profile page.
DataGrid pages include: a media ranking page, a social ranking page and a shipping detail page.
Lastly, there're two new pages in the onboarding category: StartPage and StarVariantPage.
Fixes
Fixed IconButton, RoundedIconButtonWithBadge and IconTextButton, now the command parameter works as expected.
Fixed cards on FoodPlacesMapPage.
Fixed visual glitch on Slider control, in some pages it didn’t display.
Updated to the latest version .NET MAUI version (8.0.82).
Fixed popups’ background, now they display correctly.
Fixed some shadows in popups on iOS.
Fixed FeaturedMoviePage, now it shows the close button correctly.
Version 4.2.116.0
July 9, 2024
In this release we are introducing the Grial Calendar control along with 3 beautiful pages that showcase it. We are also introducing the Stepper control with 3 common use cases and a new Survey page. You can read more here.
New Features
Calendar Control The Grial Calendar is designed to provide a beautiful and intuitive way to pick dates and date ranges. Whether you're scheduling appointments, booking events, or simply selecting dates, our new Calendar control has got you covered. It’s fully customizable and can be styled and configured in numerous ways. Read more here.
Stepper Control The Grial Stepper allows you to visually represent the different stages of a process, ensuring your users are always informed about what has happened and what is coming next. It's perfect for delivery apps, registration processes, multi-step configurations, onboarding experiences, and tracking users' learning progress. Read more here.
New Content
Stepper samples include: a 3-step app configuration, a 3-step form and a 4-step shipping page.
Calendar pages include: a booking reservation page, a schedule page and a control-specific showcase page.
Lastly, there's a new Survey.
Fixes
New property DontStopOtherMultimedia on Video Player to prevent other stopping other media on the device.
Fixed AutoPlay on iOS Video Player.
Version 4.2.115.0
May 31, 2024
This release adds a Flow, 6 single pages and 3 new controls: SwipeableLayout, CircularSlider and ProgressBar. You can read more here.
New Features
SwipeableLayout Control
This control is ideal for showcasing a few items in an engaging loop with smooth animations or for implementing simple binary choice interfaces (like yes/no, true/false). Read more here.
CircularSlider Control
This slider, drawn as a circle or a circle segment, is perfect for resembling a physical volume knob or providing a more engaging user experience than a regular slider. Read more here.
ProgressBar Control
A customizable progress bar with a consistent appearance across platforms. Read more here.
New Content
Brand new Quiz Flow. This Flow is a fast-paced, engaging game that makes answering questions fun with our SwipeableLayout.
5 setting pages offering various options for user configuration.applications.
DashboardSwipeableHeaderPage features a swipeable header with a list below, providing a two-level information hierarchy for dashboards.
A new default style for Grial's Slider, ensuring seamless integration with Grial themes.
Fixes
Fixed slider shadows glitch on android.
Fixed overlay color on smart home flow popups.
Fixed visual issues on Dashboard Carousel Page.
Improved slider touch interactions.
Fixed issue on navigation bar related with modal navigation on Android.
Improved rating touch interactions.
Version 4.2.114.0
April 30, 2024
This release adds a Flow, 4 single pages and 2 new controls: Carousel and DataPresenter. You can read more here.
New Features
New Carousel control. It provides lots of properties to control its looks, its behavior, and its animations. Read more here.
The DataPresenter enables rendering a DataTemplate anywhere, and also, supports the definition le dynamic rules for the template selection adding great flexibility on heavy data-oriented applications. Read more here.
Fluent Emoji support in our Emoji control.
New ReferenceValueFormatter and ReferenceCount properties to control how the reference axis is displayed.
New resource dictionary with predefined XAML Pulse and Vibrate animations, available for use anywhere.
New Content
Brand new Wizard Flow. This Flow focuses on the process of gathering users' information.
4 new pricing pages to provide more alternatives when it comes to display different plans to end users.
Fixes
Fixed crash on Android Entries with latest .NET MAUI versions.
Fixed PinClickedCommand in GrialMap and Pin redraw after collection changes.
Fixed TabItem command disabling.