Create dependent (cascading) dropdown fields that dynamically filter options based on another field's value
released July 23, 2026
npm install linked-selectA Strapi 5 custom field that renders two cascading dropdowns inside the Content Manager:
It is reusable on any content type — you only configure which content types act as the parent and child when you add the field.
{ "parent": "<parentDocumentId>", "child": "<childDocumentId>" }.The plugin is a local plugin, already enabled in config/plugins.ts:
export default () => ({
'linked-select': {
enabled: true,
resolve: './src/plugins/linked-select',
},
});Build the plugin and start Strapi:
cd src/plugins/linked-select && npm install && npm run build
cd ../../.. && npm run developname, title). Auto-detected when empty.Note on the parent content-type dropdown: Strapi's Content-Type Builder only renders static option lists for built-in select settings, so the parent list is fetched once when the admin panel loads (via
GET /linked-select/content-types). If it appears empty, refresh the admin panel and reopen the field settings. The child dropdown is a custom input and reloads whenever the parent selection changes.
Prerequisite: the parent content type must declare a relation whose target is the child (e.g. a
categorywith anarticlesrelation toarticle). The inverse relation on the child is what powers entry filtering in the Content Manager.
A UID follows the pattern api::<singularName>.<singularName>. For a Category collection it is api::category.category.
| Method | Path | Description |
|---|---|---|
GET | /linked-select/content-types | Lists API content types (uid, displayName, labelField, relationTargets). |
GET | /linked-select/content-types?parentUid=<uid> | Lists content types that are relation targets of the given parent. |
GET | /linked-select/entries/:uid | Lists entries as { id, documentId, label }. |
GET | /linked-select/entries/:uid?parentValue=<id>&parentUid=<uid> | Lists child entries related to the given parent. |
Optional query params: labelField, relationField.
Share your work with the community and get it listed in the Strapi ecosystem for everyone to discover and use.
Submit
