Skip to content

Latest commit

 

History

History
56 lines (36 loc) · 8.54 KB

README.md

File metadata and controls

56 lines (36 loc) · 8.54 KB

Banner

Nalu GitHub Actions Status

Nalu.Maui is a set of libraries built to make .NET MAUI development faster, smoother and more enjoyable — polished navigation, a fully drawn application shell, high-performance lists and layout primitives that remove entire categories of boilerplate.

For comprehensive documentation, guides, API references, and samples, please visit our dedicated documentation website:

➡️ Nalu.Maui Documentation Website ⬅️

If Nalu.Maui is valuable to your work, consider sponsoring the author on GitHub ❤️

Sponsor

The Scaffold — your whole app shell, drawn by Nalu Nalu.Maui.Scaffold NuGet Package Nalu.Maui NuGet Package Downloads

Scaffold showcase: shared-element transitions flying between pages, a per-page drawer, a bottom sheet hosting the duration wheel, scroll-driven chrome and the floating tab bar

Shared elements flying between pages · per-page drawers · bottom sheets · scroll-materializing nav bar · floating tab bar with overflow — all from one sample app.

A complete replacement for MAUI Shell on iOS and Android where every piece of chrome is a MAUI view you can restyle or replace: tab bar (with overflow), nav bar, edge drawers, popups & bottom sheets, modal presentation, page transitions with shared elements, iOS edge-swipe and Android predictive back (both scrubbing the same seekable choreography), scroll-driven chrome and system-bar styling that follows your UI.

Because the Scaffold hosts Nalu navigation, every interaction — tab tap, back gesture, flyout selection — routes through the engine: guards, lifecycle and intents always run, and state restoration lands your users exactly where they left off after a restart.

  • 📦 Available on NuGet.org: dotnet add package Nalu.Maui.Scaffold. Nalu.Maui.Navigation keeps working with MAUI Shell exactly as before: the Scaffold is an additional host, not a breaking change.
  • 🚀 New app? Start from the template: dotnet new install Nalu.Maui.Templates, then dotnet new maui-nalu-scaffold -n MyApp — tab bar, model-first navigation, a shared-element transition and predictive back already wired — plus agent skills (.claude/skills, AGENTS.md) so AI coding assistants know the Nalu APIs.
  • 📖 Docs: Overview · Structure & Tab Bar · Nav Bar · Flyouts · Popups & Sheets · Transitions · Migrating from NaluShell

See it in motion

VirtualScroll flinging through hundreds of rows, the Layouts insights card sliding and toggling templates, and day rows expanding inline

Left to right: VirtualScroll flinging through a week of hourly rows and jumping back with an animated ScrollTo · SlideBox sliding between insight panels while a ToggleTemplate flips to "All caught up" as the last task completes · ExpanderViewBox rows expanding inline with smoothly animated height.

Key Modules

  • Navigation Nalu.Maui.Navigation NuGet Package Nalu.Maui NuGet Package Downloads
    • A fluent, type-safe MVVM navigation service supporting relative/absolute navigation, guards, typed intents and a built-in leak detector. Page registration is source-generated (AddPages() — trim/AOT-safe, no reflection), and opt-in navigation state restoration reopens the app exactly where it was. Works with MAUI Shell, NaluShell, and the Scaffold. MVVM is optional: plain view-only pages and MVU component pages ride the same engine — MauiReactor, Comet or BlazorBindings.Maui plug in through the public IComponentPageFactory extension point (a small copy-paste bridge; the MauiReactor one is in the docs).
  • VirtualScroll Nalu.Maui.VirtualScroll NuGet Package Nalu.Maui NuGet Package Downloads
    • A fast alternative to the .NET MAUI CollectionView, built directly on native RecyclerView (Android) and UICollectionView (iOS) with a Java-side hot path that keeps per-frame work off the managed heap — fling through thousands of dynamically-sized rows without a stutter. Sections with headers, horizontal layout, carousel mode, pull-to-refresh, animated ScrollTo, and long-press drag reorder are all built in.
    • ⚖️ Dual Licensed:
      • Non-Commercial: Free under the Apache 2.0-Based Non-Commercial License (personal, educational, or non-commercial open-source use).
      • Commercial: Requires an active GitHub Sponsors subscription for usage rights only; no services are included.
    • By installing this package, you agree to the terms in the LICENSE.md. Commercial use includes for-profit entities, internal tools, and contract work.
  • Layouts Nalu.Maui.Layouts NuGet Package Nalu.Maui NuGet Package Downloads
    • The XAML you wish was built in: ToggleTemplate swaps content on a boolean, TemplateBox renders any DataTemplate in place, SlideBox pages between lazily-created, state-retaining slides, ExpanderViewBox animates expand/collapse with real measured sizes, ViewBox is a lightweight clipping ContentView replacement, and Magnet brings a full constraint-based layout system.

      ExpanderViewBox: the XAML on the left, the animated growing container on the right

  • Controls Nalu.Maui.Controls NuGet Package Nalu.Maui NuGet Package Downloads
    • Cross-platform controls with personality: DurationWheel (the rotary TimeSpan? editor shown inside the bottom sheet above) and InteractableCanvasView (a SKCanvasView with enhanced touch support).
  • Core Nalu.Maui.Core NuGet Package Nalu.Maui NuGet Package Downloads
    • Common utilities, including NSUrlBackgroundSessionHttpMessageHandler for robust background HTTP requests on iOS and a soft-keyboard manager.

Every animation on this page comes from Daily Helper (Samples/Nalu.Maui.DailyHelper), the complete sample app in this repository — clone it and run it to feel everything first-hand.

We encourage you to explore the full documentation for detailed information on how to integrate and utilize these features in your projects.