Major Changes
-
Introduce React Router middleware support with
clerkMiddleware()
for improved performance and streaming capabilities. (#6660) by @wobsorianoUsage of
rootAuthLoader
without theclerkMiddleware()
installed is now deprecated and will be removed in the next major version.Before (Deprecated - will be removed):
import { rootAuthLoader } from '@clerk/react-router/ssr.server'; export const loader = (args: Route.LoaderArgs) => rootAuthLoader(args);
After (Recommended):
- Enable the
v8_middleware
future flag:
// react-router.config.ts export default { future: { v8_middleware: true, }, } satisfies Config;
- Use the middleware in your app:
import { clerkMiddleware, rootAuthLoader } from '@clerk/react-router/server'; export const middleware: Route.MiddlewareFunction[] = [clerkMiddleware()]; export const loader = (args: Route.LoaderArgs) => rootAuthLoader(args);
Streaming Support (with middleware):
export const middleware: Route.MiddlewareFunction[] = [clerkMiddleware()]; export const loader = (args: Route.LoaderArgs) => { const nonCriticalData = new Promise(res => setTimeout(() => res('non-critical'), 5000)); return rootAuthLoader(args, () => ({ nonCriticalData, })); };
- Enable the
Minor Changes
- Add new component (#6808) by @tmilewski