Expensify

app-coding-standards

Provides coding standards for the Expensify App's React Native code, including performance patterns, consistency rules, and clean React architecture. Use when writing, modifying, or reviewing App code.

Expensify 5,071 4,073 Updated 1mo ago

Resources

1
GitHub

Install

npx skillscat add expensify/app/app-coding-standards

Install via the SkillsCat registry.

SKILL.md

Expensify App Coding Standards

Coding standards for the Expensify App. Each standard is a standalone file in rules/ with reasoning, examples, and applicability conditions.

Categories

Category Prefix Focus
Performance PERF-* Render optimization, memo patterns, useEffect hygiene, data selection
Consistency CONSISTENCY-* Platform checks, magic values, unused props, ESLint discipline, localization, file naming, JSDoc
Clean React Patterns CLEAN-REACT-PATTERNS-* Composition, component ownership, state structure, prop typing, function components
UI UI-* Loading indicators, scrollable pages, styling conventions

Quick Reference

Performance

  • PERF-1 — No spread in renderItem
  • PERF-2 — Return early before expensive work
  • PERF-3 — Use OnyxListItemProvider in renderItem
  • PERF-5 — Shallow over deep comparisons
  • PERF-6 — Derive state from props
  • PERF-7 — Reset via key prop
  • PERF-8 — Handle events in handlers
  • PERF-9 — No useEffect chains
  • PERF-10 — No useEffect parent communication
  • PERF-11 — Optimize data selection
  • PERF-12 — Prevent memory leaks
  • PERF-13 — Hoist iterator-independent calls
  • PERF-14 — Use useSyncExternalStore
  • PERF-15 — Clean up async Effects
  • PERF-16 — Guard double initialization
  • PERF-17 — Pass raw source, index on demand (no pre-built digest)
  • PERF-18 — Use usePreMountDestination for RHP pre-mounting
  • PERF-19 — Collection selectors return only what the consumer uses

Consistency

Clean React Patterns

UI

  • UI-1 — Use the correct loading indicator based on navigation context
  • UI-2 — New pages must be scrollable
  • UI-3 — Do not use inline style objects

Usage

During development: When writing or modifying src/ files, consult the relevant standard files for detailed conditions, examples, and exceptions.

During review: The code-inline-reviewer agent loads all standards from this directory. See .claude/agents/code-inline-reviewer.md.