Prisma Next is in early access.Read the docs
For the complete Prisma documentation index optimized for AI agents, see https://www.prisma.io/docs/llms.txt. A markdown version of this page is available at https://www.prisma.io/docs/orm/prisma-client/client-extensions/client.md (append .md to any docs URL).
Client Extensions

Add methods to Prisma Client

Extend the functionality of Prisma Client, client component

You can use the client Prisma Client extensions component to add top-level methods to Prisma Client.

Extend Prisma Client

Use the $extends client-level method to create an extended client. An extended client is a variant of the standard Prisma Client that is wrapped by one or more extensions. Use the client extension component to add top-level methods to Prisma Client.

To add a top-level method to Prisma Client, use the following structure:

const prisma = new PrismaClient().$extends({
  client?: { ... }
})

Example

The following example uses the client component to add two methods to Prisma Client:

  • $log outputs a message.
  • $totalQueries returns the number of queries executed by the current client instance.
let total = 0;
const prisma = new PrismaClient().$extends({
  client: {
    $log: (s: string) => console.log(s),
    async $totalQueries() {
      return total;
    },
  },
  query: {
    $allModels: {
      async $allOperations({ query, args }) {
        total += 1;
        return query(args);
      },
    },
  },
});

async function main() {
  prisma.$log("Hello world");
  const totalQueries = await prisma.$totalQueries();
  console.log(totalQueries);
}

On this page