Skip to content

useGenerateChangeMessage

Automatically generates a human-readable message describing the changes made to a record by comparing the new data with the existing record.

This feature requires a valid is an Enterprise Edition subscription.

import { EditBase } from 'ra-core';
import { SimpleForm, TextInput } from 'my-react-admin-ui-library';
import { useGenerateChangeMessage } from '@react-admin/ra-core-ee';
const ProductEdit = () => {
const generateChangeMessage = useGenerateChangeMessage();
const handleSave = data => {
const message = generateChangeMessage({ data });
// message might be: "Changed name, description" or "Initial revision"
console.log(message);
};
return (
<EditBase mutationOptions={{ onSuccess: handleSave }}>
<SimpleForm>
<TextInput source="name" />
<TextInput source="description" />
</SimpleForm>
</EditBase>
);
};

Parameters:

  • props.resource?: The resource name (defaults to current resource context)
  • props.record?: The original record (defaults to current record context)

Returns: A function that takes { data, record?, resource? } and returns a localized message describing the changes:

  • "Initial revision" for new records
  • "No changes" when no fields were modified
  • "Changed [field]" for single field changes
  • "Changed [field1], [field2], ..." for multiple field changes

Internationalization: The returned message is fully internationalized using the i18n provider. The following translation keys are used:

  • ra-history.on_save.initial_changes: “Initial revision”
  • ra-history.on_save.no_changes: “No changes”
  • ra-history.on_save.one_change: “Changed %{field}”
  • ra-history.on_save.many_changes: “Changed %{fields}”