Next.js 15 Update (#26)

* Update Next.js and React versions in all packages
* Replace onRedirect function with next/link in BillingSessionStatus, since it's no longer cached by default
* Remove unused revalidatePath import in billing return page, since it's no longer cached by default
* Add Turbopack module aliases to improve development server speed
* Converted new Dynamic APIs to be Promise-based
* Adjust mobile layout
* Use ENABLE_REACT_COMPILER to enable the React Compiler in Next.js 15
* Report Errors using the new onRequestError hook
This commit is contained in:
Giancarlo Buomprisco
2024-10-22 08:39:21 +02:00
committed by GitHub
parent 93cb011260
commit 5b9285a575
109 changed files with 5143 additions and 5545 deletions

View File

@@ -0,0 +1,12 @@
/*
Mock modules for development.
This file is used to mock the modules that are not needed during development (unless they are used).
It allows the development server to load faster by not loading the modules that are not needed.
*/
export const Turnstile = undefined;
export const TurnstileProps = {};
export const useBaselimeRum = undefined;
export const BaselimeRum = undefined;

View File

@@ -30,8 +30,9 @@ const priority = featuresFlagConfig.languagePriority;
*
* Initialize the i18n instance for every RSC server request (eg. each page/layout)
*/
function createInstance() {
const cookie = cookies().get(I18N_COOKIE_NAME)?.value;
async function createInstance() {
const cookieStore = await cookies();
const cookie = cookieStore.get(I18N_COOKIE_NAME)?.value;
let selectedLanguage: string | undefined = undefined;
@@ -43,7 +44,7 @@ function createInstance() {
// if not, check if the language priority is set to user and
// use the user's preferred language
if (!selectedLanguage && priority === 'user') {
const userPreferredLanguage = getPreferredLanguageFromBrowser();
const userPreferredLanguage = await getPreferredLanguageFromBrowser();
selectedLanguage = getLanguageOrFallback(userPreferredLanguage);
}
@@ -55,8 +56,9 @@ function createInstance() {
export const createI18nServerInstance = cache(createInstance);
function getPreferredLanguageFromBrowser() {
const acceptLanguage = headers().get('accept-language');
async function getPreferredLanguageFromBrowser() {
const headersStore = await headers();
const acceptLanguage = headersStore.get('accept-language');
if (!acceptLanguage) {
return;

View File

@@ -8,8 +8,9 @@ import appConfig from '~/config/app.config';
* @name generateRootMetadata
* @description Generates the root metadata for the application
*/
export const generateRootMetadata = (): Metadata => {
const csrfToken = headers().get('x-csrf-token') ?? '';
export const generateRootMetadata = async (): Promise<Metadata> => {
const headersStore = await headers();
const csrfToken = headersStore.get('x-csrf-token') ?? '';
return {
title: appConfig.title,