# Building a new extension

You’ve installed the CLI and created a Hello World extension—let’s dive into building your own custom extension!

This guide assumes you’ve already completed [Getting started](https://airtable.com/developers/interface-extensions/guides/getting-started.md) and the
[Hello world tutorial](https://airtable.com/developers/interface-extensions/guides/hello-world-tutorial.md).

## React in Extensions

Extensions are [React](https://reactjs.org) applications, with Airtable-specific utilities available to you via the Blocks
SDK. After you `block init`, you can build your extension as you would a standard React extension. You can import and use the
Blocks SDK just like any other npm package.

If you’re not familiar with React, we recommend taking a look at their
[Getting Started](https://react.dev/learn) guide. The core React concepts used in the Blocks SDK
are [function components](https://react.dev/learn/describing-the-ui) and
[hooks](https://react.dev/reference/react/hooks). (Our hooks are also compatible with class components—see our note
[here](https://airtable.com/developers/interface-extensions/guides/read-data-from-airtable.md#using-hooks-with-class-components).)

## Starting from an existing extension

When creating a new extension, you can start from any of our existing [example extensions](https://airtable.com/developers/extensions/examples).
These provide a working extension for you to jump in and customize.

You can also remix an open source extension if you have a link to the GitHub repo.

If none of the examples catch your eye or you just prefer a blank slate, create your extension using the “Hello world”
template. This template is available in both JavaScript and [TypeScript](https://www.typescriptlang.org).

## Useful features of the Blocks SDK

The [API reference](https://airtable.com/developers/interface-extensions/api) has full details, but here are some key features for inspiration:

-   You can fetch data for tables, fields, and records, and the extension will live update as that data
    changes—see the [Read data from Airtable](https://airtable.com/developers/interface-extensions/guides/read-data-from-airtable.md) guide for details.
-   You open record detail pages from the extension.
-   You can integrate configuration settings for your extension with the Interface Designer properties panel–see the [Custom properties for builders](https://staging.airtable.com/developers/interface-extensions/guides/builders-custom-properties) guide for details.

