system to deploy it on the host.
The `src` property is the path to the HTML entry point of the frontend application within the `root` folder.
For more information on the `ui` section of the `metadata.json`, see [Metadata](../architecture/metadata.md#ui-section).
## Build the extension and install it
Now that you have configured the extension, you need to build the extension image that Docker Desktop will use to
install it.
```bash
docker build --tag=awesome-inc/my-extension:latest .
```
This built an image tagged `awesome-inc/my-extension:latest`, you can run `docker inspect
awesome-inc/my-extension:latest` to see more details about it.
Finally, you can install the extension and see it appearing in the Docker Desktop Dashboard.
```bash
docker extension install awesome-inc/my-extension:latest
```
## Use the Extension APIs client
To use the Extension APIs and perform actions with Docker Desktop, the extension must first import the
`@docker/extension-api-client` library. To install it, run the command below:
```bash
npm install @docker/extension-api-client
```
Then call the `createDockerDesktopClient` function to create a client object to call the extension APIs.
```js
import { createDockerDesktopClient } from '@docker/extension-api-client';
const ddClient = createDockerDesktopClient();
```
When using Typescript, you can also install `@docker/extension-api-client-types` as a dev dependency. This will
provide you with type definitions for the extension APIs and auto-completion in your IDE.
```bash
npm install @docker/extension-api-client-types --save-dev
```
For example, you can use the `docker.cli.exec` function to get the list of all the containers via the `docker ps --all`
command and display the result in a table.
{{< tabs group="framework" >}}
{{< tab name="React" >}}
Replace the `ui/src/App.tsx` file with the following code:
```tsx
// ui/src/App.tsx
import React, { useEffect } from 'react';
import {
Paper,
Stack,
Table,
TableBody,
TableCell,