Skip to main content

 

Hi everyone, Duretti here from the Airtable Product team.

Today we're excited to announce the open beta of the Airtable Interface extensions SDK! This powerful toolkit lets developers create custom extensions that remix Airtable's functionality in entirely new ways. The Interface Extensions SDK puts the power of custom development directly in your hands.

Why we built it

Just like we've seen with our recent AI-Generated Interface Elements, our builder community constantly amazes us by pushing the boundaries of what's possible with Airtable. While our AI tools can generate interfaces from simple prompts, the Interface Extensions SDK gives technical builders the ultimate flexibility to create precisely what they envision through code.

The Interface Extensions SDK bridges the gap between Airtable's powerful data management capabilities and your unique business needs that require custom functionality.

What you can build

The possibilities are endless, but here are some examples of what builders have already created during our private alpha:

  • Custom data visualizations that go beyond standard charts and graphs
  • Advanced calculators for complex industry-specific formulas
  • Learning management systems for bespoke learning experiences tailored to  business-specific workflows

Getting started with the SDK

The Interface Extensions SDK leverages modern web technologies including React and JavaScript, making it accessible to front-end developers while providing the depth that experienced engineers need.

Key features:

  • Full access to base data through our robust API
  • Real-time updates when your data changes
  • Modern React-based development experience
  • Provided UI styling that matches Airtable's design system

How to join the open beta

Ready to start building? You can reference the video on this post for more in-depth set-up steps, but roughly:

  1. Make sure you have Node.js + npm installed
  2. Install the @airtable/block-cli
  3. Configure a Personal Access Token + register it with the CLI
  4. Start building your first custom extension

Note: The open beta is available to builders on Team, Business, and Enterprise Scale plans.

Developer resources

Here are some resources to help you succeed:

Share what you build

We're here to support your journey, and can't wait to see what you create! Share your projects, ask questions, and connect with fellow builders right here in this thread.  

Happy building!

-- Duretti

Hi ​@duretti, I don’t yet have the option to choose an Interface extension.  Is this because the rollout is still in process and perhaps hasn’t propagated to my account yet?  I’m the owner of a Team workspace.

 


Hi, Jake -- 

I see! in your case, you are looking at the right place. What you’ve screenshotted is Interface extensions and you are good to go. What you aren’t able to see is the data layer extension creation flow in builder hub. Hope this helps,

Duretti


Hi ​@duretti, I’m really excited to try this out! Thanks for all the hard work getting this live. Question about the SDK, have there been any updates/changes to how files can be uploaded/inserted to attachment fields?

 

I’ve spent some time experimenting with Data extensions in the past, trying to generate PDFs and insert them into my base. When trying to update an attachment field, it seems that the SDK only supported files that are uploaded to the web and accessible via public url. I was never able to create a workflow where I could generate and insert a pdf into my base without leaving Airtable or using another service. I did some brief testing with the AI-generated extensions and was never able to get Omni to do this properly. I suspect that there haven’t been any changes, but it never hurts to ask!


hi, ​@jmh20712  - thanks so much for trying out the new functionality! AI-generated elements are actually powered by this SDK, so any improvements we make here will show up there, and we’re actively working on adding new functionality. Naturally there are some gaps, like with attachments - so unfortunately no, this doesn’t exist at the moment.

 

That said, you’re not alone in wanting this functionality (we’ve gotten similar feedback around attachments recently), so we’ll add it to our roadmap to prioritize so that you can generate PDFs and insert them into your base as desired.

 

thanks for the excitement and the question!

Duretti


Hi,
In the right sidebar, the Data Source selector only lets me choose one table, and that’s the only one I can access in code.
Is there a way to read multiple tables from the same database within a single Custom Interface?
If so, how can I enable multiple data sources or query additional tables without creating separate interfaces?


hi, ​@Marco Noria  - thanks for the question! you’re right - at this time we don’t offer multiple table support, but we are actively working on that functionality and it should be available in the coming weeks. We do have a couple of limitations that are important to know about, and you can see more detail on that on our FAQ page

