New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add replace option to loader redirect function #11100
base: dev
Are you sure you want to change the base?
Conversation
🦋 Changeset detectedLatest commit: ca48463 The changes in this PR will be included in the next version bump. This PR includes changesets to release 5 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Hi @Brendonovich, Welcome, and thank you for contributing to React Router! Before we consider your pull request, we ask that you sign our Contributor License Agreement (CLA). We require this only once. You may review the CLA and sign it by adding your name to contributors.yml. Once the CLA is signed, the If you have already signed the CLA and received this response in error, or if you have any questions, please contact us at hello@remix.run. Thanks! - The Remix team |
Thank you for signing the Contributor License Agreement. Let's get this merged! 🥳 |
Any updates here, guys? @Brendonovich |
@Londeren if it was up to me this would have been merged last year haha |
@brookslybrand Any chance you could give this some more visibility within the Remix team to push this over the finish line? This seem to trip up a bunch of people as you can see in #10606 |
Would be amazing to get this merged 🙏 |
This PR adds the ability to
REPLACE
the current history entry rather than always usingPOP
when redirecting in route loaders.This is useful for how we manage navigation in Spacedrive:
MemoryRouter
instance and history stackindex
routes contain loaders for going from/
to/{libraryId}
to/{libraryId}/{defaultSegment}
, wherelibraryId
is loaded asynchronously anddefaultSegment
is determined based on the result of another asynchronous operationSuspense
to show the current tab until the new tab's redirects are complete, since loaders + their redirects all run in a single transitionindex
routes shouldn't append to the history stack, so that/{libraryId}/{defaultSegment}
is the 0th history entry/{libraryId}
, so one loader run + one redirect is guaranteed to happenPUSH
, not aREPLACE
Allowing loader redirects to
REPLACE
rather thanPUSH
easily fixes our navigation button problem