Grial UI Kit - .NET 10, New Popups & Navigation Overhaul (2026.1 Update)

Post by
Grial Team
March 20, 2026
Grial UI Kit -  .NET 10, New Popups & Navigation Overhaul (2026.1 Update)

Every release of Grial is an opportunity to push mobile UI development forward,  and this one is no exception. Version 4.4.127 brings .NET 10 support, a fully reworked navigation system, brand-new popup templates, toolbar badges, and meaningful improvements to the Repeater control. Whether you are building a new app or maintaining an existing one, there is something here for you.

Let's break it down.

.NET 10 Support and retiring to .NET 8

Starting with this release, Grial supports .NET 9 and .NET 10. .NET 8 support has been officially retired.

This isn't just about chasing the latest framework, .NET 10 brings real improvements to MAUI's rendering pipeline, startup performance, and platform APIs that we wanted to take full advantage of. Staying on older target frameworks was holding back optimizations we've been eager to ship.

What this means for you: if your project still targets net8.0, you'll need to update your target framework before upgrading to Grial 4.4.127. You can check the changes on the microsoft docs here. On the grial side you can check the release notes in the official documentation here, there you have the breaking changes and what must be done to migrate to the new version.

Grial Navigation. Rebuilt from the ground up

The navigation bar is one of those things you interact with on every single screen but rarely think about, until it doesn't behave the way you expect. In this release, we've fully reworked the GrialNavigationPageHandler for improved performance and flexibility.

What changed

  • The navigationlayout.axml Android layout file is no longer necessary,  you can safely remove it from your project. The handler now manages its own rendering internally.
  • MAUI's built-in NavigationPage.HasNavigation and NavigationPage.TitleView properties are no longer supported. Use Grial's own equivalents (GrialNavigationPage attached properties) instead, which offer far more control.
  • The navigation bar is now hidden by default, giving you a clean canvas. Use INavigationBarInfoService when you need to account for the navbar height in your layouts.
  • ForceShadow and HideShadow are deprecated,  use the new ShadowType property instead, which provides cleaner, more explicit control over navigation bar shadows.

Why it matters

These changes eliminate several platform inconsistencies we've been tracking, especially around Android status bar rendering and iOS safe area calculation. The result is a more predictable, more performant navigation experience across both platforms.

Migration note: If you're upgrading from a previous version, make sure to remove the navigationlayout.axml file and replace any usage of ForceShadow/HideShadow with the new ShadowType property. Check the full migration guide for details.

Mopups is out, our own engine is in

This is a big one. We've completely removed the Mopups dependency and replaced it with UXDivers Popups, our own popup framework built specifically for .NET MAUI.

Why did we build our own? Mopups served us well, but as MAUI evolved, we needed tighter integration with our theming system, better animation control, and more predictable behavior across platforms. UXDivers Popups gives us all of that, plus the ability to ship ready-made popup templates that follow the Grial design system out of the box.

Four new Popup templates

Along with the engine swap, we're shipping four new popup templates ready to drop into your app:

  • Clipboard Link Popup — Perfect for share flows or "link copied" confirmations. Shows a URL or text snippet with a one-tap copy action.
  • Single Entry Form Popup — A focused, single-field input dialog. Great for quick rename actions, adding notes, or any scenario where you need one piece of text from the user without navigating to a full form.
  • Interactive Notification Popup — A rich notification dialog with action buttons. Use it for confirmation prompts, alerts with context, or any situation where a simple OK/Cancel isn't enough.
  • Options List Popup — A scrollable list of selectable options presented in a popup. Ideal for filter selection, sort-by menus, or any picker-style interaction that shouldn't take over the whole screen.

All four are fully themed, they respect your current Grial theme and adapt to light/dark mode automatically. They're also included in the Grial Templates project, so you can see them in action and customize them to fit your needs.

Breaking change: If your project was using Mopups directly, you'll need to migrate to UXDivers Popups. The API surface is intentionally similar to make the transition smooth, check out the docs for the API reference.

Toolbar badges. A small feature, a big UX win

Sometimes the smallest additions have the biggest impact on user experience. We've added ToolbarItemBadgeProperties, a set of attached properties that let you add notification badges to any ToolbarItem in your navigation bar.

<ToolbarItem
    IconImageSource="bell.png"
    grial:ToolbarItemBadgeProperties.IsVisible="True"
    grial:ToolbarItemBadgeProperties.Text="3"
    grial:ToolbarItemBadgeProperties.BackgroundColor="{ DynamicResource ErrorColor }"
    grial:ToolbarItemBadgeProperties.TextColor="{ DynamicResource OnSurfaceColor }"
    grial:ToolbarItemBadgeProperties.Position="TopRight"
    grial:ToolbarItemBadgeProperties.BadgeSize="18"
    grial:ToolbarItemBadgeProperties.FontSize="10" />

