All insights
InsightsAirtableSDKextensions

Building an Airtable extension: what the SDK really enables

Airtable extensions are often reduced to charts sitting next to the grid. Yet the SDK documentation describes something else entirely: a full React application, hosted by the platform, with inherited permissions and reactive data. The architectural question — should an internal tool live inside the base or next to it? — is rarely asked seriously.

Published on May 12, 20267 min readtechnical levelfacts verified August 12, 2026

TL;DR

  • Our thesis: for a large share of internal tools built on Airtable data, the best application lives inside the base, not next to it — a custom extension is not a widget, it is a full React application, built with function components and hooks, with Node 22 or above as the only documented prerequisite.
  • On block release, Airtable hosts the bundle itself: zero servers, zero CDN, zero deployment pipeline to operate.
  • The extension automatically inherits the permissions of the collaborator using it and runs in a sandboxed iframe scoped to its base: no authentication layer to write.
  • The boundaries are documented: 50 records maximum per batch write call, 150 kB and 1,000 keys for GlobalConfig (official documentation, checked August 12, 2026).
  • We shipped 17 extensions to production in one year, including a complete CRM — telephony, emails, SMS/WhatsApp, interactive maps — proof that the useful spectrum goes far beyond visualization.
  • The platform keeps investing: Blocks in 2018, SDK v1.19.0 in June 2025, the Interface Extensions SDK in open beta since September 2025.
01

A React application inside the base, not a widget next to it

The Airtable extension SDK — heir to the Blocks launched in 2018 — lets you build a full React application that runs directly inside the base. Our thesis: it is the most underrated architectural point of the platform. For a large share of internal tools built on Airtable data, the best custom app for Airtable does not live next to the base. It lives inside it, where the data and the users already are.

The official documentation is explicit about what the object is: custom extensions are React applications, built with function components and hooks, with Node 22 or above as a prerequisite. No proprietary DSL: it is the stack your developers already use, TypeScript included. What the docs called "Airtable blocks development" before the 2022 rename has become a mature application environment.

The trajectory confirms it: Blocks in 2018, Marketplace in 2020, the "Extensions" rename in June 2022 with the stated ambition of covering "any major surface in Airtable", SDK version 1.19.0 in June 2025, and an Interface Extensions SDK in open beta since September 10, 2025. Eight years of continuity: you are investing in a trajectory, not a dead end.

02

The programming model, named precisely

The heart of the SDK is a reactive data model. useBase exposes the schema; useRecords loads the records of a table or view and re-renders the component on every change — the docs promise the extension "will live update as that data changes". No polling to write, no webhooks to wire.

const records = useRecords(view);
// automatic re-render on every change in the base

To keep re-renders under control on large tables, useRecordIds and useRecordById offer finer granularity; useLoadable and useWatchable give manual control over loading and subscriptions. The Cursor model exposes the user's interaction state — activeTableId, activeViewId, selectedRecordIds — and drives navigation via setActiveTable(). Concretely: the extension knows what the user is selecting in the grid and can react to it.

GlobalConfig completes the model: a persistent key-value store, synchronized in real time across all connected users, with optimistic writes via setAsync. Its ceilings are public — 150 kB and 1,000 keys per installation. Plenty for configuration; beyond that, the pattern to remember is to store application state in the tables themselves.

On the interface side, the component library aligns with the native UI: CellRenderer displays a cell exactly like the grid, TablePickerSynced binds a table picker to GlobalConfig, and one utility brings you back to Airtable's interface at any moment:

expandRecord(record); // opens the native record view, without leaving the extension

The extension also writes to the base — create, update, delete in batches of 50 records per call — with explicit checks before acting: checkPermissionsForUpdateRecord returns hasPermission plus a message you can display to the user.

03

What the architecture gives you by position

Three classic costs of an internal application disappear because the app lives inside the base.

Hosting, first. On block release, the code is bundled and sent to Airtable's servers, which host it — "we host the released bundles for you": zero servers, zero pipeline to maintain.

Authentication, next. The official FAQ puts it plainly: a custom extension automatically enforces the existing permissions of the collaborator using it. It inherits their rights, runs in a sandboxed iframe and only accesses the data of the base it is installed in. No SSO to integrate, no auth layer to write or audit.

