> For the complete documentation index, see [llms.txt](https://docs.adminjs.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.adminjs.co/basics/features.md).

# Features

This section contains detailed instructions on how to use AdminJS `features`.

Features are ready-made extensions for your resources. They extend existing resource options with predefined configuration and merge with your custom actions or properties configurations.

Features should be included in `features` section of your resource, example:

<pre class="language-typescript"><code class="lang-typescript"><strong>import { ResourceWithOptions } from 'adminjs';
</strong><strong>
</strong><strong>import User from './user.entity.js';
</strong><strong>
</strong><strong>const UserResource: ResourceWithOptions = {
</strong><strong>  resource: User,
</strong><strong>  options: {},
</strong><strong>  features: [someFeature({ /* feature config */ })],
</strong>};

export default UserResource;
</code></pre>

The most common use case of features is when you want some specific behaviour or configuration to be shared by multiple resources, for example: you may want to create a feature which logs changes to server's console.

If you'd like to learn how to write your own `features`, please visit:

{% content-ref url="/pages/TDPQKQ6yDS9Tom1nf5oo" %}
[Writing your own features](/basics/features/writing-your-own-features.md)
{% endcontent-ref %}
