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

·Matija Žiberna·
How to Fix "Couldn't find next-intl config file" Error 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.

No spam. Unsubscribe anytime.

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:

  1. Stop your development server
  2. Clear the Next.js cache: rm -rf .next
  3. 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

2

Comments

Leave a Comment

Your email will not be published

10-2000 characters

• Comments are automatically approved and will appear immediately

• Your name and email will be saved for future comments

• Be respectful and constructive in your feedback

• No spam, self-promotion, or off-topic content

Matija Žiberna
Matija Žiberna
Full-stack developer, co-founder

I'm Matija Žiberna, a self-taught full-stack developer and co-founder passionate about building products, writing clean code, and figuring out how to turn ideas into businesses. I write about web development with Next.js, lessons from entrepreneurship, and the journey of learning by doing. My goal is to provide value through code—whether it's through tools, content, or real-world software.

You might be interested in