# Extension points — reduxjs/redux-toolkit

> Canonical page: https://codevetter.com/unpack/redux-toolkit/extension-points

# Extension points — reduxjs/redux-toolkit

Scanned commit e7a8b318df28aaf50ced1e65cd4636b7508263b2 (2026-09-29). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Customization is organized around factories, endpoint definitions, middleware registration, and reducer injection. RTK Query modules augment a shared API during initialization and endpoint injection. Application-specific lifecycle callbacks and transport implementations sit above the core machinery. Companion tools expose configuration and AST-transform boundaries for extending generated or migrated code.
- buildCreateApi accepts modules implementing init; each initialized module receives injectEndpoint calls. reactHooksModule supports custom React Redux hooks, batching, selector creation, and optional side effects during render. — [packages/toolkit/src/query/createApi.ts#L347-L350](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/createApi.ts#L347-L350) [packages/toolkit/src/query/createApi.ts#L438-L440](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/createApi.ts#L438-L440) [packages/toolkit/src/query/createApi.ts#L498-L501](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/createApi.ts#L498-L501) [packages/toolkit/src/query/react/module.ts#L90-L134](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/react/module.ts#L90-L134)
- injectEndpoints adds query/mutation/infiniteQuery definitions and controls duplicate replacement through overrideExisting; enhanceEndpoints adds tag types or mutates/merges existing endpoint definitions. — [packages/toolkit/src/query/createApi.ts#L410-L434](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/createApi.ts#L410-L434) [packages/toolkit/src/query/createApi.ts#L442-L471](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/createApi.ts#L442-L471)
- Endpoints can supply queryFn instead of query/baseQuery translation, with access to API context and a baseQuery callback. fetchBaseQuery separately permits custom fetchFn, prepareHeaders, serializers, status validation, and response handlers. — [packages/toolkit/src/query/core/buildThunks.ts#L588-L607](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/core/buildThunks.ts#L588-L607) [packages/toolkit/src/query/fetchBaseQuery.ts#L24-L33](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/fetchBaseQuery.ts#L24-L33) [packages/toolkit/src/query/fetchBaseQuery.ts#L116-L149](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/fetchBaseQuery.ts#L116-L149)
- onQueryStarted receives requestId, getCacheEntry, queryFulfilled, and query-only updateCachedData; middleware resolves or rejects its lifecycle promise from terminal thunk actions. — [packages/toolkit/src/query/core/buildMiddleware/queryLifecycle.ts#L443-L487](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/core/buildMiddleware/queryLifecycle.ts#L443-L487) [packages/toolkit/src/query/core/buildMiddleware/queryLifecycle.ts#L489-L503](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/query/core/buildMiddleware/queryLifecycle.ts#L489-L503)
- combineSlices.inject updates its reducer map and recomposes reducers, refusing conflicting replacements unless overrideExisting is set; slice.injectInto delegates to that injectable interface and returns adjusted selector properties. — [packages/toolkit/src/combineSlices.ts#L431-L463](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/combineSlices.ts#L431-L463) [packages/toolkit/src/createSlice.ts#L805-L819](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/createSlice.ts#L805-L819)
- createDynamicMiddleware registers middleware by function identity and caches composition by version; createListenerMiddleware offers startListening/stopListening, while buildCreateSlice can opt into asyncThunkCreator. — [packages/toolkit/src/dynamicMiddleware/index.ts#L59-L99](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/dynamicMiddleware/index.ts#L59-L99) [packages/toolkit/src/listenerMiddleware/index.ts#L375-L399](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/listenerMiddleware/index.ts#L375-L399) [packages/toolkit/src/createSlice.ts#L1046-L1073](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/toolkit/src/createSlice.ts#L1046-L1073)
- OpenAPI generation supports multiple outputs with shared/per-output options, endpoint and parameter matchers, operationId transformers, query/mutation overrides, explicit tags, hook selection, and alternative enum representations. — [packages/rtk-query-codegen-openapi/src/index.ts#L40-L55](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/rtk-query-codegen-openapi/src/index.ts#L40-L55) [packages/rtk-query-codegen-openapi/src/types.ts#L183-L223](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/rtk-query-codegen-openapi/src/types.ts#L183-L223) [packages/rtk-query-codegen-openapi/src/types.ts#L230-L260](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/rtk-query-codegen-openapi/src/types.ts#L230-L260) [packages/rtk-query-codegen-openapi/src/generate.ts#L98-L118](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/rtk-query-codegen-openapi/src/generate.ts#L98-L118)
- Codemods plug in as transforms/<argv-name>/index.ts; createSliceBuilder exports a tsx parser and Transform. Documentation navigation is another explicit registry: new pages must be listed in docs/sidebars.ts. — [packages/rtk-codemods/bin/cli.mjs#L13-L28](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/rtk-codemods/bin/cli.mjs#L13-L28) [packages/rtk-codemods/transforms/createSliceBuilder/index.ts#L71-L88](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/rtk-codemods/transforms/createSliceBuilder/index.ts#L71-L88) [packages/rtk-codemods/transforms/createSliceBuilder/index.ts#L120-L122](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/packages/rtk-codemods/transforms/createSliceBuilder/index.ts#L120-L122) [docs/README.md#L24-L32](https://github.com/reduxjs/redux-toolkit/blob/e7a8b318df28aaf50ced1e65cd4636b7508263b2/docs/README.md#L24-L32)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
