[bug]: Custom Field requires type: json in schema to save data
Los mantenedores suelen responder en 6 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- typescript
- Área
- full-stack
Línea de trabajo
Start with the custom-field registration example in /admin/src/index.js and compare it with the official custom-fields documentation linked in the issue. Trace how the registered type and the generated schema affect persistence, then determine whether the fix belongs in the SDK behavior or the documentation. Done means complex custom-field data persists correctly or the required json configuration is clearly documented.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What version of @strapi/sdk-plugin are you using?
- Npm version: 10.8.2
- Node.js version: 20.18.3
- React version: 18.3.1
- Strapi version: 5.23.3
- @strapi/sdk-plugin version: 5.3.2
- Browser: Chrome
What's Wrong?
When using a custom field from any plugin in a content type schema, if the field is defined as:
"myCustomField": {
"type": "customField",
"customField": "plugin::<plugin-name>.<custom-field-name>"
}
Strapi does not save the data unless the field type is changed to "json":
"myCustomField": {
"type": "json",
"customField": "plugin::<plugin-name>.<custom-field-name>"
}
This is not documented and causes confusion, since the admin panel recognizes the custom field, but the data is not persisted unless the type is set to json.
To Reproduce
-
Create a content type with a custom field using a local plugin built with the Strapi SDK (e.g.
<plugin-name>), where the custom field is registered as typejsonin the plugin registration. -
Add the custom field from the Content-Type Builder to any collection type.
-
In the schema, define the field as:
"myCustomField": { "type": "customField", "customField": "plugin::<plugin-name>.<custom-field-name>" } -
Go to the admin panel and try to save data using the custom field.
-
Observe that the data is not saved/persisted.
-
Change the field type to
"json":"myCustomField": { "type": "json", "customField": "plugin::<plugin-name>.<custom-field-name>" } -
Now, data is saved correctly.
Expected Behaviour
Actual Behaviour
- The admin panel recognizes the custom field and allows input, but Strapi does not persist the data unless the type is set to
json. - This behaviour is not documented in the official docs, which show examples using
type: "customField".
Expected Behaviour
- Strapi should either:
- Handle custom fields that store arrays/objects without requiring manual change to
"json", or - Document this requirement clearly for custom field plugin authors and users.
- Handle custom fields that store arrays/objects without requiring manual change to
Technical Comparison with Official Documentation
- Official docs show custom fields defined as:
"color": {
"type": "customField",
"customField": "plugin::color-picker.color",
"options": {
"format": "hex"
}
}
- In practice, for custom fields that store complex data (arrays/objects), the type must be set to
jsonfor persistence:
"customFieldExample": {
"type": "json",
"customField": "plugin::<plugin-name>.<custom-field-name>"
}
- If
type: "customField"is used, the data is not saved.
Custom Field Registration
File: <plugin-path>/admin/src/index.js
app.customFields.register({
name: '<custom-field-name>',
pluginId: '<plugin-name>',
type: 'json', // Required for metadata persistence
intlLabel: {
id: '<plugin-name>.<custom-field-name>.label',
defaultMessage: '<custom-field-name>',
},
intlDescription: {
id: '<plugin-name>.<custom-field-name>.description',
defaultMessage: 'Select any asset',
},
components: {
Input: async () =>
import('./components/Input/Input').then((module) => ({
default: module.Input,
})),
},
options: {
// declare options here
},
});
- The custom field must use
type: 'json'for Strapi to persist complex data (arrays/objects). - If
type: 'customField'is used, data is not saved.
- Lenguaje dominante
- TypeScript
- Estrellas
- 24
- Forks
- 13
- Merge medio
- 5 d 3 h
- PR fusionados (30 d)
- 5
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de strapi/sdk-plugin
-
Dificultad 4/5 Medio día Aptitud para principiantes 15/100
strapi/sdk-plugin#244 ·
Los mantenedores suelen responder en 6 días
-
[bug]: build ignores exports file names and package.json#type, breaking "type": "module" pluginsPosiblemente ocupada @unrevised6419 la tomó hace 44 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
strapi/sdk-plugin#242 ·
Los mantenedores suelen responder en 6 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
strapi/sdk-plugin#241 ·
Los mantenedores suelen responder en 6 días
-
[feat]: build a subset of bundles with --bundle, for per-bundle task cachingPosiblemente ocupada @unrevised6419 la tomó hace 51 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
strapi/sdk-plugin#238 ·
Los mantenedores suelen responder en 6 días
-
[bug]: When building with latest sdk-plugin version, I loose sub folders typesQuizá libre de nuevo @jhoward1994 la tomó hace 247 días y no hay ningún pull request abierto. Abiertoissue: bug
strapi/sdk-plugin#115 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 6 días
Todos los issues de strapi/sdk-plugin
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
AykutSarac/jsoncrack.com#616 ·
-
nip27: long hashtag swallows the rest of the content, lone # gives an empty hashtagPosiblemente ocupada @bardrop la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
nbd-wtf/nostr-tools#578 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
backnotprop/plannotator#3427 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
microsoft/Power-CAT-Copilot-Studio-Kit#942 ·
Los mantenedores suelen responder en 1 día
-
[BUG]: Duplicate preposition in heading and unformatted feedback text on Strengthen Argument pageAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
AOSSIE-Org/DebateAI#801 · 1 comentario ·
Los mantenedores suelen responder en 1 día