High-performance replacement for React Native's FlatList, built on recycling principles. Used by thousands of React Native apps for smooth scrolling with large datasets.
src/— library source code (TypeScript)fixture/react-native/— React Native test/demo appdist/— compiled output (NOT auto-rebuilt on branch switch)
estimatedItemSize does NOT exist as a prop on FlashList. Do not use it, suggest it, or add it.
yarn build # compile TypeScript to dist/
yarn test --forceExit
yarn type-check
yarn lintImportant: dist/ is NOT rebuilt on branch switch. Always run yarn build after checking out a different branch.
Node 22.18.0
- Use conventional commits:
fix(scope): description,feat(scope): description - Scope examples:
layout,hooks,scroll,sticky-headers,recycling,viewability - Do NOT include any AI attribution (no
Co-Authored-ByAI lines, no "Generated by" or "Assisted by" text) - PR titles should be under 70 characters and match the commit format
- Link issues with
Fixes #<number>in the commit/PR body
Skills are reusable workflows in .claude/skills/. Use them when relevant:
| Skill | When to use |
|---|---|
fix-github-issue |
Fixing a bug end-to-end: reproduce, diagnose, fix, verify on simulator, PR |
raise-pr |
Creating a PR with proper conventional commit format and no AI attribution |
review-and-test |
Reviewing a PR or branch: unit tests, type-check, lint, device testing, RTL/LTR |
triage-issue |
Classifying an issue (P0/P1/P2), finding duplicates, applying labels |
agent-device |
Interacting with iOS simulator or Android emulator (snapshot-based coordinates) |
upgrade-react-native |
Upgrading the fixture app's React Native version |
When you discover something important during a session — a pitfall, a non-obvious behavior, a debugging technique, or a pattern that would save time in the future — update the relevant skill file or this file so the knowledge persists.
What to capture:
- New pitfalls or edge cases discovered while fixing bugs
- Debugging techniques that worked (or didn't)
- Corrections to existing instructions that turned out to be wrong
- Non-obvious behaviors of FlashList, React Native, or the build system
Where to put it:
- Bug/fix patterns →
fix-github-issueskill (Common Pitfalls section) - Testing edge cases →
review-and-testskill (Edge Cases section) - Device interaction quirks →
agent-deviceskill - Project-wide facts → this file (
CLAUDE.md)
How:
- Include the update in the same PR as the fix (not a separate PR)
- Keep entries concise — one line per pitfall, with enough context to be useful
- On CI, only add critical learnings (things that would cause repeated failures). Minor improvements should wait for interactive sessions.