webapp/channels/src/packages/mattermost-redux/CLAUDE.OPTIONAL.md
packages/mattermost-redux/mattermost-redux package for local development.state.entities.*) and API actions.src/
├── actions/ # API actions (channels.ts, users.ts, posts.ts, etc.)
├── action_types/ # Action type constants
├── reducers/
│ ├── entities/ # Entity reducers (one per domain)
│ └── requests/ # Request status tracking
├── selectors/
│ ├── entities/ # Entity selectors
│ └── create_selector/ # Memoized selector helper
├── constants/ # App constants
├── store/ # Store configuration helpers
├── utils/ # Utility functions
└── client/ # Client4 re-export
All state managed here lives under state.entities (users, channels, posts, teams, etc.).
UI-specific state lives outside this package in state.views.
Import from mattermost-redux using the package alias:
// Actions
import {getUser} from 'mattermost-redux/actions/users';
// Selectors
import {getCurrentUser} from 'mattermost-redux/selectors/entities/users';
// Constants
import {General} from 'mattermost-redux/constants';
// Types come from @mattermost/types
import {UserProfile} from '@mattermost/types/users';
state.entities.*), request status tracking, or shared selectors.platform/client) or action helpers.action_types/reducers/entities/reducers/entities/index.tsselectors/entities/actions/{data} or {error} objects; keep request statuses updated via RequestTypes.client/index.ts, Types, and relevant action/reducer files.__tests__ where behaviors are complex.