How to Fix "Couldn't find next-intl config file" Error in Next.js 15
Resolve Turbopack compatibility issues with next-intl in Next.js 15

⚡ Next.js Implementation Guides
In-depth Next.js guides covering App Router, RSC, ISR, and deployment. Get code examples, optimization checklists, and prompts to accelerate development.
I was setting up internationalization for a Next.js 15 project when I hit a frustrating wall. Despite having all the correct next-intl configuration files in place, the development server kept throwing the same error: "Couldn't find next-intl config file." The configuration was perfect, the file paths were correct, and even creating a minimal test project yielded the same result.
After digging through GitHub issues and Stack Overflow threads, I discovered this is actually a known compatibility issue between Next.js 15's Turbopack and the next-intl library. Here's the exact fix that resolved it.
The Problem
When running a Next.js 15 application with next-intl configured correctly, you might encounter this error:
Error: Couldn't find next-intl config file. Please follow the instructions at https://next-intl.dev/docs/getting-started/app-router
This happens even when:
- Your
src/i18n/request.ts
file exists and is properly configured - Your
next.config.ts
includes the next-intl plugin - Your message files are in the correct location
- You've followed the official documentation exactly
The error occurs because of a conflict between Turbopack (Next.js 15's new bundler) and how next-intl resolves its configuration files.
The Solution
The fix involves adding a turbopack configuration to your Next.js config that provides next-intl with the proper configuration space it needs.
Update your next.config.ts
file:
// File: next.config.ts
import createNextIntlPlugin from 'next-intl/plugin';
const withNextIntl = createNextIntlPlugin();
const nextConfig = {
turbopack: {},
};
export default withNextIntl(nextConfig);
The key addition is the turbopack: {}
configuration. This provides next-intl with the configuration space it needs to properly resolve module aliases in the Turbopack environment.
Why This Works
Next.js 15 introduced Turbopack as the default bundler, but next-intl's plugin system was designed for the previous webpack-based setup. When next-intl tries to add module aliases for resolving your i18n configuration, it looks for the turbopack configuration key. However, in certain versions of Next.js 15, this key isn't properly recognized.
By explicitly including the turbopack: {}
object in the configuration, we're providing next-intl with the proper location where it can safely add its required aliases. The empty object is sufficient because next-intl only needs a place to inject its own configuration.
Additional Setup Verification
While you're troubleshooting, ensure your basic next-intl setup is correct:
Your i18n request configuration should be at src/i18n/request.ts
:
// File: src/i18n/request.ts
import { getRequestConfig } from 'next-intl/server';
import { routing } from './routing';
export default getRequestConfig(async ({ requestLocale }) => {
let locale = await requestLocale;
if (!locale || !routing.locales.includes(locale as any)) {
locale = routing.defaultLocale;
}
return {
locale,
messages: (await import(`../../messages/${locale}.json`)).default
};
});
And your layout should properly await the params object (required in Next.js 15):
// File: src/app/[locale]/layout.tsx
export default async function IntlLayout({
children,
params
}: {
children: React.ReactNode;
params: { locale: string };
}) {
const { locale } = await params; // Note: await is required
// Rest of your layout logic
}
Final Steps
After making these changes:
- Stop your development server
- Clear the Next.js cache:
rm -rf .next
- Restart your development server:
npm run dev
The "Couldn't find next-intl config file" error should be resolved, and your internationalization should work correctly.
This Turbopack compatibility issue affects many developers moving to Next.js 15, but the fix is straightforward once you know about it. The turbopack configuration provides the bridge next-intl needs for proper Turbopack integration.
Let me know in the comments if you have questions, and subscribe for more practical development guides.
Thanks, Matija