Share via

.NET MAUI Navigation Not Working on iOS 26.2 / 26.3

Ranjit Kumar Barick 0 Reputation points
2026-03-04T13:56:24.9666667+00:00

I am currently using .NET MAUI with .NET 8, and the application uses AppShell for navigation.

The app works correctly on iOS version 26.0 and below. However, on iOS versions 26.2 and 26.3, the application hangs after login and does not navigate to the dashboard page.

The navigation is implemented using Shell navigation, and there are no issues on earlier iOS versions. The problem appears only on the newer iOS versions.

Has anyone experienced this issue or found a workaround? Is there any known compatibility issue between .NET 8 MAUI and iOS 26.2+, or would upgrading to a newer .NET version resolve this problem?

Any guidance or recommended solution would be appreciated.

Developer technologies | C#
Developer technologies | C#

An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.

0 comments No comments

1 answer

Sort by: Most helpful
  1. Nancy Vo (WICLOUD CORPORATION) 2,730 Reputation points Microsoft External Staff Moderator
    2026-03-05T07:24:28.2433333+00:00

    Hi @Ranjit Kumar Barick ,

    Thank you for reaching out.

    I recommend some solutions below:

    1. Using delayed Shell navigation, because it ensures that navigation only occurs after the page and Shell are fully loaded. On newer iOS versions, the Shell and page lifecycle events may complete slightly later, and attempting to navigate immediately after login can cause the navigation to hang.

    This is code example:

    await Task.Delay(100); 
    await Shell.Current.GoToAsync("//DashboardPage");
    
    1. Because newer ios version introduced changes to how the platform handles navigation animations and transitions. By setting animate: false, you bypass the animation subsystem that may be causing the freeze.
    await Shell.Current.GoToAsync("//DashboardPage", animate: false);
    
    1. Newer iOS versions enforce stricter thread safety requirements for UI operations. The MainThread.BeginInvokeOnMainThread method ensures that navigation occurs on the main thread, preventing deadlocks or freezes. That's why you should ensure navigation happens on the main thread.
    MainThread.BeginInvokeOnMainThread(async () =>
    {
        await Shell.Current.GoToAsync("//DashboardPage");
    });
    
    
    1. You can also try resetting the navigation stack before navigating:
    await Shell.Current.Navigation.PopToRootAsync();
    await Shell.Current.GoToAsync("//DashboardPage");
    

    This prevents potential navigation stack corruption that can occur in .NET MAUI on iOS when multiple pages are in the navigation hierarchy.

    1. While you're currently on .NET 8, ensure you have the latest service release with all patches: dotnet workload update.

    Hope this helps. If you found my response helpful or informative, I would greatly appreciate it if you could follow this guidance provide feedback. Thank you.

    1 person found this answer helpful.

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.