diff --git a/.changeset/clever-pumas-arrive.md b/.changeset/clever-pumas-arrive.md new file mode 100644 index 0000000000..06fcbf24af --- /dev/null +++ b/.changeset/clever-pumas-arrive.md @@ -0,0 +1,5 @@ +--- +"@remix-run/router": patch +--- + +Support `unstable_dataStrategy` on `staticHandler.queryRoute` diff --git a/packages/router/__tests__/ssr-test.ts b/packages/router/__tests__/ssr-test.ts index 7795c08f70..df7c1882b5 100644 --- a/packages/router/__tests__/ssr-test.ts +++ b/packages/router/__tests__/ssr-test.ts @@ -2628,5 +2628,18 @@ describe("ssr", () => { /* eslint-enable jest/no-conditional-expect */ }); + + describe("router dataStrategy", () => { + it("should apply a custom data strategy", async () => { + let { queryRoute } = createStaticHandler(SSR_ROUTES); + let data; + + data = await queryRoute(createRequest("/custom"), { + unstable_dataStrategy: urlDataStrategy, + }); + expect(data).toBeInstanceOf(URLSearchParams); + expect((data as URLSearchParams).get("foo")).toBe("bar"); + }); + }); }); }); diff --git a/packages/router/router.ts b/packages/router/router.ts index 7a7d2c0a61..b72cb70091 100644 --- a/packages/router/router.ts +++ b/packages/router/router.ts @@ -412,7 +412,11 @@ export interface StaticHandler { ): Promise; queryRoute( request: Request, - opts?: { routeId?: string; requestContext?: unknown } + opts?: { + routeId?: string; + requestContext?: unknown; + unstable_dataStrategy?: DataStrategyFunction; + } ): Promise; } @@ -3099,7 +3103,12 @@ export function createStaticHandler( { routeId, requestContext, - }: { requestContext?: unknown; routeId?: string } = {} + unstable_dataStrategy, + }: { + requestContext?: unknown; + routeId?: string; + unstable_dataStrategy?: DataStrategyFunction; + } = {} ): Promise { let url = new URL(request.url); let method = request.method; @@ -3132,7 +3141,7 @@ export function createStaticHandler( location, matches, requestContext, - null, + unstable_dataStrategy || null, false, match );