next-intl 3.0 release candidate
Sep 22, 2023 · by Jan AmannAlmost one year ago, on Oct 25, 2022, Next.js 13 was announced (opens in a new tab) with beta support for the App Router and Server Components. Ever since then, next-intl
began an exploration on what it means to provide an optimal experience for implementing i18n with these new capabilities.
Today, after 320 commits and the involvement of over 50 community members (opens in a new tab), I'm absolutely thrilled to share the first release candidate of next-intl
3.0, which is now App Router-first.
If you're still happy with the Pages Router, rest assured that next-intl
is dedicated to support this paradigm for as long as Next.js does. For those who already made the jump to the App Router, this means that next-intl
now takes full advantage of the new capabilities.
New features
- Support for React Server Components: The APIs
useTranslations
,useFormatter
,useLocale
,useNow
anduseTimeZone
can now be used in Server Components. - New async APIs to handle i18n outside of components: To handle i18n in the Metadata API and Route Handlers, the APIs
getTranslator
,getFormatter
,getNow
, andgetTimeZone
have been added. - Middleware for internationalized routing: While Next.js has built-in support for this with the Pages Router, the App Router doesn't include a built-in solution anymore.
next-intl
provides a drop-in solution that has you covered. - Internationalized navigation APIs: Similar to the middleware, this provides a drop-in solution that adds i18n support for Next.js' navigation APIs:
Link
,useRouter
,usePathname
andredirect
.
The latter two have already been added in minor versions, but 3.0 cleans up the API and includes many improvements and fixes.
Breaking changes
next-intl
now requires two additional setup steps when you're using the App Router:- The
i18n.ts
module provides configuration for Server Components next-intl/plugin
needs to be added to link youri18n.ts
module tonext-intl
- The
next-intl
now usesexports
inpackage.json
(opens in a new tab) to clearly define which modules are exported. This should not affect you, unless you've previously imported undocumented internals.NextIntlProvider
has been removed in favor ofNextIntlClientProvider
NextIntlClientProvider
now needs to be imported fromnext-intl
instead ofnext-intl/client
.- The middleware now needs to be imported from
next-intl/middleware
instead ofnext-intl/server
. next@^13.4
is now required for the RSC APIs. Next.js 12 is still supported for the Pages Router integration.- If you're using
NextIntlClientProvider
outside of the App Router (e.g. with the Pages Router), you need to define thelocale
prop explicitly. useIntl
has been replaced withuseFormatter
.
If you've been part of the Server Components beta and have already tried out previous releases, first of all, thank you so much! Second: Some APIs saw iterations over the beta period, please upgrade to next-intl@3.0.0-beta.19
and check if you see any deprecations in the console output of your app. If not, you should be able to upgrade to the release candidate without any changes.
Upgrade now
We're still looking for more feedback, please try out the release candidate and reach out (opens in a new tab) in case find something!
npm install next-intl@3.0.0-rc.1