Skip to content

[iOS 26] Navigation hangs after rapidly open and closing new page using Navigation.PushAsync #32425

@JP-Minderhoud

Description

@JP-Minderhoud

Description

Rapidly opening and closing a page that is opened with Navigation.PushAsync(new NewPage1()); results in a blank (white) screen.

iOS:

As far as we can tell this only occurs when the app is build with Xcode 26 and running on iOS 26.

on iOS 18.6 on iOS 26.0
Xcode 16.4 build cannot reproduce cannot reproduce
Xcode 26.0 build cannot reproduce effected

We could reproduce on both simulator and physical devices, both in our app and an app created using steps shown below.

Android:

We were not able to reproduce

  • on Android physical devices using or app.
  • on Android simulator using repro steps below

On simulator running our app I had one occurrence of a System.Exception: 'Nav Stack consistency error while trying to reproduce, but was not able to get the error again, so Android might also have an issue here but far harder to reproduce.

Affected MAUI versions (at least):

9.0.110
9.0.120

Screencast of issue on iOS simulator:

Image

"Workaround":

Not really a workaround but using await Shell.Current.GoToAsync instead of the Naviation.PushAsync does not show same behaviour.
Unfortunately for us that's not an option right now as it would mean a lot of work.

Steps to Reproduce

Option one:

  1. Create new MAUI .NET 9 project in Visual Studio
  2. Update MAUI to latest (9.0.120 at time of writing)
  3. Add a simple NewPage1 XAML content page to root.
  4. Add new Button to top of MainPage.xaml
    <Button Text="Go to New Page 1"
         Margin="0,20"
         Clicked="OnNavigateToNewPage1Clicked"
         HorizontalOptions="Fill" />
  5. Add handler to MainPage.xaml.cs
    private async void OnNavigateToNewPage1Clicked(object sender, EventArgs e)
    {
         await Navigation.PushAsync(new NewPage1());
    }
  6. Run project on an iOS 26 simulator
  7. When app shown rapidly do:
    • click 'Go to New Page 1' button
    • click 'Back button' in header
    • and repeat

Option two:

  1. Steps 1,2 and 3 from above
  2. Include CommunityToolkit.MVVM
  3. Add a public ICommand OpenNewPage1Command { get; } to MainPage.xaml.cs
  4. Set handler OpenNewPage1Command = new AsyncRelayCommand(OnOpenNewPage1CommandHandler);
  5. Add
    private async Task OnOpenNewPage1CommandHandler()
    {
       await Navigation.PushAsync(new NewPage1());
    }
  6. Add new Button to top of MainPage.xaml
    <Button Text="Go to New Page 1"
         Margin="0,20"
         Command="{Binding OpenNewPage1Command, Source={Reference this}}"
         HorizontalOptions="Fill" />
  7. Steps 6 and 7 from above

Link to public reproduction project repository

No response

Version with bug

9.0.110 SR12

Is this a regression from previous behavior?

No, this is something new

Last version that worked well

No response

Affected platforms

iOS

Affected platform versions

iOS 26

Did you find any workaround?

Not really a workaround but using await Shell.Current.GoToAsync instead of the Naviation.PushAsync does not show same behaviour.

Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-navigationNavigationPagep/0Current heighest priority issues that we are targeting for a release.platform/ioss/triagedIssue has been revieweds/verifiedVerified / Reproducible Issue ready for Engineering Triaget/bugSomething isn't workingversion/iOS-26

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions