marmelab/react-admin · warning
The override option is deprecated. You should instead wrap t
Error message
The override option is deprecated. You should instead wrap the buildQuery function provided by the dataProvider you use.
What it means
buildGraphQLProvider logs a warning (not a throw) when the deprecated override option is passed with non-empty keys in production. override was replaced by the recommended pattern of wrapping the buildQuery function returned by the buildQuery factory before handing it to buildGraphQLProvider.
Source
Thrown at packages/ra-data-graphql/src/index.ts:149
watchQuery?: GetWatchQueryOptions;
};
const buildGraphQLProvider = (options: Options): GraphqlDataProvider => {
const {
client: clientObject,
clientOptions,
introspection,
resolveIntrospection,
buildQuery: buildQueryFactory,
override = {},
...otherOptions
} = merge({}, defaultOptions, options);
if (
Object.keys(override).length > 0 &&
process.env.NODE_ENV === 'production'
) {
console.warn(
'The override option is deprecated. You should instead wrap the buildQuery function provided by the dataProvider you use.'
);
}
const client = clientObject || buildApolloClient(clientOptions);
let introspectionResults;
let introspectionResultsPromise;
const callApollo = async (raFetchMethod, resource, params) => {
if (introspection) {
if (!introspectionResultsPromise) {
introspectionResultsPromise = resolveIntrospection(
client,
introspection
);
}
View on GitHub (pinned to 051f511bb0)
Solutions
- Remove the override option and wrap the buildQuery function instead (intercept operations and adjust queries/types).
- If override is only transitional, empty it or gate it to development to silence the warning.
- Consult the current ra-data-graphql docs for the buildQuery wrapper API.
Example fix
// before
buildGraphQLProvider({ buildQuery, override: { queries: { allPosts: customQuery } } });
// after
const buildQueryCustom = (introspection) => {
const bq = buildQuery(introspection);
return (type, operation) => {
if (type === 'Post' && operation === 'GET_LIST') return customQuery;
return bq(type, operation);
};
};
buildGraphQLProvider({ buildQuery: buildQueryCustom }); Defensive patterns
Strategy: validation
Validate before calling
if (options.override && Object.keys(options.override).length > 0) {
console.warn('override is deprecated; wrap buildQuery instead');
} Type guard
const usesDeprecatedOverride = (o: { override?: object }): o is { override: object } => !!o.override && Object.keys(o.override).length > 0; Try / catch
const warn = jest.spyOn(console, 'warn').mockImplementation();
buildGraphQLProvider(opts);
expect(warn).toHaveBeenCalledWith(expect.stringContaining('override option is deprecated')); Prevention
- Migrate override usage to a wrapped buildQuery.
- Add a lint/CI grep for 'override:' in provider options.
- Watch deprecation warnings in development builds before shipping.
When it happens
Trigger: Calling buildGraphQLProvider({ buildQuery, override: { queries: {...}, types: {...} } }) with a non-empty override object while NODE_ENV === 'production'.
Common situations: Upgrading ra-data-graphql: older codebases customized queries/types via override; newer versions require a wrapped buildQuery.
Related errors
- Deprecated. FormTab now wrap their content inside a FormGrou
- useCanAccess must be used inside a <Resource> component or p
- useCreateController requires a non-empty resource prop or co
- useEditController requires a non-empty resource prop or cont
- useEditController requires an id prop or a route with an /:i
AI-assisted analysis of marmelab/react-admin@051f511bb0 (2026-08-30).
Data as JSON: /api/errors/cf4aa5aeeea71941.
Report an issue: GitHub.