Skip to main content
This page documents the deprecated legacy registration file, app.ts. It keeps working for existing apps, but every new app is scaffolded with the folder-based convention under src/app/ and has no app.ts manifest (see App structure). To convert an existing app, use the folder structure migration guide. The two conventions can coexist while you migrate: once src/app/ exists, app.ts is optional, and if the same extension id is registered in both places, the folder-based definition wins.
The app.ts file provides a centralized way to register all of your app’s entry points - the various features and UI components that integrate with Attio’s interface. This file should be located directly in the root of your src directory (src/app.ts or src/app.tsx).

Basic structure

Every app.ts file follows this structure:

Entry point types

The app.ts file organizes entry points into logical categories:

Record entry points

These appear on record pages (companies, people, deals, etc.): record.actions: Array<App.Record.Action> record.bulkActions: Array<App.Record.BulkAction> record.widgets: Array<App.Record.Widget>

Call recording entry points

These appear in call recording contexts: callRecording.insight.textActions: Array<App.CallRecording.Insight.TextSelectionAction> callRecording.summary.textActions: Array<App.CallRecording.Summary.TextSelectionAction> callRecording.transcript.textActions: Array<App.CallRecording.Transcript.TextSelectionAction>

Best practices

1. Use descriptive names

Use clear, descriptive names for your entry points:

2. Organize your file structure

Match your file structure to the app object organization:

3. Keep app.ts simple

The app.ts file should primarily contain imports and the configuration object. Keep business logic in the individual entry point files.

4. One entry point per file

Each entry point should be defined in its own file and exported. This makes them easier to test and maintain.