Global Middleware

Middleware allows you to run code before a request reaches your route handlers. It is built on web standards (Request/Response).

Creating Middleware

Create a middleware.ts file in your src directory.

// src/middleware.ts
import type { MiddlewareFn } from "neutron";

export const middleware: MiddlewareFn[] = [
  async (request, context, next) => {
    console.log(`[${request.method}] ${request.url}`);
    
    const response = await next();
    
    response.headers.set("X-Powered-By", "Neutron");
    return response;
  }
];

Middleware Signature

type MiddlewareFn = (
  request: Request,
  context: Record<string, any>,
  next: () => Promise<Response>
) => Promise<Response>;
  • request: The incoming request.
  • context: A shared object for passing data to other middleware or loaders.
  • next: A function that calls the next middleware (or the route handler).