SIGN IN SIGN UP

A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.

0 0 114 TypeScript

feat(react-router): upgrade to react router 6 (#30831)

Issue number: resolves #24177

---------

<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

## What is the current behavior?
Currently, Ionic Framework React Router only supports React Router 5.
This has many issues and unsupported/broken features.

## What is the new behavior?
With this change, Ionic Framework will support React Router 6 while
still supporting transitions in the same way a native app does.

Most of what caused this change to take a long time is that React Router
5 and React Router 6 have fundamental differences in how they handle
components once they're no longer part of the view. In this change, we
move away from relying on React Router directly so much and have our own
implementation for deciding how views get dealt with during navigation
and when they're cleaned up, allowing for us to still transition between
them like we need to while still using React Router as much as we
possibly can.

This change will also lay the foundation for the migration to React
Router 7, which will ideally be easier since most of the hard work has
been dealt with here.

## Does this introduce a breaking change?

- [X] Yes
- [ ] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->

Current dev build (last updated 2026-04-27):

> **โš ๏ธ WARNING:** If you're going to use this dev build on an existing
react project, you'll need to migrate to React Router 6. Migrating a
large project at this point might be a bad idea since this will not
release until v9, which will require further migrations and have other
breaking changes! I have a preview of migration documentation for this
[here](https://ionic-docs-git-v9-react-router-ionic1.vercel.app/docs/updating/9-0#react-router).

```
8.8.4-dev.11777318673.18d001f6
```

The dev build linked above will be the last one for this branch alone.
Everything going forward will be the major-9.0 branch, which may include
large breaking changes.

---------

Co-authored-by: Maria Hutt <thetaPC@users.noreply.github.com>
Co-authored-by: Sean Perkins <13732623+sean-perkins@users.noreply.github.com>
S
Shane committed
150ba3a09c59971b84391dc1371dc8427fb9e821
Parent: 346048b
Committed by GitHub <noreply@github.com> on 4/27/2026, 7:51:53 PM