Apps

An app puts a tool of your own inside the console, beside the content it works on. Its interface is a web page you host, and it reads and writes through the same GraphQL API your application uses.

Four placements

An app's page is embedded in the console as an iframe, in one of four places: a full page in the navigation, a tab in the record editor, a sidebar panel in the record editor, or a field editor that replaces the default input on one field. A tab or a sidebar is tied to models and appears when a record of a matching model is open.

Working with the record

Editor placements talk to the console through the Editor SDK in @foir/sdk, which needs React 18 or later. The console sends the record's values, schema and theme when the page loads, and stays in charge of save, publish and versioning. A full page acts as the team member viewing it, with only the scopes its placement declares and that person also holds. Its token lasts five minutes at a time and ends when they sign out.

One manifest

An app is described by a JSON manifest at an https URL you choose, with name and version its only required fields. Beyond a page, an app can contribute credentials, operations, lifecycle hooks and data shapes mapped onto your models at install. It never owns models.

Installing, and the marketplace

Install an app from the marketplace or by pasting its manifest URL. The marketplace is curated, and an app that is not listed installs from its URL. Either way, the install preview shows exactly what each of the app's operations can read or write.

Tools for one project

A tab or a sidebar for a single project can be declared directly in foir.config.ts and pushed. Build an app when the tool will be reused across projects. The page you serve has to allow the console as a frame ancestor, or the browser renders it blank, and the SDK provides placementFrameAncestors for that.

Read the detail

The apps guide covers the manifest, each placement, what an app can contribute and how installs and updates work.