Advanced: Middleware v2.0.0+
Middleware allows you to specify functions to run at various points in an Inngest client's lifecycle, such as during a function's execution or when sending an event. Use the InngestMiddleware class to define new middleware.
import { Inngest, InngestMiddleware } from "inngest";
const myMiddleware = new InngestMiddleware({
  name: "My Middleware",
  init() {
    return {
      onFunctionRun({ fn }) {
        // This will be logged whenever a function is executed
        console.log(`Function ${fn.name} is running!`);
        // This is where you can optionally specify hooks for this particular run
        return {
          afterExecution() {
            console.log(`Function ${fn.name} has finished running!`);
          },
        };
      },
    };
  },
});
const inngest = new Inngest({
  id: "my-app",
  middleware: [myMiddleware],
});
This can be used for a wide range of uses, for example:
- Utilizing error-monitoring libraries (e.g. Sentry)
- Adding logging support
- Transforming input and output data (e.g. superjson)
- Setting up DB connections before starting a function's execution
- Using Inngest's stepbuilding blocks to build reusable patterns
Next steps
Check out some of the samples below for a quick look at how to use middleware:
Or see the next pages to walk through the details:
- Creating middleware - basic middleware, lifecycles, and hooks
- Lifecycle - middleware ordering and see all available hooks
- TypeScript - how to affect input and output types and values