marmelab/react-admin · error · Error
Missing at least one of the following props: render, field…
Error message
Missing at least one of the following props: render, field, children, or source
What it means
<DataTableCell> renders a single cell value and needs one of four ways to obtain content: a `render` function, a `field` element, `children`, or a `source` field name (also used for column hiding). When all four are absent it throws, since there is nothing to render and no way to identify the column.
Solutions
- Add a `source` prop: `<DataTableCell source="name" />`.
- Or pass a `render` function: `<DataTableCell render={record => record.name} />`.
- Or supply `field`/`children` with a field element to render.
Example fix
// before <DataTableCell label="Name" /> // after <DataTableCell label="Name" source="name" />
Defensive patterns
Strategy: validation
Validate before calling
if (!render && !field && !children && !source) {
throw new Error('DataTableCell needs one of render, field, children, or source');
} Type guard
const renderableCell = (p: { render?: Function; field?: React.ReactElement; children?: React.ReactNode; source?: string }): boolean =>
!!p.render || !!p.field || React.Children.count(p.children) > 0 || typeof p.source === 'string'; Prevention
- Always give DataTableCell a `source` at minimum.
- Remember `label` alone is cosmetic and never satisfies the requirement.
- Centralize column definitions in typed configs that require one data prop.
When it happens
Trigger: Rendering <DataTableCell> with none of render/field/children/source, e.g. `<DataTableCell label="Name" />` (label alone is not a source of data) or a props spread that omits all four.
Common situations: Building custom DataTable columns and passing only cosmetic props; conditional rendering where children resolve to nothing; copy-pasting a header-only column config into a cell.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- components should be used inside a component or provided…
- requires either a `render` prop or `children` prop
- components should be used inside a component or provided…
- DatagridRow expects an id prop
- DataTableRow can only be used within a RecordContext or be…
AI-assisted analysis of marmelab/react-admin@051f511bb0 (2026-08-30).
Data as JSON: /api/errors/61d8468dc4734f93.
Report an issue: GitHub.
Appendix: source
Thrown at packages/ra-ui-materialui/src/list/datatable/DataTableCell.tsx:47
source,
sortByOrder,
label,
sx,
...rest
} = props;
const { storeKey, defaultHiddenColumns } =
useDataTableStoreContext();
const [hiddenColumns] = useStore<string[]>(
storeKey,
defaultHiddenColumns
);
const record = useRecordContext();
const isColumnHidden = hiddenColumns.includes(
source ?? (label as string)
);
if (isColumnHidden) return null;
if (!render && !field && !children && !source) {
throw new Error(
'Missing at least one of the following props: render, field, children, or source'
);
}
const sxValue = {
...(cellSx && record ? cellSx(record) : {}),
...sx,
} as SxProps;
const fieldValue = get(record, source!);
return (
<TableCellStyled
ref={ref}
className={clsx(
DataTableClasses.rowCell,
className,
cellClassName,
`column-${source}`
)}View on GitHub (pinned to 051f511bb0)