selector-patterns
Redux selector authoring for MetaMask Mobile: named `select<Feature><Thing>` selectors in `app/selectors/`, `createSelector` / `createDeepEqualSelector` from reselect, leaf reads of `state.engine.backgroundState`, and `useSelector(selectX)` in UI. Use when adding or creating a selector, updating or refactoring an existing selector, moving inline `useSelector` derivation out of a component or hook, or answering questions about selectors, reselect, `createSelector`, `createDeepEqualSelector`, `app/selectors`, or `backgroundState`. Version-gated flag selectors go to `feature-flags`. Memoization audits of existing selectors go to `performance`.
- License 许可
- MIT
- 最近更新
- 2026-11-15
- Stars
- ★ 81
- Forks
- 17
01 前言 Front Matter
- name
- selector-patterns
- description
- Redux selector authoring for MetaMask Mobile: named `select<Feature><Thing>` selectors in `app/selectors/`, `createSelector` / `createDeepEqualSelector` from reselect, leaf reads of `state.engine.backgroundState`, and `useSelector(selectX)` in UI. Use when adding or creating a selector, updating or refactoring an existing selector, moving inline `useSelector` derivation out of a component or hook, or answering questions about selectors, reselect, `createSelector`, `createDeepEqualSelector`, `app/selectors`, or `backgroundState`. Version-gated flag selectors go to `feature-flags`. Memoization audits of existing selectors go to `performance`.
02 资源文件 4
- 许可证LICENSE1.0 KB
- 参考文档repos/metamask-mobile.md5.9 KB
- 参考文档SOURCE.md367 B
- 参考文档TRUST.auto.yaml2.2 KB
03 SKILL.md 正文
Selector patterns
When To Use
- Implement / add / create a Redux selector
- Update / change / refactor an existing selector
- Questions about selectors,
useSelector,createSelector,createDeepEqualSelector,reselect,app/selectors, orbackgroundState
Version-gated flag selectors (validatedVersionGatedFeatureFlag, selectRemoteFeatureFlags, app/selectors/featureFlagController/) → feature-flags.
Memoization audits of existing selectors (broken identity, cascade re-renders) → performance.
Workflow
Q&A: answer from the overlay, then stop.
Implement or update:
- Search for an existing named selector before adding one.
- Put new selectors in
app/selectors/<feature>.ts(or the feature’sselectors/folder). - Add a leaf input selector that reads the controller slice. Compose derived selectors on top of it.
- Narrow the input to the smallest slice. Choose
createSelector(primitive output) orcreateDeepEqualSelector(object / array when the narrowed input still churns and the payload is small enough to compare). - Name it
select<Feature><Thing>. - In components and hooks, call
useSelector(selectX)with that named selector. - Add collocated unit tests with at least two state variants.
04 同仓库更多 Skills
recipe-performance
Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold/warm/background-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout/paint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.
mexc-spot-websocket
MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.
mexc-spot-rest
MEXC Spot REST workflows for public data, signed account requests, orders, wallet/admin actions, and secure signing without exposing API keys.
mexc-futures-websocket
MEXC Futures WebSocket workflows for public streams, private account/order/position streams, ping/pong, subscriptions, and depth maintenance.
0xklen-version-and-refresh-sanctions-lists
暂无简介
verify-tests-cover-changed-lines
Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.