The official, opinionated, batteries-included toolset for efficient Redux development
This report summarizes scanner evidence for reduxjs/redux-toolkit, a TypeScript project with 11,236 GitHub stars. SynthScan examined 144,077 lines of code across 750 source files, recording 104 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 1.1 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 102 finding(s).
Are imports declared and package/API names verified? 2 finding(s).
Are wrappers, guards, and repeated structures necessary? 45 finding(s).
Which changes need focused human review? 104 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 104 distinct pattern matches across 6 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ination-infinite-scroll/PaginationInfScrollExample.tsx | 23 | function PaginationInfScrollExample() { | CODE |
| LOW | …ursor-infinite-scroll/BidirectionalCursorInfScroll.tsx | 8 | function BidirectionalCursorInfScroll({ startingProject = { id: 25 } }) { | CODE |
| LOW | …codemods/transforms/createSliceReducerBuilder/index.ts | 23 | export function reducerPropsToBuilderExpression( | CODE |
| LOW | …es/rtk-codemods/transforms/createSliceBuilder/index.ts | 23 | export function reducerPropsToBuilderExpression( | CODE |
| LOW | …/rtk-codemods/transforms/createReducerBuilder/index.ts | 23 | export function reducerPropsToBuilderExpression( | CODE |
| LOW | packages/rtk-query-codegen-openapi/src/codegen.ts | 113 | export function generateEndpointDefinition({ | CODE |
| LOW | packages/rtk-query-codegen-openapi/src/generate.ts | 177 | function generateRegexConstantsForType( | CODE |
| LOW | packages/rtk-query-codegen-openapi/src/generate.ts | 607 | function createObjectLiteralProperty(parameters: QueryArgDefinition[], propertyName: string) { | CODE |
| LOW | packages/rtk-query-codegen-openapi/src/generate.ts | 700 | function generateQueryEndpointProps({}: { operationDefinition: OperationDefinition }): ObjectPropertyDefinitions { | CODE |
| LOW | packages/rtk-query-codegen-openapi/src/generate.ts | 705 | function generateMutationEndpointProps({}: { operationDefinition: OperationDefinition }): ObjectPropertyDefinitions { | CODE |
| LOW | packages/toolkit/etc/redux-toolkit.api.md | 289 | export function createImmutableStateInvariantMiddleware( | CODE |
| LOW | packages/toolkit/etc/redux-toolkit.api.md | 315 | export function createSerializableStateInvariantMiddleware( | CODE |
| LOW | …lkit/scripts/issue-triage/src/similarity/similarity.ts | 75 | export function calculateErrorPatternMatch( | CODE |
| LOW | …lkit/scripts/issue-triage/src/similarity/similarity.ts | 95 | export function calculateTemporalProximity( | CODE |
| LOW | …s/toolkit/scripts/issue-triage/src/reports/sections.ts | 55 | export function generateDuplicatesSection( | CODE |
| LOW | …s/toolkit/scripts/issue-triage/src/reports/sections.ts | 373 | export function generateNeedsAttentionSection( | CODE |
| LOW | packages/toolkit/src/matchers.ts | 70 | export function hasExpectedRequestMetadata( | CODE |
| LOW⚡ | packages/toolkit/src/utils.ts | 77 | export function getOrInsert<K extends object, V>( | CODE |
| LOW⚡ | packages/toolkit/src/utils.ts | 82 | export function getOrInsert<K, V>(map: Map<K, V>, key: K, value: V): V | CODE |
| LOW⚡ | packages/toolkit/src/utils.ts | 83 | export function getOrInsert<K extends object, V>( | CODE |
| LOW⚡ | packages/toolkit/src/utils.ts | 93 | export function getOrInsertComputed<K extends object, V>( | CODE |
| LOW⚡ | packages/toolkit/src/utils.ts | 98 | export function getOrInsertComputed<K, V>( | CODE |
| LOW⚡ | packages/toolkit/src/utils.ts | 103 | export function getOrInsertComputed<K extends object, V>( | CODE |
| LOW | …es/toolkit/src/serializableStateInvariantMiddleware.ts | 188 | export function createSerializableStateInvariantMiddleware( | CODE |
| LOW | …ckages/toolkit/src/actionCreatorInvariantMiddleware.ts | 21 | export function createActionCreatorInvariantMiddleware( | CODE |
| LOW | …kages/toolkit/src/immutableStateInvariantMiddleware.ts | 195 | export function createImmutableStateInvariantMiddleware( | CODE |
| LOW | packages/toolkit/src/createReducer.ts | 105 | * function isActionWithNumberPayload( | COMMENT |
| LOW | packages/toolkit/src/query/endpointDefinitions.ts | 1304 | export function isInfiniteQueryDefinition( | CODE |
| LOW | packages/toolkit/src/query/core/buildSlice.ts | 114 | function updateQuerySubstateIfExists( | CODE |
| LOW | packages/toolkit/src/query/core/buildSlice.ts | 144 | function updateMutationSubstateIfExists( | CODE |
| LOW | packages/toolkit/src/query/core/buildSlice.ts | 615 | function writeProvidedTagsForQueries( | CODE |
| LOW | packages/toolkit/src/query/core/buildInitiate.ts | 537 | function buildInitiateInfiniteQuery( | CODE |
| LOW | packages/toolkit/src/query/core/buildSelectors.ts | 271 | function buildInfiniteQuerySelector( | CODE |
| LOW | …ages/toolkit/src/query/core/buildMiddleware/polling.ts | 172 | function findLowestPollingInterval( | CODE |
| LOW | …lkit/src/query/core/buildMiddleware/cacheCollection.ts | 75 | function anySubscriptionsRemainingForKey(queryCacheKey: string) { | CODE |
| LOW | packages/toolkit/src/query/tests/createApi.test.ts | 1232 | function expectFailureHandlersToHaveBeenCalled({ | CODE |
| LOW⚡ | packages/toolkit/src/query/utils/getOrInsert.ts | 5 | export function getOrInsert<K extends object, V>( | CODE |
| LOW⚡ | packages/toolkit/src/query/utils/getOrInsert.ts | 10 | export function getOrInsert<K, V>(map: Map<K, V>, key: K, value: V): V | CODE |
| LOW⚡ | packages/toolkit/src/query/utils/getOrInsert.ts | 11 | export function getOrInsert<K extends object, V>( | CODE |
| LOW⚡ | packages/toolkit/src/query/utils/getOrInsert.ts | 21 | export function getOrInsertComputed<K extends object, V>( | CODE |
| LOW⚡ | packages/toolkit/src/query/utils/getOrInsert.ts | 26 | export function getOrInsertComputed<K, V>( | CODE |
| LOW⚡ | packages/toolkit/src/query/utils/getOrInsert.ts | 31 | export function getOrInsertComputed<K extends object, V>( | CODE |
| LOW | …s/toolkit/src/query/utils/copyWithStructuralSharing.ts | 7 | export function copyWithStructuralSharing(oldObj: any, newObj: any): any { | CODE |
| LOW | packages/toolkit/src/query/react/buildHooks.ts | 1614 | function infiniteQueryStatePreSelector( | CODE |
| LOW | packages/toolkit/src/query/react/buildHooks.ts | 1914 | function usePromiseRefUnsubscribeOnUnmount( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/publish-ci/react-native/README.md | 7 | ## Step 1: Start the Metro Server | COMMENT |
| LOW | examples/publish-ci/react-native/README.md | 21 | ## Step 2: Start your Application | COMMENT |
| LOW | examples/publish-ci/react-native/README.md | 49 | ## Step 3: Modifying your App | COMMENT |
| LOW | examples/publish-ci/expo/README.md | 15 | ## Step 1: Start the Metro Server | COMMENT |
| LOW | examples/publish-ci/expo/README.md | 31 | ## Step 2: Start your Application | COMMENT |
| LOW | examples/publish-ci/expo/README.md | 63 | ## Step 3: Modifying your App | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 23 | // Step 1: Verify gh CLI is available and authenticated | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 28 | // Step 2: Create GitHub client | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 31 | // Step 3: Fetch all open issues and PRs | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 35 | // Step 4: Categorize all items | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 39 | // Step 5: Display summary statistics | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 49 | // Step 6: Display categorization statistics | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 95 | // Step 7: Run similarity detection | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 108 | // Step 8: Display sample categorized issues | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 146 | // Step 9: Display sample similarity results | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 189 | // Step 10: Export categorization results to JSON | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 253 | // Step 11: Generate Markdown reports | COMMENT |
| LOW⚡ | …s/toolkit/scripts/issue-triage/src/categorize/index.ts | 15 | // Step 1: Categorize the issue | COMMENT |
| LOW⚡ | …s/toolkit/scripts/issue-triage/src/categorize/index.ts | 18 | // Step 2: Calculate scores | COMMENT |
| LOW⚡ | …s/toolkit/scripts/issue-triage/src/categorize/index.ts | 21 | // Step 3: Detect flags | COMMENT |
| LOW⚡ | …s/toolkit/scripts/issue-triage/src/categorize/index.ts | 24 | // Step 4: Combine into categorized issue | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 23 | // Step 1: Verify gh CLI is available and authenticated | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 28 | // Step 2: Create GitHub client | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 31 | // Step 3: Fetch all open issues and PRs | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 35 | // Step 4: Categorize all items | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 39 | // Step 5: Display summary statistics | COMMENT |
| LOW⚡ | packages/toolkit/scripts/issue-triage/src/index.ts | 49 | // Step 6: Display categorization statistics | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 95 | // Step 7: Run similarity detection | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 108 | // Step 8: Display sample categorized issues | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 146 | // Step 9: Display sample similarity results | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 189 | // Step 10: Export categorization results to JSON | COMMENT |
| LOW | packages/toolkit/scripts/issue-triage/src/index.ts | 253 | // Step 11: Generate Markdown reports | COMMENT |
| LOW⚡ | …s/toolkit/scripts/issue-triage/src/categorize/index.ts | 15 | // Step 1: Categorize the issue | COMMENT |
| LOW⚡ | …s/toolkit/scripts/issue-triage/src/categorize/index.ts | 18 | // Step 2: Calculate scores | COMMENT |
| LOW⚡ | …s/toolkit/scripts/issue-triage/src/categorize/index.ts | 21 | // Step 3: Detect flags | COMMENT |
| LOW⚡ | …s/toolkit/scripts/issue-triage/src/categorize/index.ts | 24 | // Step 4: Combine into categorized issue | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/toolkit/src/tsHelpers.ts | 12 | * return True if T is `any`, otherwise return False | COMMENT |
| HIGH | packages/toolkit/src/tsHelpers.ts | 24 | * return True if T is `unknown`, otherwise return False | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pnpm-workspace.yaml | 1 | # pnpm workspace definition and settings. | COMMENT |
| LOW | pnpm-workspace.yaml | 21 | COMMENT | |
| LOW | pnpm-workspace.yaml | 41 | # @testing-library/react-render-stream's unmet `jest` peer) - 54 packages the | COMMENT |
| LOW | examples/query/react/kitchen-sink/src/setupTests.ts | 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. | COMMENT |
| LOW | examples/publish-ci/next/pnpm-workspace.yaml | 1 | # This example is deliberately its own pnpm workspace root, not a member of the | COMMENT |
| LOW | examples/publish-ci/react-native/pnpm-workspace.yaml | 1 | # This example is deliberately its own pnpm workspace root, not a member of the | COMMENT |
| LOW | examples/publish-ci/expo/pnpm-workspace.yaml | 1 | # This example is deliberately its own pnpm workspace root, not a member of the | COMMENT |
| LOW | examples/publish-ci/vite/pnpm-workspace.yaml | 1 | # This example is deliberately its own pnpm workspace root, not a member of the | COMMENT |
| LOW | examples/publish-ci/node/pnpm-workspace.yaml | 1 | # This example is deliberately its own pnpm workspace root, not a member of the | COMMENT |
| LOW | packages/rtk-query-codegen-openapi/test/vitest.setup.ts | 21 | // print: (val) => { | COMMENT |
| LOW | .github/workflows/tests.yml | 521 | run: pnpm install | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …es/query/react/prefetching/public/mockServiceWorker.js | 110 | async function handleRequest(event, requestId) { | CODE |
| LOW | …ples/query/react/mutations/public/mockServiceWorker.js | 110 | async function handleRequest(event, requestId) { | CODE |
| LOW | …uery/react/graphql-codegen/public/mockServiceWorker.js | 110 | async function handleRequest(event, requestId) { | CODE |
| LOW | …s/query/react/kitchen-sink/public/mockServiceWorker.js | 111 | async function handleRequest(event, requestId) { | CODE |
| LOW | …amples/query/react/graphql/public/mockServiceWorker.js | 111 | async function handleRequest(event, requestId) { | CODE |
| LOW | …ery/react/infinite-queries/public/mockServiceWorker.js | 123 | async function handleRequest(event, requestId) { | CODE |
| LOW | …query/react/authentication/public/mockServiceWorker.js | 110 | async function handleRequest(event, requestId) { | CODE |
| LOW | …ry/react/optimistic-update/public/mockServiceWorker.js | 110 | async function handleRequest(event, requestId) { | CODE |
| LOW | examples/publish-ci/next/public/mockServiceWorker.js | 140 | async function handleRequest(event, requestId) { | CODE |
| LOW | examples/publish-ci/vite/public/mockServiceWorker.js | 140 | async function handleRequest(event, requestId) { | CODE |