{"record":{"id":"232d5b91c15bcffa","repo":"marmelab/react-admin","slug":"datagridconfigurable-does-not-support-the-optimize","errorCode":null,"errorMessage":"DatagridConfigurable does not support the optimized prop","messagePattern":"DatagridConfigurable does not support the optimized prop","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/ra-ui-materialui/src/list/datagrid/DatagridConfigurable.tsx","lineNumber":40,"sourceCode":" *\n * export const PostList = () => (\n *     <List>\n *         <DatagridConfigurable>\n *             <TextField source=\"id\" />\n *             <TextField source=\"title\" />\n *             <TextField source=\"author\" />\n *             <TextField source=\"year\" />\n *         </DatagridConfigurable>\n *     </List>\n * );\n */\nexport const DatagridConfigurable = ({\n    preferenceKey,\n    omit,\n    ...props\n}: DatagridConfigurableProps) => {\n    if (props.optimized) {\n        throw new Error(\n            'DatagridConfigurable does not support the optimized prop'\n        );\n    }\n\n    const translate = useTranslate();\n    const resource = useResourceContext(props);\n    const finalPreferenceKey = preferenceKey || `${resource}.datagrid`;\n\n    const [availableColumns, setAvailableColumns] = useStore<\n        ConfigurableDatagridColumn[]\n    >(`preferences.${finalPreferenceKey}.availableColumns`, []);\n\n    const [_, setOmit] = useStore<string[] | undefined>(\n        `preferences.${finalPreferenceKey}.omit`,\n        omit\n    );\n\n    React.useEffect(() => {","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/marmelab/react-admin/blob/051f511bb0afb5ea565c2d3728bf4dab0a6fa5e0/packages/ra-ui-materialui/src/list/datagrid/DatagridConfigurable.tsx#L22-L58","documentation":"<DatagridConfigurable> lets end users show/hide and reorder columns via preferences. It does not implement the row-expansion virtualization path that `optimized` enables on the plain <Datagrid>, so the component rejects the `optimized` prop up front instead of silently misbehaving.","triggerScenarios":"Passing `optimized` to <DatagridConfigurable>, e.g. copying a `<Datagrid optimized>` usage and swapping the component name, or a shared column-config wrapper that forwards all props including optimized.","commonSituations":"Migrating a perf-tuned `<Datagrid optimized>` to the configurable variant; a generic table wrapper that spreads `{...props}` into DatagridConfigurable.","solutions":["Remove the `optimized` prop from <DatagridConfigurable>.","If row expansion/perf behavior is required, use the plain <Datagrid> instead of the configurable one.","Filter `optimized` out in any wrapper component before forwarding props."],"exampleFix":"// before\n<DatagridConfigurable optimized omit={omit}>...\n// after\n<DatagridConfigurable omit={omit}>...","handlingStrategy":"validation","validationCode":"if ('optimized' in props) {\n  throw new Error('Use <Datagrid> (not DatagridConfigurable) for the optimized prop');\n}","typeGuard":"const isOptimizable = (p: { optimized?: boolean }): p is { optimized: true } => p.optimized === true;","tryCatchPattern":null,"preventionTips":["Never copy `optimized` usage from <Datagrid> examples onto DatagridConfigurable.","Strip `optimized` in shared table wrapper components.","Pick either configurability or the optimized datagrid at design time, not per-instance."],"tags":["react-admin","datagrid","unsupported-prop","configurable"],"backgroundTag":"unsupported-prop","analyzedSha":"051f511bb0afb5ea565c2d3728bf4dab0a6fa5e0","analyzedAt":"2026-08-30T02:28:14.926Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}