As plugins developer you may need to add custom components in your application so other plugin may use them. To do so, a **Component API** is available in order for a plugin to register a component which will be available for all plugins.
## Registering a new component
Registering a component can be made in two different ways:
1. During the load phase of a plugin
2. Using the provided `react-hook` in a component.
### Registering a component during the load of a plugin
Registering a component during the load phase of a plugin can be done as follows:
1. Create a new Field type (in this example a **`media`** field type):
By doing so, all the plugins from your project will be able to use the newly registered **Component**.
### Registering a component inside a React Component
The other way to register a **Component** is to use the provided `react-hook`: **`useStrapi`** it can be done in the `Initializer` Component so it is accessible directly when the user is logged in, if you decide to register your plugin in another component than the `Initializer` the **Component** will only be registered in the administration panel once the component is mounted (the user has navigated to the view where the **Component** is registered).
1. Register the **Component** in the `Initializer` Component: