Files
Arian Tron 61f56f997c
Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
first commit
2026-03-10 19:37:31 +03:30
..
2026-03-10 19:37:31 +03:30
2026-03-10 19:37:31 +03:30
2026-03-10 19:37:31 +03:30
2026-03-10 19:37:31 +03:30
2026-03-10 19:37:31 +03:30

@next/routing

Shared route resolving package for Next.js.

NOTE: This package is experimental and will become stable along with adapters API

Overview

This package provides a comprehensive route resolution system that handles rewrites, redirects, middleware invocation, and dynamic route matching with support for conditional routing based on headers, cookies, queries, and host.

Installation

npm install @next/routing

Usage

import { resolveRoutes } from '@next/routing'

const result = await resolveRoutes({
  url: new URL('https://example.com/api/users'),
  basePath: '',
  requestBody: readableStream,
  headers: new Headers(),
  pathnames: ['/api/users', '/api/posts'],
  routes: {
    beforeMiddleware: [],
    beforeFiles: [],
    afterFiles: [],
    dynamicRoutes: [],
    onMatch: [],
    fallback: [],
  },
  invokeMiddleware: async (ctx) => {
    // Your middleware logic
    return {}
  },
})

if (result.matchedPathname) {
  console.log('Matched:', result.matchedPathname)
}

Route Resolution Flow

  1. beforeMiddleware routes - Applied before middleware execution
  2. invokeMiddleware - Custom middleware logic
  3. beforeFiles routes - Applied before checking filesystem
  4. Static pathname matching - Check against provided pathnames
  5. afterFiles routes - Applied after filesystem checks
  6. dynamicRoutes - Dynamic route matching with parameter extraction
  7. fallback routes - Final fallback routes

Route Configuration

Each route can have:

  • sourceRegex - Regular expression to match against pathname
  • destination - Destination path with support for replacements ($1, $name)
  • headers - Headers to apply on match
  • has - Conditions that must match
  • missing - Conditions that must not match
  • status - HTTP status code (3xx for redirects)

Redirects

When a route has:

  • A redirect status code (300-399)
  • Headers containing Location or Refresh

The routing will end immediately and return a redirect result with the destination URL and status code.

Has/Missing Conditions

Conditions support:

  • header - Match HTTP headers
  • cookie - Match cookies
  • query - Match query parameters
  • host - Match hostname

Values can be:

  • undefined - Match if key exists
  • String - Direct string match
  • Regex string - Match against regex pattern