Skip to content

[Bug]: middleware on dynamic routes (deployed) #1168

@JohnGemstone

Description

@JohnGemstone

Summary

I'm using next middleware for A/B testing (by generating a cookie and rewrite to another URL depending on that cookie), but when using dynamic routes, I'm getting odd behavior. When I delete the cookie and revisit the page, the cookie is no longer generated. I've been able to reproduce the issue here with this site I made abtest-middleware.netlify.app. It compares the standard routing and dynamic behaviors.
Hopefully the repro site explains the issue well enough.

Works fine locally!

Steps to reproduce

  • Go to "/dynamic-routes"
  • Click "product-1" link
  • Observe cookie abstest-dynamic generated
  • Delete cookie
  • Refresh the page, navigate away and back to "product-1"
  • Observe no cookie is generated

Compare behavior to "/standard-routes"

A link to a reproduction repository

https://github.com/JohnGemstone/abtest-netlify-next

Plugin version

v4.2.1

More information about your build

  • I am building using the CLI
  • I am building using file-based configuration (netlify.toml)

What OS are you using?

Windows

Your netlify.toml file

No response

Your public/_redirects file

No response

Your next.config.js file

`next.config.js`
module.exports = {
  reactStrictMode: true,
}

Builds logs (or link to your logs)

Build logs
6:30:55 PM: Build ready to start
6:30:57 PM: build-image version: 122b31996ccaffd45d820a452d6227f8312110cc (focal)
6:30:57 PM: build-image tag: v4.5.3
6:30:57 PM: buildbot version: 44e4d661fad7f5ef0b9bffed6dfdedaa2c1ad008
6:30:57 PM: Fetching cached dependencies
6:30:58 PM: Starting to download cache of 158.3MB
6:30:58 PM: Finished downloading cache in 847.569167ms
6:30:58 PM: Starting to extract cache
6:31:03 PM: Finished extracting cache in 5.119017987s
6:31:03 PM: Finished fetching cache in 5.994004063s
6:31:03 PM: Starting to prepare the repo for build
6:31:04 PM: Preparing Git Reference refs/heads/main
6:31:04 PM: Parsing package.json dependencies
6:31:05 PM: Starting build script
6:31:05 PM: Installing dependencies
6:31:05 PM: Python version set to 2.7
6:31:05 PM: Started restoring cached node version
6:31:07 PM: Finished restoring cached node version
6:31:07 PM: v16.13.2 is already installed.
6:31:08 PM: Now using node v16.13.2 (npm v8.1.2)
6:31:08 PM: Started restoring cached build plugins
6:31:08 PM: Finished restoring cached build plugins
6:31:08 PM: Attempting ruby version 2.7.2, read from environment
6:31:09 PM: Using ruby version 2.7.2
6:31:09 PM: Using PHP version 8.0
6:31:09 PM: Started restoring cached node modules
6:31:09 PM: Finished restoring cached node modules
6:31:10 PM: Started restoring cached go cache
6:31:10 PM: Finished restoring cached go cache
6:31:10 PM: go version go1.16.5 linux/amd64
6:31:10 PM: go version go1.16.5 linux/amd64
6:31:10 PM: Installing missing commands
6:31:10 PM: Verify run directory
6:31:11 PM: ​
6:31:11 PM: ────────────────────────────────────────────────────────────────
6:31:11 PM:   Netlify Build                                                 
6:31:11 PM: ────────────────────────────────────────────────────────────────
6:31:11 PM: ​
6:31:11 PM: ❯ Version
6:31:11 PM:   @netlify/build 26.1.7
6:31:11 PM: ​
6:31:11 PM: ❯ Flags
6:31:11 PM:   baseRelDir: true
6:31:11 PM:   buildId: 61f1935e667774f72513d218
6:31:11 PM:   deployId: 61f1935e667774f72513d21a
6:31:11 PM: ​
6:31:11 PM: ❯ Current directory
6:31:11 PM:   /opt/build/repo
6:31:11 PM: ​
6:31:11 PM: ❯ Config file
6:31:11 PM:   No config file was defined: using default values.
6:31:11 PM: ​
6:31:11 PM: ❯ Context
6:31:11 PM:   production
6:31:12 PM: ​
6:31:12 PM: ❯ Installing plugins
6:31:12 PM:    - @netlify/plugin-nextjs@4.2.1
6:31:13 PM: ​
6:31:13 PM: ❯ Loading plugins
6:31:13 PM:    - @netlify/plugin-nextjs@4.2.1 from Netlify app
6:31:15 PM: ​
6:31:15 PM: ────────────────────────────────────────────────────────────────
6:31:15 PM:   1. @netlify/plugin-nextjs (onPreBuild event)                  
6:31:15 PM: ────────────────────────────────────────────────────────────────
6:31:15 PM: ​
6:31:15 PM: Next.js cache restored.
6:31:15 PM: Netlify configuration property "build.environment.NEXT_PRIVATE_TARGET" value changed.
6:31:15 PM: ​
6:31:15 PM: (@netlify/plugin-nextjs onPreBuild completed in 95ms)
6:31:15 PM: ​
6:31:15 PM: ────────────────────────────────────────────────────────────────
6:31:15 PM:   2. Build command from Netlify app                             
6:31:15 PM: ────────────────────────────────────────────────────────────────
6:31:15 PM: ​
6:31:15 PM: $ npm run build
6:31:15 PM: > abtest-netlify-next@0.1.0 build
6:31:15 PM: > next build
6:31:16 PM: info  - Checking validity of types...
6:31:16 PM: warn  - No ESLint configuration detected. Run next lint to begin setup
6:31:16 PM: info  - Creating an optimized production build...
6:31:16 PM: warn  - using beta Middleware (not covered by semver) - https://nextjs.org/docs/messages/beta-middleware
6:31:19 PM: info  - Compiled successfully
6:31:19 PM: info  - Collecting page data...
6:31:20 PM: info  - Generating static pages (0/15)
6:31:20 PM: info  - Generating static pages (3/15)
6:31:20 PM: info  - Generating static pages (7/15)
6:31:20 PM: info  - Generating static pages (11/15)
6:31:20 PM: info  - Generating static pages (15/15)
6:31:20 PM: info  - Finalizing page optimization...
6:31:21 PM: Page                                       Size     First Load JS
6:31:21 PM: ┌ ○ /                                      2.29 kB        73.8 kB
6:31:21 PM: ├   /_app                                  0 B            71.5 kB
6:31:21 PM: ├ ○ /404                                   194 B          71.7 kB
6:31:21 PM: ├ λ /api/hello                             0 B            71.5 kB
6:31:21 PM: ├ ○ /dynamic-routes                        2.31 kB        73.8 kB
6:31:21 PM: ├ ƒ /dynamic-routes/_middleware            649 B          97.4 kB
6:31:21 PM: ├ ● /dynamic-routes/[slug]                 2.57 kB        74.1 kB
6:31:21 PM: ├   ├ /dynamic-routes/product-0
6:31:21 PM: ├   ├ /dynamic-routes/product-1
6:31:21 PM: ├   └ /dynamic-routes/product-2
6:31:21 PM: ├ ● /dynamic-routes/test/[slug]            2.56 kB          74 kB
6:31:21 PM: ├   ├ /dynamic-routes/test/product-0
6:31:21 PM: ├   ├ /dynamic-routes/test/product-1
6:31:21 PM: ├   └ /dynamic-routes/test/product-2
6:31:21 PM: ├ ○ /standard-routes                       2.3 kB         73.8 kB
6:31:21 PM: ├ ƒ /standard-routes/_middleware           647 B          97.4 kB
6:31:21 PM: ├ ○ /standard-routes/product-a             2.49 kB          74 kB
6:31:21 PM: ├ ○ /standard-routes/product-b             2.51 kB          74 kB
6:31:21 PM: ├ ○ /standard-routes/product-c             2.49 kB          74 kB
6:31:21 PM: └ ○ /standard-routes/test/product-b        2.51 kB          74 kB
6:31:21 PM: + First Load JS shared by all              71.5 kB
6:31:21 PM:   ├ chunks/framework-6e4ba497ae0c8a3f.js   42 kB
6:31:21 PM:   ├ chunks/main-7e73d61bce33e887.js        28.2 kB
6:31:21 PM:   ├ chunks/pages/_app-9cd1d19dd7237c4c.js  493 B
6:31:21 PM:   ├ chunks/webpack-514908bffb652963.js     770 B
6:31:21 PM:   └ css/db4e57db63a2a6e9.css               1.9 kB
6:31:21 PM: ƒ  (Middleware)  intercepts requests (uses _middleware)
6:31:21 PM: λ  (Server)      server-side renders at runtime (uses getInitialProps or getServerSideProps)
6:31:21 PM: ○  (Static)      automatically rendered as static HTML (uses no initial props)
6:31:21 PM: ●  (SSG)         automatically generated as static HTML + JSON (uses getStaticProps)
6:31:21 PM: ​
6:31:21 PM: (build.command completed in 5.7s)
6:31:21 PM: ​
6:31:21 PM: ────────────────────────────────────────────────────────────────
6:31:21 PM:   3. @netlify/plugin-nextjs (onBuild event)                     
6:31:21 PM: ────────────────────────────────────────────────────────────────
6:31:21 PM: ​
6:31:21 PM: Patching /opt/build/repo/node_modules/next/dist/server/next-server.js
6:31:21 PM: Moving static page files to serve from CDN...
6:31:21 PM: Moved 1 files
6:31:21 PM: Skipped moving 18 files because they match middleware, so cannot be deployed to the CDN and will be served from the origin instead.
6:31:21 PM: This is fine, but we're letting you know because it may not be what you expect.
The following middleware matched statically-rendered pages:
6:31:21 PM: - /dynamic-routes/_middleware
6:31:21 PM: - /standard-routes/_middleware
6:31:21 PM: ────────────────────────────────────────────────────────────────
6:31:21 PM: The following files matched middleware and were not moved to the CDN:
6:31:21 PM: - dynamic-routes.html
6:31:21 PM: - standard-routes.html
6:31:21 PM: - dynamic-routes/product-0.html
6:31:21 PM: - dynamic-routes/product-0.json
6:31:21 PM: - dynamic-routes/product-1.html
6:31:21 PM: - dynamic-routes/product-1.json
6:31:21 PM: - dynamic-routes/product-2.html
6:31:21 PM: - dynamic-routes/product-2.json
6:31:21 PM: - standard-routes/product-a.html
6:31:21 PM: - standard-routes/product-b.html
6:31:21 PM: - standard-routes/product-c.html
6:31:21 PM: - dynamic-routes/test/product-0.html
6:31:21 PM: - dynamic-routes/test/product-0.json
6:31:21 PM: - dynamic-routes/test/product-1.html
6:31:21 PM: - dynamic-routes/test/product-1.json
6:31:21 PM: - dynamic-routes/test/product-2.html
6:31:21 PM: - dynamic-routes/test/product-2.json
6:31:21 PM: - standard-routes/test/product-b.html
6:31:21 PM: ────────────────────────────────────────────────────────────────
6:31:21 PM: Netlify configuration property "redirects" value changed to [
6:31:21 PM:   { from: '/_next/static/*', to: '/static/:splat', status: 200 },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/image*',
6:31:21 PM:     query: { url: ':url', w: ':width', q: ':quality' },
6:31:21 PM:     to: '/_ipx/w_:width,q_:quality/:url',
6:31:21 PM:     status: 301
6:31:21 PM:   },
6:31:21 PM:   { from: '/_ipx/*', to: '/.netlify/builders/_ipx', status: 200 },
6:31:21 PM:   { from: '/cache/*', to: '/404.html', status: 404, force: true },
6:31:21 PM:   { from: '/server/*', to: '/404.html', status: 404, force: true },
6:31:21 PM:   { from: '/serverless/*', to: '/404.html', status: 404, force: true },
6:31:21 PM:   { from: '/traces', to: '/404.html', status: 404, force: true },
6:31:21 PM:   {
6:31:21 PM:     from: '/routes-manifest.json',
6:31:21 PM:     to: '/404.html',
6:31:21 PM:     status: 404,
6:31:21 PM:     force: true
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/build-manifest.json',
6:31:21 PM:     to: '/404.html',
6:31:21 PM:     status: 404,
6:31:21 PM:     force: true
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/prerender-manifest.json',
6:31:21 PM:     to: '/404.html',
6:31:21 PM:     status: 404,
6:31:21 PM:     force: true
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/react-loadable-manifest.json',
6:31:21 PM:     to: '/404.html',
6:31:21 PM:     status: 404,
6:31:21 PM:     force: true
6:31:21 PM:   },
6:31:21 PM:   { from: '/BUILD_ID', to: '/404.html', status: 404, force: true },
6:31:21 PM:   {
6:31:21 PM:     from: '/api',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/api/*',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/favicon.ico',
6:31:21 PM:     to: '/favicon.ico',
6:31:21 PM:     conditions: { Cookie: [Array] },
6:31:21 PM:     status: 200
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/vercel.svg',
6:31:21 PM:     to: '/vercel.svg',
6:31:21 PM:     conditions: { Cookie: [Array] },
6:31:21 PM:     status: 200
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/*',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     conditions: { Cookie: [Array] },
6:31:21 PM:     force: true
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/data/QfXkGnxehcJxNFXr5qX6B/index.json',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes.json',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/dynamic-routes',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/data/QfXkGnxehcJxNFXr5qX6B/standard-routes.json',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/standard-routes',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/data/QfXkGnxehcJxNFXr5qX6B/standard-routes/product-a.json',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/standard-routes/product-a',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/data/QfXkGnxehcJxNFXr5qX6B/standard-routes/product-b.json',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/standard-routes/product-b',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/data/QfXkGnxehcJxNFXr5qX6B/standard-routes/product-c.json',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/standard-routes/product-c',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/data/QfXkGnxehcJxNFXr5qX6B/standard-routes/test/product-b.json',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/standard-routes/test/product-b',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/test/:slug.json',
6:31:21 PM:     to: '/.netlify/builders/___netlify-odb-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/dynamic-routes/test/:slug',
6:31:21 PM:     to: '/.netlify/builders/___netlify-odb-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/:slug.json',
6:31:21 PM:     to: '/.netlify/builders/___netlify-odb-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/dynamic-routes/:slug',
6:31:21 PM:     to: '/.netlify/builders/___netlify-odb-handler',
6:31:21 PM:     status: 200,
6:31:21 PM:     force: false
6:31:21 PM:   },
6:31:21 PM:   {
6:31:21 PM:     from: '/*',
6:31:21 PM:     to: '/.netlify/functions/___netlify-handler',
6:31:21 PM:     status: 200
6:31:21 PM:   }
6:31:21 PM: ].
6:31:21 PM: ​
6:31:21 PM: (@netlify/plugin-nextjs onBuild completed in 61ms)
6:31:21 PM: ​
6:31:21 PM: ────────────────────────────────────────────────────────────────
6:31:21 PM:   4. Functions bundling                                         
6:31:21 PM: ────────────────────────────────────────────────────────────────
6:31:21 PM: ​
6:31:21 PM: Packaging Functions from .netlify/functions-internal directory:
6:31:21 PM:  - ___netlify-handler/___netlify-handler.js
6:31:21 PM:  - ___netlify-odb-handler/___netlify-odb-handler.js
6:31:21 PM:  - _ipx/_ipx.js
6:31:21 PM: ​
6:31:38 PM: ​
6:31:38 PM: (Functions bundling completed in 17.1s)
6:31:38 PM: ​
6:31:38 PM: ────────────────────────────────────────────────────────────────
6:31:38 PM:   5. @netlify/plugin-nextjs (onPostBuild event)                 
6:31:38 PM: ────────────────────────────────────────────────────────────────
6:31:38 PM: ​
6:31:38 PM: Next.js cache saved.
6:31:38 PM: ​
6:31:38 PM: (@netlify/plugin-nextjs onPostBuild completed in 72ms)
6:31:38 PM: ​
6:31:38 PM: ────────────────────────────────────────────────────────────────
6:31:38 PM:   6. Deploy site                                                
6:31:38 PM: ────────────────────────────────────────────────────────────────
6:31:38 PM: ​
6:31:38 PM: Starting to deploy site from '.next'
6:31:38 PM: Creating deploy tree 
6:31:38 PM: Creating deploy upload records
6:31:38 PM: 31 new files to upload
6:31:38 PM: 3 new functions to upload
6:31:47 PM: Site deploy was successfully initiated
6:31:47 PM: ​
6:31:47 PM: (Deploy site completed in 9.3s)
6:31:47 PM: ​
6:31:47 PM: ────────────────────────────────────────────────────────────────
6:31:47 PM:   Netlify Build Complete                                        
6:31:47 PM: ────────────────────────────────────────────────────────────────
6:31:47 PM: ​
6:31:47 PM: (Netlify Build completed in 35.9s)
6:31:47 PM: Starting post processing
6:31:48 PM: Post processing - HTML
6:31:48 PM: Caching artifacts
6:31:48 PM: Started saving node modules
6:31:48 PM: Finished saving node modules
6:31:48 PM: Started saving build plugins
6:31:48 PM: Finished saving build plugins
6:31:48 PM: Started saving pip cache
6:31:48 PM: Finished saving pip cache
6:31:48 PM: Started saving emacs cask dependencies
6:31:48 PM: Finished saving emacs cask dependencies
6:31:48 PM: Started saving maven dependencies
6:31:48 PM: Finished saving maven dependencies
6:31:48 PM: Started saving boot dependencies
6:31:48 PM: Finished saving boot dependencies
6:31:48 PM: Started saving rust rustup cache
6:31:48 PM: Finished saving rust rustup cache
6:31:48 PM: Started saving go dependencies
6:31:48 PM: Finished saving go dependencies
6:31:48 PM: Build script success
6:31:49 PM: Post processing - header rules
6:31:49 PM: Post processing - redirect rules
6:31:49 PM: Post processing done
6:31:49 PM: Site is live ✨
6:32:12 PM: Finished processing build request in 1m14.544783547s

Function logs

No response

.next JSON files

generated .next JSON files

.next/required-server-files.json

{"version":1,"config":{"env":{},"webpack":null,"webpackDevMiddleware":null,"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"distDir":".next","cleanDistDir":true,"assetPrefix":"","configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"target":"server","poweredByHeader":true,"compress":false,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"]},"devIndicators":{"buildActivity":true,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":15000,"pagesBufferLength":2},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactStrictMode":true,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":false,"experimental":{"cpus":7,"sharedPool":true,"plugins":false,"profiling":false,"isrFlushToDisk":true,"workerThreads":false,"pageEnv":false,"optimizeImages":false,"optimizeCss":false,"scrollRestoration":false,"externalDir":false,"reactRoot":false,"disableOptimizedLoading":false,"gzipSize":true,"swcFileReading":true,"craCompat":false,"esmExternals":true,"isrMemoryCacheSize":52428800,"concurrentFeatures":false,"serverComponents":false,"fullySpecified":false,"outputFileTracingRoot":"","outputStandalone":false},"configFileName":"next.config.js"},"appDir":"/opt/build/repo","files":[".next/routes-manifest.json",".next/server/pages-manifest.json",".next/build-manifest.json",".next/prerender-manifest.json",".next/server/middleware-manifest.json",".next/react-loadable-manifest.json",".next/server/font-manifest.json",".next/BUILD_ID"],"ignore":["node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"]}

.next/routes-manifest.json

{"version":3,"pages404":true,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/dynamic-routes/test/[slug]","regex":"^/dynamic\\-routes/test/([^/]+?)(?:/)?$","routeKeys":{"slug":"slug"},"namedRegex":"^/dynamic\\-routes/test/(?<slug>[^/]+?)(?:/)?$"},{"page":"/dynamic-routes/[slug]","regex":"^/dynamic\\-routes/([^/]+?)(?:/)?$","routeKeys":{"slug":"slug"},"namedRegex":"^/dynamic\\-routes/(?<slug>[^/]+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/dynamic-routes","regex":"^/dynamic\\-routes(?:/)?$","routeKeys":{},"namedRegex":"^/dynamic\\-routes(?:/)?$"},{"page":"/standard-routes","regex":"^/standard\\-routes(?:/)?$","routeKeys":{},"namedRegex":"^/standard\\-routes(?:/)?$"},{"page":"/standard-routes/product-a","regex":"^/standard\\-routes/product\\-a(?:/)?$","routeKeys":{},"namedRegex":"^/standard\\-routes/product\\-a(?:/)?$"},{"page":"/standard-routes/product-b","regex":"^/standard\\-routes/product\\-b(?:/)?$","routeKeys":{},"namedRegex":"^/standard\\-routes/product\\-b(?:/)?$"},{"page":"/standard-routes/product-c","regex":"^/standard\\-routes/product\\-c(?:/)?$","routeKeys":{},"namedRegex":"^/standard\\-routes/product\\-c(?:/)?$"},{"page":"/standard-routes/test/product-b","regex":"^/standard\\-routes/test/product\\-b(?:/)?$","routeKeys":{},"namedRegex":"^/standard\\-routes/test/product\\-b(?:/)?$"}],"dataRoutes":[{"page":"/dynamic-routes/test/[slug]","routeKeys":{"slug":"slug"},"dataRouteRegex":"^/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic\\-routes/test/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic\\-routes/test/(?<slug>[^/]+?)\\.json$"},{"page":"/dynamic-routes/[slug]","routeKeys":{"slug":"slug"},"dataRouteRegex":"^/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic\\-routes/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic\\-routes/(?<slug>[^/]+?)\\.json$"}],"rewrites":[]}

.next/prerender-manifest.json

{"version":3,"routes":{"/dynamic-routes/product-0":{"initialRevalidateSeconds":false,"srcRoute":"/dynamic-routes/[slug]","dataRoute":"/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/product-0.json"},"/dynamic-routes/product-1":{"initialRevalidateSeconds":false,"srcRoute":"/dynamic-routes/[slug]","dataRoute":"/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/product-1.json"},"/dynamic-routes/product-2":{"initialRevalidateSeconds":false,"srcRoute":"/dynamic-routes/[slug]","dataRoute":"/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/product-2.json"},"/dynamic-routes/test/product-0":{"initialRevalidateSeconds":false,"srcRoute":"/dynamic-routes/test/[slug]","dataRoute":"/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/test/product-0.json"},"/dynamic-routes/test/product-1":{"initialRevalidateSeconds":false,"srcRoute":"/dynamic-routes/test/[slug]","dataRoute":"/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/test/product-1.json"},"/dynamic-routes/test/product-2":{"initialRevalidateSeconds":false,"srcRoute":"/dynamic-routes/test/[slug]","dataRoute":"/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/test/product-2.json"}},"dynamicRoutes":{"/dynamic-routes/[slug]":{"routeRegex":"^/dynamic\\-routes/([^/]+?)(?:/)?$","dataRoute":"/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/[slug].json","fallback":false,"dataRouteRegex":"^/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic\\-routes/([^/]+?)\\.json$"},"/dynamic-routes/test/[slug]":{"routeRegex":"^/dynamic\\-routes/test/([^/]+?)(?:/)?$","dataRoute":"/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic-routes/test/[slug].json","fallback":false,"dataRouteRegex":"^/_next/data/QfXkGnxehcJxNFXr5qX6B/dynamic\\-routes/test/([^/]+?)\\.json$"}},"notFoundRoutes":[],"preview":{"previewModeId":"0bb2028ec42375c35516c0c9a5b74e5c","previewModeSigningKey":"d6921b05d37d0177aa621e43820565de92f7a4963f8c5ca9341e0d478201c200","previewModeEncryptionKey":"3999c0787d7edf11903f21d4593aca7efcf5b8d33079f968f3e1d632b629a209"}}

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: bugcode to address defects in shipped code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions