Skip to content
Back to skills

Metamask Official Selector Patterns

ASecurity

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`, `...

  • 78 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 22, 2026
developmentgorefactoringperformance

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 22, 2026

npx -y skills add jiayaoqijia/cryptoskill --skill metamask-official-selector-patterns --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Metamask Official Selector Patterns?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Metamask Official Selector Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jiayaoqijia-metamask-official-selector-patterns/badge)](https://www.skillsdirectory.com/skills/jiayaoqijia-metamask-official-selector-patterns)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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`.
---

# 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`, or `backgroundState`

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:

1. Search for an existing named selector before adding one.
2. Put new selectors in `app/selectors/<feature>.ts` (or the feature’s `selectors/` folder).
3. Add a leaf input selector that reads the controller slice. Compose derived selectors on top of it.
4. Narrow the input to the smallest slice. Choose `createSelector` (primitive output) or `createDeepEqualSelector` (object / array when the narrowed input still churns and the payload is small enough to compare).
5. Name it `select<Feature><Thing>`.
6. In components and hooks, call `useSelector(selectX)` with that named selector.
7. Add collocated unit tests with at least two state variants.

Files in this skill

  • LICENSE1 KB
  • SKILL.md1.9 KB
  • SOURCE.md367 B
  • TRUST.auto.yaml2.2 KB
  • repos/metamask-mobile.md5.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.