The full set of available properties includes:

IsVisible - Show or hide the badge
Text
- Badge content (number, text, or empty for dot mode)
BackgroundColor
- Badge background
TextColor
- Text color inside the badge
Position
- Placement relative to the icon
FontSize
- Text size within the badge
BadgeSize
- Overall badge diameter
DotSize
- Size when used as a simple dot indicator
CenterOffset
- Fine tune positioning

No more custom renderers or platform-specific hacks to show a notification count on your toolbar. It just works, on both platforms, with full theme support.

Repeater Control enhancements

The Repeater is one of Grial's most versatile controls, and we've made it even better with three new capabilities:

Measure Strategy property

You can now control how the Repeater measures its items with two options:

  • First (default) — Measures only the first item and assumes all items are the same size. Fast and efficient for uniform lists.
  • All — Measures every item individually. Use this when your items have variable heights and you need pixel-perfect layout.

Buffer Size property

A new property for fine-tuning virtualization behavior. BufferSize controls how many off-screen items the Repeater keeps rendered in its buffer. Increase it for smoother scrolling in heavy lists; decrease it to save memory in constrained scenarios.

Empty View property

Native empty state support, finally. Instead of wrapping your Repeater in a conditional layout or using a DataPresenter, you can now set an EmptyView directly:

<grial:Repeater ItemsSource="{ Binding Items }">
    <grial:Repeater.EmptyView>
        <VerticalStackLayout HorizontalOptions="Center" VerticalOptions="Center">
            <Image Source="empty_state.png" />
            <Label Text="No items found" Style="{ StaticResource SubtitleStyle }" />
        </VerticalStackLayout>
    </grial:Repeater.EmptyView>
    <grial:Repeater.ItemTemplate>
        <!-- your template here -->
    </grial:Repeater.ItemTemplate>
</grial:Repeater>


Clean, declarative, and no extra boilerplate.

Bug fixes & improvements

As always, we've been squashing bugs and smoothing rough edges:

  • ParallaxView & Drawer — SafeAreaEdges issues resolved. Both controls now correctly respect safe area insets on devices with notches and dynamic islands.
  • VideoPlayer — Fixed a crash on iOS when a local video resource wasn't found. It now fails gracefully instead of taking down the app.
  • Repeater RTL — Corrected a blank space issue that appeared in right-to-left layouts.
  • Repeater iOS scrolling — Fixed an issue where the Repeater would allow scrolling in both directions on iOS regardless of the configured Orientation.
  • ScrollPadding — Property now works correctly on .NET 10.
  • BackgroundGradient — Resolved a crash on Android when applying gradient backgrounds.
  • EditorHandler & EntryHandler — Fixed crashes on Android when running on .NET 10.
  • OrientationLock — Resolved a crash that occurred in certain navigation scenarios.

Known issues

  • YouTube videos in the VideoPlayer may briefly show an error on iOS before the full website loads. We're tracking this and working on a fix.

Other breaking changes

A couple more things to watch for when upgrading:

  • Animate.Clicked removed — Following .NET MAUI's removal of ClickGestureRecognizer, we've removed Animate.Clicked. Use Animate.Tapped instead,  it's a drop-in replacement.
  • Repeater enum fix — The Arround value in the spacing enum has been corrected to Around. If you were using the misspelled version, update your XAML.

Get the update

Ready to upgrade? Here's how:

  1. Update your NuGet packages to UXDivers.GrialMaui 4.4.127 and UXDivers.Popups.Maui (replacing any Mopups reference).
  2. Update your target framework to .NET 9 or .NET 10 if you haven't already.
  3. Remove navigationlayout.axml from your Android project.
  4. Review the breaking changes above and update your code accordingly.

You can download the latest packages from the Grial Admin or update directly via NuGet.

For detailed API documentation and migration guides, visit our docs.

That's all for today. As always, we hope this helps .NET MAUI developers add new flavor to their mobile applications.

Happy coding!

Share this
Share this on XShare this on LinkedInShare this via InstagramShare this on WhatsAppShare this on reddit

Join our newsletter and get inspired.

Get news, tips, and resources right on your inbox!
Don’t worry we hate spam too ;)
Join our 4K+ .NET
developers community.
Stay tunned! Get pro design tips and updates.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Don’t worry we hate spam too ;)
Subscribe-Blog-Image
UXDivers logo

© 2015–2025 UXDivers | Grial