mr4's picture
Upload 136 files
fd8cdf5 verified

React Framework Addendum

Injected into file-analyzer and architecture-analyzer prompts when React is detected. Do NOT use as a standalone prompt β€” always appended to the base prompt template.

React Project Structure

When analyzing a React project, apply these additional conventions on top of the base analysis rules.

Canonical File Roles

File / Pattern Role Tags
src/App.tsx Root application component β€” mounts providers, router, and top-level layout entry-point, ui
components/*.tsx, components/**/*.tsx Reusable UI components ui
hooks/*.ts, hooks/*.tsx Custom React hooks β€” encapsulate reusable stateful logic service, utility
contexts/*.tsx, context/*.tsx React Context providers and consumers β€” shared state across component tree service, state
pages/*.tsx, views/*.tsx Page-level components mapped to routes ui, routing
utils/*.ts, helpers/*.ts Pure utility functions β€” formatting, validation, transformations utility
types/*.ts, types/*.d.ts TypeScript type definitions and interfaces type-definition
services/*.ts, api/*.ts API client functions and data-fetching logic service
store/*.ts, slices/*.ts State management (Redux, Zustand, etc.) service, state
constants/*.ts Application-wide constants and enums config
__tests__/*.tsx, *.test.tsx, *.spec.tsx Unit and integration tests test

Edge Patterns to Look For

Component composition β€” When a parent component renders a child component in its JSX return, create contains edges from the parent to the child. These edges represent the component tree hierarchy.

Hook usage β€” When a component or hook imports and calls a custom hook (useX), create depends_on edges from the consumer to the hook module. Hooks are the primary mechanism for shared logic in React.

Context provider/consumer β€” When a Context provider wraps components, create publishes edges from the provider to the context definition. When components call useContext or use a custom context hook, create subscribes edges from the consumer to the context.

Props drilling chains β€” When props are passed through multiple component layers without being used, create depends_on edges along the chain to surface the coupling depth.

Architectural Layers for React

Assign nodes to these layers when detected:

Layer ID Layer Name What Goes Here
layer:ui UI Layer components/, pages/, views/, layout components
layer:service Service Layer hooks/, contexts/, services/, api/, store/
layer:types Types Layer types/, shared TypeScript interfaces and type definitions
layer:utility Utility Layer utils/, helpers/, pure functions
layer:config Config Layer App.tsx, router configuration, provider setup, constants
layer:test Test Layer __tests__/, *.test.tsx, *.spec.tsx

Notable Patterns to Capture in languageLesson

  • Component composition over inheritance: React favors composing components via props and children rather than class inheritance hierarchies
  • Custom hooks for reusable logic: Hooks prefixed with use extract stateful logic into shareable modules without changing the component tree
  • React.memo for performance: Components wrapped in React.memo skip re-renders when props are unchanged β€” indicates performance-sensitive paths
  • Controlled vs. uncontrolled components: Controlled components derive state from props; uncontrolled components manage internal state via refs
  • Render props pattern: Components that accept a function as children or a render prop to delegate rendering decisions to the consumer