NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4761 most downloaded on npm
Internationalization (i18n) for Next.js
Last release 3 days ago
24 Sep 2026
Ships fairly regularly
a new release about every 1 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
6 years old
500 releases · first in 2020
One column per quarter.
Handle malformed pathnames in middleware (#1353) (dcda9d9), closes #1351 – by @amannn
Handle overlapping locale prefixes correctly pt. 2 (#1344) (7958659) – by @amannn
Handle overlapping custom locale prefixes correctly (#1343) (72c1731), closes #1329 – by @amannn
Add error handling in case an invalid i18n request config file has been specified (#1327) (18b9fd6) – by @amannn
Support ./i18n/request.ts in addition to ./i18n.ts (#1308) (258e95e) – by @amannn
Nothing published for this version
Print warning for inconsistent i18n setup where no locale is read in getRequestConfig and also none is returned (#1305) (2f0f781) – by @amannn
Add defineRouting for easier i18n routing setup (#1299) (5ff6120) – by @amannn
Nothing published for this version
Enable React Compiler ESLint plugin and fix relevant case (#1281) (606f4cc) – by @amannn
Lazy init message formatter for improved tree shaking in case useTranslations is only used in Server Components (#1279) (9f1725c) – by @amannn
Update @formatjs/intl-localematcher to latest version (#1140) (c217582) – by @amannn
Handle optional catch-all segments in navigation APIs if no value is provided and handle the case if a dynamic value appears multiple times in a pathn
Fix open redirect vulnerability for localePrefix: 'as-necessary' by sanitizing pathname in the middleware (#1208) (f42ac01), closes #1207 – by @hblee1…
Apply useMemo for useRouter returned from createLocalizedPathnamesNavigation to keep a stable reference when possible (#1201) (a1b9a36), closes #1198
Cache Intl.* constructors (#1193) (52c4f2c), closes #215 – by @amannn
Support trailingSlash: true in Next.js config (#1190) (cfbdee9) – by @amannn
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Support relative pathnames in redirect (#1178) (3b698d7), closes #1177 – by @amannn
Export DomainsConfig (#1175) (c4d1bb0) – by @amannn
Prefer more specific routes in usePathname when detecting the currently active pathname for localized pathnames (#1152) (936839e), closes #1151 – by @
Nothing published for this version
Note: Version bump only for package root
Note: Version bump only for package root
Remove @formatjs/ecma402-abstract dependency in favor of the automatically bundled one from intl-messageformat (#1141) – by @amannn
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Handle external URLs passed to redirect and permanentRedirect (#1084 by @mhogeveen)
redirect and permanentRedirect (#1084 by @mhogeveen) (16b55e2)Nothing published for this version
Nothing published for this version
Print a warning in case the middleware didn't run on a request but APIs from next-intl are used
Correctly parse date skeleton EEEE to a long weekday like "Tuesday" (upgrades to intl-messageformat@10 internally)
EEEE to a long weekday like "Tuesday" (upgrades to intl-messageformat@10 internally) (#1039) (d6b5fd2)Nothing published for this version
Nothing published for this version
When using domain-based routing, use defaultLocale of a domain instead of the top-level one in case no other locale matches better on the domain (#100
Correctly detect base path at the app root / when using a locale prefix strategy other than always. This ensures the locale cookie is set correctly. (
Apply correct port when redirecting to another domain and the app doesn't run behind a proxy (#979 by @awkaiser-tr) (485f59e), closes #658
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Improve support for older browsers by switching from replaceAll to replace (#885 by @MichalMoravik) (080333a), closes #884
Handle changing href for correctly when using localePrefix: 'never' (#926) (b609dc0), closes #918
Handle optional params in catch-all segments correctly when using localized pathnames (#925) (8ba8b69), closes #917
Incorporate basePath correctly in useRouter functions (#906 by @Oberwaditzer) (4abcbeb), closes #905 #910
basePath correctly in useRouter functions (#906 by @Oberwaditzer) (4abcbeb), closes #905 #910Return now from global context if no updateInterval has been set on useNow
/EN → /en) (#861 by @fkapsahili) (3b2b446)format.dateTimeRange (#769 by @martinmunillas) (9f12521)permanentRedirectin navigation APIs (#850 by @polvallverdu) (6508ddc)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →