# `client`: Add methods to Prisma Client (/docs/orm/v6/prisma-client/client-extensions/client)

Location: ORM > v6 > Prisma Client > Client Extensions > `client`: Add methods to Prisma Client

> [!NOTE]
> Prisma Client extensions are Generally Available from versions 4.16.0 and later. They were introduced in Preview in version 4.7.0. Make sure you enable the `clientExtensions` Preview feature flag if you are running on a version earlier than 4.16.0.

You can use the `client` [Prisma Client extensions](/orm/v6/prisma-client/client-extensions) component to add top-level methods to Prisma Client.

Extend Prisma Client [#extend-prisma-client]

Use the `$extends` [client-level method](/orm/v6/reference/prisma-client-reference#client-methods) 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:

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

Example [#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.

> [!NOTE]
> To use metrics in your project, you must enable the `metrics` feature flag in the `generator` block of your `schema.prisma` file. [Learn more](/orm/v6/prisma-client/observability-and-logging/metrics#2-enable-the-feature-flag-in-the-prisma-schema-file).

```ts
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);
}
```

## Related pages

- [``model`: Add custom methods to your models`](https://www.prisma.io/docs/orm/v6/prisma-client/client-extensions/model): Extend the functionality of Prisma Client, model component
- [``query`: Create custom Prisma Client queries`](https://www.prisma.io/docs/orm/v6/prisma-client/client-extensions/query): Extend the functionality of Prisma Client, query component
- [``result`: Add custom fields and methods to query results`](https://www.prisma.io/docs/orm/v6/prisma-client/client-extensions/result): Extend the functionality of Prisma Client, result component
- [`Shared packages & examples`](https://www.prisma.io/docs/orm/v6/prisma-client/client-extensions/extension-examples): Explore the Prisma Client extensions that have been built by Prisma and its community
- [`Shared Prisma Client extensions`](https://www.prisma.io/docs/orm/v6/prisma-client/client-extensions/shared-extensions): Share extensions or import shared extensions into your Prisma project