I created this as a simpler alternative to the official Airtable Node.js library.
This library makes it easier to work with Airtable by providing TypeScript support and straightforward functions for reading and writing records.
While this is still an early project and needs more work, you can already use it to fetch and update records in your Airtable bases.
I'm already using it in production for many projects.
It also supports generating TypeScript definitions for your Airtable tables which is super useful.
npm install easy-airtable-api
bun add easy-airtable-api
import { getRecord } from 'easy-airtable-api';
type Fields = {
Name?: string;
Notes?: string;
Status?: string;
};
const record = await getRecord<Fields>({
apiKey: 'apiKey',
baseId: 'baseId',
tableNameOrId: 'tableNameOrId',
recordId: 'recordId',
});
import { getRecords } from 'easy-airtable-api';
type Fields = {
Name?: string;
Notes?: string;
Status?: string;
};
const records = await getRecords<Fields>({
apiKey: 'apiKey',
baseId: 'baseId',
tableNameOrId: 'tableNameOrId',
options: {
maxRecords: 500,
},
});
import { updateRecord } from 'easy-airtable-api';
type Fields = {
Name?: string;
Status?: string;
};
const record = await updateRecord<Fields>({
apiKey: 'apiKey',
baseId: 'baseId',
tableNameOrId: 'tableNameOrId',
recordId: 'recordId',
options: {
typecast: true,
},
fields: {
Name: 'New Name',
Status: 'Active',
},
});
import { updateRecords } from 'easy-airtable-api';
type Fields = {
Name?: string;
Status?: string;
};
const records = await updateRecords<Fields>({
apiKey: 'apiKey',
baseId: 'baseId',
tableNameOrId: 'tableNameOrId',
records: [
{
id: 'recordId1',
fields: {
Name: 'New Name 1',
Status: 'Active',
}
},
{
id: 'recordId2',
fields: {
Name: 'New Name 2',
Status: 'Inactive',
}
}
],
options: {
typecast: true,
}
});
import { generateTypeScriptDefinitions } from 'easy-airtable-api';
const types = await generateTypeScriptDefinitions({
apiKey: 'apiKey',
baseId: 'baseId',
tableNameOrId: 'tableNameOrId',
});
- Type generation wraps type keys in quotations
- Fix various type generation issues
- added createRecords and createRecord methods
- Exported generateTypeScriptDefinitions function.
- Added generateTypeScriptDefinitions function to generate TypeScript definitions for Airtable tables.
- Reverted making apiKey, baseId, tableId default to undefined
- Added option to customize delay between requests via options.requestInterval
- Make apiKey, baseId, tableId default to undefined #12
- Missing .js in utils import #13
- Fixed deleteRecords implementation errors.
- Implemented the deleteRecords method.
- Implemented the updateRecords method.
- Implemented the updateRecordsUpsert method.
- Added a delay when executing many requests in succession.
- Fixed the updateRecord and updateRecords methods to return correct field types.
- Added all available options for updateRecords.
- Modified the getRecords function to automatically retrieve all records.
- Added all available options for updateRecord.
- Corrected the path to index.d.ts.
- Discontinued CJS build, supporting only ESM for now.
- Exported all available methods.
- Restructured the lib folder to eliminate duplicate types.
- Supported both ESM & CJS builds.
- Enhanced server error handling.
- Introduced generic field types.
- Developed basic request functions to retrieve or update records.
- Added type definitions for requests and fields.
- Conducted basic tests to verify the core functionality of the library.
- Initial project setup with no real functionality implemented.