Skip to main content

Interface Extensions SDK — No way to upload attachments from a custom extension?

  • April 3, 2026
  • 1 reply
  • 10 views

Vadim Ciobanu
Forum|alt.badge.img+1

Hey 👋

I've been building a custom Interface Extension using the Extensions SDK and ran into what seems like a significant limitation — I can't find any supported way to let users upload a file/attachment directly from within the extension UI.

What I'm trying to do:

I have a custom extension embedded in an Interface page. The workflow requires users to attach a file (e.g. a PDF or image) to a record — ideally triggered from a button or input inside the extension itself.

What I've tried:

  • Using a standard HTML <input type="file"> — the file picker opens, but there's no SDK method to then take that file and write it as an attachment to a record field.
  • Looking through the @airtable/blocks SDK docs for something like updateRecordAsync with an attachment payload — attachment fields require a URL, not a raw file object. There's no upload endpoint exposed through the SDK.
  • Considered uploading to a third-party storage first (e.g. S3 or Cloudinary), getting a public URL, then writing that URL to the attachment field — this works but feels like a significant workaround for what should be a basic operation.

The core problem:

The SDK's updateRecordAsync for attachment fields only accepts an array of objects with a url property. There is no native method to upload a binary file and get back an Airtable-hosted attachment URL. This means a seemingly simple UX — "click here, pick a file, it attaches to this record" — is essentially impossible without a separate file hosting infrastructure.

My questions:

  1. Is there something I'm missing in the SDK that allows direct file upload from an extension?
  2. Is this a known limitation, and is it on the roadmap?
  3. For those who've solved this — what external upload service are you routing through, and how are you handling auth/CORS within the sandboxed extension environment?

This seems like a pretty common use case for anyone building data-entry or document-management workflows inside Interfaces, so I'd love to understand if there's a pattern the community has converged on.

Thanks in advance!

1 reply

coderkid
Forum|alt.badge.img+4
  • Participating Frequently
  • April 3, 2026

You're correct!!! the SDK does not support direct file uploads...

This is an intentional architectural decision. Extensions run entirely client-side (in the browser).

Because of this, attachment fields don't accept raw files, they require a publicly accessible URL, which Airtable then fetches and stores internally.

So, Instead, you should do this :

1- Let the user select a file:

<input type="file" />

2- Upload the file to external storage, such as:

  • S3
  • Cloudinary
  • Uploadcare / Filestack

3- Retrieve a public or signed URL for the uploaded file

4- Attach it to the Airtable record:

table.updateRecordAsync(recordId, {
Attachments: [{ url }]
})