You compose/combine Clerks middleware by returning the second milddwarefrom from clerkMiddleware()
import {
clerkMiddleware,
createRouteMatcher,
redirectToSignIn,
} from '@clerk/nextjs/server';
import createMiddleware from 'next-intl/middleware';
import { AppConfig } from './utils/AppConfig';
const intlMiddleware = createMiddleware({
locales: AppConfig.locales,
localePrefix: AppConfig.localePrefix,
defaultLocale: AppConfig.defaultLocale,
});
const isProtectedRoute = createRouteMatcher([
'dashboard/(.*)',
]);
export default clerkMiddleware((auth, req) => {
if (isProtectedRoute(req)) auth().protect();
return intlMiddleware(req);
});
export const config = {
matcher: ['/((?!.+\\.[\\w]+$|_next).*)', '/', '/(api|trpc)(.*)'],
};
https://clerk.com/docs/references/nextjs/clerk-middleware#combine-middleware