Minor Changes
-
#3140
102bfbf3283
Thanks @aliemir! - - Bumped Next.js to 13- Added support for experimental
appDir
option innext.config.js
to allow for the latest Next.js features.
pages
directoryCurrent support for
pages
directory has not changed and will continue to work as before. It will be supported as long asNext.js
continues to support and prompts it as the stable way of working withNext.js
.appDir
optionappDir
option is a new experimental feature inNext.js
that introduces a bunch of new features. It is currently in beta and is not stable. It is not recommended to use it in production. But can be used alongside the currentpages
directory support.To use
appDir
option, you need to add it to yournext.config.js
file.// next.config.js module.exports = { /* ... */ experimental: { appDir: true, }, };
Using
appDir
with refineWe've needed to make some changes to the
@pankod/refine-nextjs-router
to make it work with the current structure of theapp
directory feature. To make sure these do not break the current support forpages
directory, we've added a new exports at the sub path@pankod/refine-nextjs-router/app
that can be used with theappDir
option.Note
To make optional catch-all routes to work with the
app
directory, you need to define them as directories unlike the option of defining them as files withpages
directory.You need to use
NextRouteComponent
from@pankod/refine-nextjs-router/app
instead ofNextRouteComponent
from@pankod/refine-nextjs-router
when usingappDir
option.Inside your
layout
file, you need to bindparams
torouterProvider
to make sure@pankod/refine-nextjs-router
can work properly with the new structure.// app/[[...refine]]/layout.tsx "use client"; import routerProvider from "@pankod/refine-nextjs-router/app"; const Layout = ({ children, params }) => { return ( <Refine routerProvider={routerProvider.apply({ params })} /* ... */ > {children} </Refine> ); };
Warning
Please note that, unlike the
routerProvider
from the@pankod/refine-nextjs-router
,routerProvider
from@pankod/refine-nextjs-router/app
is a function and you need to bindparams
to make it work properly.// app/[[...refine]]/page.tsx "use client"; import { NextRouteComponent } from "@pankod/refine-nextjs-router/app"; export default NextRouteComponent;
Warning
You need to add
"use client";
directive to bothlayout.tsx
andpage.tsx
insideapp/[[...refine]]
directory.Warning
checkAuthentication
does not work withappDir
. We're aiming to release a substitute for it using middleware but for now its not included in this release. - Added support for experimental