From 37418249634f6babb7d9e918186bb935cdcbc1a6 Mon Sep 17 00:00:00 2001 From: Matt Brophy Date: Thu, 9 Mar 2023 16:46:13 -0500 Subject: [PATCH 1/7] Remove _isFetchActionRedirect (Remix back-compat) --- packages/router/router.ts | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/packages/router/router.ts b/packages/router/router.ts index 86e5d94c4e..94cc4befa4 100644 --- a/packages/router/router.ts +++ b/packages/router/router.ts @@ -1787,7 +1787,6 @@ export function createRouter(init: RouterInit): Router { return startRedirectNavigation(state, actionResult, { submission, - isFetchActionRedirect: true, }); } } @@ -2087,26 +2086,18 @@ export function createRouter(init: RouterInit): Router { { submission, replace, - isFetchActionRedirect, }: { submission?: Submission; replace?: boolean; - isFetchActionRedirect?: boolean; } = {} ) { if (redirect.revalidate) { isRevalidationRequired = true; } - let redirectLocation = createLocation( - state.location, - redirect.location, - // TODO: This can be removed once we get rid of useTransition in Remix v2 - { - _isRedirect: true, - ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}), - } - ); + let redirectLocation = createLocation(state.location, redirect.location, { + _isRedirect: true, + }); invariant( redirectLocation, "Expected a location on the redirect navigation" From dcba364fcf2b90636220adf566bb13b3cc5c3182 Mon Sep 17 00:00:00 2001 From: Matt Brophy Date: Fri, 17 Mar 2023 13:57:10 -0400 Subject: [PATCH 2/7] Change approach for removing isFetchActionRedirect --- packages/router/router.ts | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/packages/router/router.ts b/packages/router/router.ts index 94cc4befa4..89cebbc10e 100644 --- a/packages/router/router.ts +++ b/packages/router/router.ts @@ -1786,7 +1786,7 @@ export function createRouter(init: RouterInit): Router { updateState({ fetchers: new Map(state.fetchers) }); return startRedirectNavigation(state, actionResult, { - submission, + fetcherSubmission: submission, }); } } @@ -2085,9 +2085,11 @@ export function createRouter(init: RouterInit): Router { redirect: RedirectResult, { submission, + fetcherSubmission, replace, }: { submission?: Submission; + fetcherSubmission?: Submission; replace?: boolean; } = {} ) { @@ -2137,12 +2139,21 @@ export function createRouter(init: RouterInit): Router { // Use the incoming submission if provided, fallback on the active one in // state.navigation - let activeSubmission = - submission || getSubmissionFromNavigation(state.navigation); + let { formMethod, formAction, formEncType } = state.navigation; + if ( + !submission && + !fetcherSubmission && + formMethod && + formAction && + formEncType + ) { + submission = getSubmissionFromNavigation(state.navigation); + } // If this was a 307/308 submission we want to preserve the HTTP method and // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the // redirected location + let activeSubmission = submission || fetcherSubmission; if ( redirectPreserveMethodStatusCodes.has(redirect.status) && activeSubmission && @@ -2156,23 +2167,17 @@ export function createRouter(init: RouterInit): Router { // Preserve this flag across redirects preventScrollReset: pendingPreventScrollReset, }); - } else if (isFetchActionRedirect) { - // For a fetch action redirect, we kick off a new loading navigation - // without the fetcher submission, but we send it along for shouldRevalidate - await startNavigation(redirectHistoryAction, redirectLocation, { - overrideNavigation: getLoadingNavigation(redirectLocation), - fetcherSubmission: activeSubmission, - // Preserve this flag across redirects - preventScrollReset: pendingPreventScrollReset, - }); } else { - // If we have a submission, we will preserve it through the redirect navigation + // If we have a navigation submission, we will preserve it through the + // redirect navigation let overrideNavigation = getLoadingNavigation( redirectLocation, - activeSubmission + submission ); await startNavigation(redirectHistoryAction, redirectLocation, { overrideNavigation, + // Send fetcher submissions through for shouldRevalidate + fetcherSubmission, // Preserve this flag across redirects preventScrollReset: pendingPreventScrollReset, }); From cfd3ec155627cab18d4c2c38e2c6a2149c52da91 Mon Sep 17 00:00:00 2001 From: Matt Brophy Date: Thu, 9 Mar 2023 16:46:26 -0500 Subject: [PATCH 3/7] Remove _hasFetcherDoneAnything (Remix back-compat) --- packages/router/__tests__/router-test.ts | 3 --- packages/router/router.ts | 7 ------- 2 files changed, 10 deletions(-) diff --git a/packages/router/__tests__/router-test.ts b/packages/router/__tests__/router-test.ts index 11a121095f..8b05062659 100644 --- a/packages/router/__tests__/router-test.ts +++ b/packages/router/__tests__/router-test.ts @@ -8871,7 +8871,6 @@ describe("a router", () => { formEncType: undefined, formData: undefined, data: undefined, - " _hasFetcherDoneAnything ": true, }); await dfd.resolve("DATA"); @@ -8881,7 +8880,6 @@ describe("a router", () => { formEncType: undefined, formData: undefined, data: "DATA", - " _hasFetcherDoneAnything ": true, }); expect(router._internalFetchControllers.size).toBe(0); @@ -9410,7 +9408,6 @@ describe("a router", () => { formAction: undefined, formEncType: undefined, formData: undefined, - " _hasFetcherDoneAnything ": true, }); expect(t.router.state.historyAction).toBe("PUSH"); expect(t.router.state.location.pathname).toBe("/bar"); diff --git a/packages/router/router.ts b/packages/router/router.ts index 89cebbc10e..488ccc2b2b 100644 --- a/packages/router/router.ts +++ b/packages/router/router.ts @@ -526,7 +526,6 @@ type FetcherStates = { formData: undefined; json: undefined; data: TData | undefined; - " _hasFetcherDoneAnything "?: boolean; }; Loading: { state: "loading"; @@ -537,7 +536,6 @@ type FetcherStates = { formData: Submission["formData"] | undefined; json: Submission["json"] | undefined; data: TData | undefined; - " _hasFetcherDoneAnything "?: boolean; }; Submitting: { state: "submitting"; @@ -548,7 +546,6 @@ type FetcherStates = { formData: Submission["formData"]; json: Submission["json"]; data: TData | undefined; - " _hasFetcherDoneAnything "?: boolean; }; }; @@ -4471,7 +4468,6 @@ function getLoadingFetcher( json: submission.json, text: submission.text, data, - " _hasFetcherDoneAnything ": true, }; return fetcher; } else { @@ -4484,7 +4480,6 @@ function getLoadingFetcher( json: undefined, text: undefined, data, - " _hasFetcherDoneAnything ": true, }; return fetcher; } @@ -4503,7 +4498,6 @@ function getSubmittingFetcher( json: submission.json, text: submission.text, data: existingFetcher ? existingFetcher.data : undefined, - " _hasFetcherDoneAnything ": true, }; return fetcher; } @@ -4518,7 +4512,6 @@ function getDoneFetcher(data: Fetcher["data"]): FetcherStates["Idle"] { json: undefined, text: undefined, data, - " _hasFetcherDoneAnything ": true, }; return fetcher; } From 60420f05c4ca1e73274af143b83cd408665fc4f7 Mon Sep 17 00:00:00 2001 From: Matt Brophy Date: Tue, 7 Mar 2023 15:56:25 -0500 Subject: [PATCH 4/7] Drop bundle --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 386a06881c..7bab5217cd 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ }, "filesize": { "packages/router/dist/router.umd.min.js": { - "none": "47.5 kB" + "none": "47.1 kB" }, "packages/react-router/dist/react-router.production.min.js": { "none": "13.9 kB" From 7b1bbb00be3b7bd33dc8265e13b454c2609b527e Mon Sep 17 00:00:00 2001 From: Matt Brophy Date: Thu, 16 Mar 2023 10:32:57 -0400 Subject: [PATCH 5/7] Add changeset --- .changeset/remix-v2-prep.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/remix-v2-prep.md diff --git a/.changeset/remix-v2-prep.md b/.changeset/remix-v2-prep.md new file mode 100644 index 0000000000..ae2d111a54 --- /dev/null +++ b/.changeset/remix-v2-prep.md @@ -0,0 +1,5 @@ +--- +"@remix-run/router": patch +--- + +Removed internal API only required for the Remix v1 back-compat layer and no longer needed in Remix v2. (`_isFetchActionRedirect`, `_hasFetcherDoneAnything`). From 8e9470833b8e1d2c657c151bb6751514c9e5cc55 Mon Sep 17 00:00:00 2001 From: Matt Brophy Date: Mon, 28 Aug 2023 16:06:03 -0400 Subject: [PATCH 6/7] Bundle bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7bab5217cd..b82d2eecdb 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ }, "filesize": { "packages/router/dist/router.umd.min.js": { - "none": "47.1 kB" + "none": "47.2 kB" }, "packages/react-router/dist/react-router.production.min.js": { "none": "13.9 kB" From 4a8877eeb434b1783a7db86d2f57f302e2ae3edc Mon Sep 17 00:00:00 2001 From: Matt Brophy Date: Mon, 28 Aug 2023 16:11:57 -0400 Subject: [PATCH 7/7] Change to minor changeset --- .changeset/remix-v2-prep.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/remix-v2-prep.md b/.changeset/remix-v2-prep.md index ae2d111a54..de557ff490 100644 --- a/.changeset/remix-v2-prep.md +++ b/.changeset/remix-v2-prep.md @@ -1,5 +1,5 @@ --- -"@remix-run/router": patch +"@remix-run/router": minor --- Removed internal API only required for the Remix v1 back-compat layer and no longer needed in Remix v2. (`_isFetchActionRedirect`, `_hasFetcherDoneAnything`).