thanks!
Duretti


This is so exciting!! I’ve already got a custom calendar view up and running. Unbelievably easy development experience, so excited for what this could mean for my org. +1 to ​@Marco Noria’s suggestion for multiple table support.

Would you consider adding something to colorUtils to get the CSS class for that color (e.g. bg-gray-gray50), or the name of the CSS variable for the color (e.g. --palette-blue-blueDark1)? The utility classes are mentioned in the included style.css template, but I haven’t seen them mentioned in the docs. When switching from light to dark mode, I’d like to be able to also switch to the dark mode color palette for colors that are based on single/multi-select fields, but getHexForColor only runs once.


@duretti Apologies for double-commenting, I just had an additional question - are custom linked record views within interface record detail views on the roadmap at all? The existing views available for linked records are all just slightly too awkward for the linked record data my interfaces use.


hi, ​@thelus - thanks for the excitement :) and for the post! to answer your questions:
 

  • re: adding to colorUtils , we’ll likely still return the rgb/hex codes. that said, we’re open to modifying the opts param or coming up with another solution that addresses this issue. I’ve added it to our backlog.
  • re: custom linked record views: we have adding support for allowing interface extensions / custom elements to be installed inside of record detail views on our roadmap. I believe once that support is shipped, we’d support your use case of being able to visualize your linked record data as you see fit

hope this answers your questions, and do let me know if it doesn’t!

- Duretti


hi, ​@Marco Noria  - thanks for the question! you’re right - at this time we don’t offer multiple table support, but we are actively working on that functionality and it should be available in the coming weeks. We do have a couple of limitations that are important to know about, and you can see more detail on that on our FAQ page

thanks!
Duretti

The workaround I’ve found was to use the Web API to read from other tables. All I needed was a way to query a linked table for valid options. I tried to find a way to do it through the new SDK but I could not.


This has been the dream for so long! Haven’t had a chance to dig into the docs yet but can you give any insight into converting existing base-based custom extensions? Any new APIs to be aware of? 


@duretti I’ve just read about the one table limit. I know you said further up it would coming be coming in the next few weeks, will you update this thread when it’s available? Eager to get going and it’s essentially unusable for my extensions at the moment as they all rely on multiple tables.


Also, there appears to be no prebuilt ui components like there is for base extensions?


Hi! I really like the new feature. In particular, the rules/documentation for AI agents were very useful. I was able to put together a prototype for a client relatively easily (although I have to say my starting point was some React code I used for a Next.js app). Anyway, I have 2 questions:

  1. Do you have a timeline as to when this will leave beta? Or in other words, would you recommend people rely on this solution in production for a private, limited-use interface?
  2. I noticed NPM is raising 9 moderate security vulnerabilities. All of them seem to come from either octokit or webpack-dev-server, which seem to be dependencies of @airtable/blocks-webpack-bundler. I’m not too concerned at this point, as this seems to be a dev dependency, but do you guys have plans to fix those? I’m already using the latest @airtable/blocks-webpack-bundler (version 1.1.1)

Hi! Another piece of feedback: it doesn’t look like the components listed in the documentation work. I tried to use the ConfirmationDialog one, and I gave up. The documentation has something like the below, but TypeScript throws an error saying the module does not have such an export. I tried importing from “@airtable/blocks/base/ui”. Typescrpt was happy with that, but Airtable throws an error when running the extension (Unexpected import when running block in interface). So I just added my own control. Not a big deal in this case but if I had to use controls such as RecordCard.

import { ConfirmationDialog } from "@airtable/blocks/ui";

 


Hi ​@duretti, another question:  Do you know when sharing unlisted airtable extensions via a private link will start working (Or maybe I’m just doing something wrong)?

 

I’ve created a release for an interface extension and also created a Private Install Link for that extension.  When I navigate to the Private Install Link it doesn’t take me to the listing and it redirects to https://airtable.com/marketplace without the /unlisted?secret=blsxxxxxxxxxx part of the url