maui icon indicating copy to clipboard operation
maui copied to clipboard

iOS NavigationHandler

Open PureWeen opened this issue 1 month ago • 0 comments

Unified iOS NavigationHandler

Target: .NET 10


Goal

Create a NavigationHandler for iOS in Core that both Shell and NavigationPage use. This aligns iOS with WinUI (already unified) and Android (planned for .NET 11).


Background

  • WinUI already has a shared NavigationHandler used by both Shell and NavigationPage
  • Android Shell Handler spec targets .NET 11 with the same unification goal
  • iOS currently has separate implementations: NavigationRenderer for NavigationPage, Shell-specific renderers for Shell navigation
  • We can learn from both existing iOS implementations to build the right unified handler

Rollout Strategy

  1. Build the unified NavigationHandler for .NET 10

  2. Gate behind AppContext switch - Wire both Shell and NavigationPage to use the new handler when the switch is enabled

  3. Switch disabled by default initially - Allows testing and validation without affecting existing apps

  4. Enable for Shell and NavigationPage - Once validated, flip the switch to make it the default path

This approach lets us ship the work in .NET 10 while controlling the rollout and having a fallback if issues arise.


Guidelines

  1. Create NavigationHandler in Core - Single handler for iOS navigation stack management

  2. Learn from both implementations - Take the best patterns from NavigationRenderer and Shell iOS navigation

  3. Shell and NavigationPage both use it - Same handler, different consumers

  4. Keep handler internal initially - Flexibility to iterate without public API commitment

  5. Align with WinUI patterns - Use WinUI's unified approach as the reference model


Success Criteria

  • NavigationPage uses the new handler (when switch enabled)
  • Shell uses the same handler (when switch enabled)
  • All existing tests pass with switch enabled
  • Consistent navigation behavior between Shell and NavigationPage

PureWeen avatar Dec 09 '25 22:12 PureWeen