Synchronization, finally. The reactive model keeps on-screen data always current, with no webhook queue and no sync job. What other architectures pay for in infrastructure, the SDK gives you by position — an argument that connects to the seat math: the Airtable seats are already paid for, the extension makes them earn their keep.

What doing nothing costs — Building the same internal tool outside the base means buying back what the SDK gives you: hosting to operate (versus 0 servers after block release), an authentication layer to write and then audit (versus automatically inherited permissions), synchronization to wire (versus native live updates) — and a second interface to drive adoption for, while the base's seats are already paid for and open every day.

04

What 17 production extensions demonstrate

We built 17 custom Airtable extensions in one year, in React and Tailwind, directly inside the bases. The most complete is a CRM: Aircall telephony, templated emails, SMS and WhatsApp, interactive maps, activity tracking. It was adopted immediately — the team did not switch tools, the tool came to them.

That spectrum demonstrates three capabilities a quick read of the docs cannot measure. Rich UI: interactive maps and complete CRM views fit inside the iframe. Outbound network calls: telephony, SMS and emails go out from the client, from the extension — the docs publish no network quota for these calls; we simply observe that they run in production. Well-distributed state: configuration in GlobalConfig, business data in the tables.

The development cycle is short, tooled by the official @airtable/blocks-cli (v2.0.4 as of August 12, 2026):

CommandEffect
block initinitializes the project, authenticated with a personal access token scoped block:manage
block runlocal server on localhost:9000, hot reload in the base on every save
block releasebundle sent to Airtable, which hosts it for the base's collaborators
block add-remotemultiple deployment targets for the same codebase

To distribute beyond a single base, two documented routes: Marketplace submission, with a functionality and security review, or "remixable" open-source publication from GitHub.

05

The scoping table: extension or external application

The SDK is a strength of the platform, not a universal answer. We also ship external applications — 8 Next.js, Supabase and Vercel apps in production — when the need justifies it. The scoping fits in one table.

NeedWhat the SDK coversWhat calls for an external app
Internal tool for a team already working in the baseFull React UI, reactive data, inherited permissions, hosting by Airtable
Shared configuration across usersGlobalConfig, real-time sync (150 kB, 1,000 keys)Beyond the ceilings: store state in dedicated tables
Writing to the baseCreate, update, delete in batches of 50, permissions checkable before actingSustained volume or long-running jobs: an orchestrated backend (our 5 criteria)
External actions (telephony, SMS, emails, maps)Outbound calls from the extension — demonstrated by our CRM in productionScheduled jobs or work outside user presence: a server-side worker
Users without an Airtable seat (clients, partners)External portal or app: every extension user is a base collaborator
Multi-base or public distributionMarketplace (after review) or remixable open sourceA standalone SaaS product

The dividing line is positional. If the users and the data are already in the base, the extension wins. If the users are outside — clients, candidates, partners — the seat math flips and the external application takes over.

06

The limits of this approach

Extensions are a paid-plan feature, and a custom extension remains specific to its base outside the Marketplace: sharing across bases requires block add-remote and one release per target. On very large bases, Airtable may pause extensions at load time to protect performance. The ceilings — 50 records per call, 150 kB of GlobalConfig — are comfortable for an internal tool, but point toward a backend as soon as volumes or processing grow. The Interface Extensions SDK, in beta since September 2025, starts with single-table access and a smaller component library. Finally, our own track record is one year and 17 extensions: significant, not exhaustive.

Key takeaways

  • A custom extension should be designed as a full internal application: the same data-model and permission requirements as a classic app, without the infrastructure to operate.
  • The documented ceilings draw a healthy distribution: configuration in GlobalConfig, business data in the tables, heavy processing on the server side.
  • The selection criterion is not primarily technical but positional: where the users are, where the data is, who already has a seat.

The extension SDK rewards those who take it seriously: a full React environment, documented, maintained for eight years, sitting exactly where your teams already work. It is one of the choices we document in how we build: the shortest architecture between the data and the people. Ownward helps companies perform better through technology — and above all, take back control.

Sources

Internal Ownward data, 2026.

Facts verified August 12, 2026.

All trademarks belong to their respective owners. This article is neither sponsored nor endorsed by the vendors mentioned.

Is this on your desk right now?

Tell us where you stand. We reply with concrete elements — what we would do first, in your business.

Talk about your situation

Keep reading

All insights