

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
12345## Optimize List Performance with Stable Object References67Don't map or filter data before passing to virtualized lists. Virtualization8relies on object reference stability to know what changed—new references cause9full re-renders of all visible items. Attempt to prevent frequent renders at the10list-parent level.1112Where needed, use context selectors within list items.1314**Incorrect (creates new object references on every keystroke):**1516```tsx17function DomainSearch() {18 const { keyword, setKeyword } = useKeywordZustandState()19 const { data: tlds } = useTlds()2021 // Bad: creates new objects on every render, reparenting the entire list on every keystroke22 const domains = tlds.map((tld) => ({23 domain: `${keyword}.${tld.name}`,24 tld: tld.name,25 price: tld.price,26 }))2728 return (29 <>30 <TextInput value={keyword} onChangeText={setKeyword} />31 <LegendList32 data={domains}33 renderItem={({ item }) => <DomainItem item={item} keyword={keyword} />}34 />35 </>36 )37}38```3940**Correct (stable references, transform inside items):**4142```tsx43const renderItem = ({ item }) => <DomainItem tld={item} />4445function DomainSearch() {46 const { data: tlds } = useTlds()4748 return (49 <LegendList50 // good: as long as the data is stable, LegendList will not re-render the entire list51 data={tlds}52 renderItem={renderItem}53 />54 )55}5657function DomainItem({ tld }: { tld: Tld }) {58 // good: transform within items, and don't pass the dynamic data as a prop59 // good: use a selector function from zustand to receive a stable string back60 const domain = useKeywordZustandState((s) => s.keyword + '.' + tld.name)61 return <Text>{domain}</Text>62}63```6465**Updating parent array reference:**6667Creating a new array instance can be okay, as long as its inner object68references are stable. For instance, if you sort a list of objects:6970```tsx71// good: creates a new array instance without mutating the inner objects72// good: parent array reference is unaffected by typing and updating "keyword"73const sortedTlds = tlds.toSorted((a, b) => a.name.localeCompare(b.name))7475return <LegendList data={sortedTlds} renderItem={renderItem} />76```7778Even though this creates a new array instance `sortedTlds`, the inner object79references are stable.8081**With zustand for dynamic data (avoids parent re-renders):**8283```tsx84const useSearchStore = create<{ keyword: string }>(() => ({ keyword: '' }))8586function DomainSearch() {87 const { data: tlds } = useTlds()8889 return (90 <>91 <SearchInput />92 <LegendList93 data={tlds}94 // if you aren't using React Compiler, wrap renderItem with useCallback95 renderItem={({ item }) => <DomainItem tld={item} />}96 />97 </>98 )99}100101function DomainItem({ tld }: { tld: Tld }) {102 // Select only what you need—component only re-renders when keyword changes103 const keyword = useSearchStore((s) => s.keyword)104 const domain = `${keyword}.${tld.name}`105 return <Text>{domain}</Text>106}107```108109Virtualization can now skip items that haven't changed when typing. Only visible110items (~20) re-render on keystroke, rather than the parent.111112**Deriving state within list items based on parent data (avoids parent113re-renders):**114115For components where the data is conditional based on the parent state, this116pattern is even more important. For example, if you are checking if an item is117favorited, toggling favorites only re-renders one component if the item itself118is in charge of accessing the state rather than the parent:119120```tsx121function DomainItemFavoriteButton({ tld }: { tld: Tld }) {122 const isFavorited = useFavoritesStore((s) => s.favorites.has(tld.id))123 return <TldFavoriteButton isFavorited={isFavorited} />124}125```126127Note: if you're using the React Compiler, you can read React Context values128directly within list items. Although this is slightly slower than using a129Zustand selector in most cases, the effect may be negligible.130
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| nota-america/forgecat-agent-profilesprofiles/addyosmani/agent-skills/for-cursor/.cursor/rules/cmd-build.mdc · 51 | Cursor rules | no sections | 16/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/addyosmani/agent-skills/for-cursor/.cursor/rules/cmd-code-simplify.mdc · 51 | Cursor rules | testing-strategy | 30/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/addyosmani/agent-skills/for-cursor/.cursor/rules/cmd-plan.mdc · 51 | Cursor rules | no sections | 16/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/addyosmani/agent-skills/for-cursor/.cursor/rules/cmd-review.mdc · 51 | Cursor rules | no sections | 16/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/addyosmani/agent-skills/for-cursor/.cursor/rules/cmd-ship.mdc · 51 | Cursor rules | testing-strategygitdeploymentdo-not | 61/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/addyosmani/agent-skills/for-cursor/.cursor/rules/cmd-spec.mdc · 51 | Cursor rules | no sections | 16/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/addyosmani/agent-skills/for-cursor/.cursor/rules/cmd-test.mdc · 51 | Cursor rules | no sections | 16/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/addyosmani/agent-skills/for-forgecat/AGENTS.md · 51 | AGENTS.md | lint-formatstylearchdo-not | 73/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/addyosmani/agent-skills/for-forgecat/CLAUDE.md · 51 | CLAUDE.md | teststylearchagent-behaviour | 70/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-code/anthropics_claude-code_ralph-wiggum/for-cursor/.cursor/rules/cmd-cancel-ralph.mdc · 51 | Cursor rules | no sections | 16/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-code/anthropics_claude-code_ralph-wiggum/for-cursor/.cursor/rules/cmd-help.mdc · 51 | Cursor rules | no sections | 54/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-code/anthropics_claude-code_ralph-wiggum/for-cursor/.cursor/rules/cmd-ralph-loop.mdc · 51 | Cursor rules | no sections | 22/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-plugins-official/anthropics_claude-plugins-official_agent-sdk-dev/for-cursor/.cursor/rules/cmd-new-sdk-app.mdc · 51 | Cursor rules | setupstylearchdocs | 76/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-plugins-official/anthropics_claude-plugins-official_claude-md-management/for-cursor/.cursor/rules/cmd-revise-claude-md.mdc · 51 | Cursor rules | agent-behaviour | 50/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-plugins-official/anthropics_claude-plugins-official_code-review/for-cursor/.cursor/rules/cmd-code-review.mdc · 51 | Cursor rules | testing-strategygit | 35/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-plugins-official/anthropics_claude-plugins-official_commit-commands/for-cursor/.cursor/rules/cmd-clean_gone.mdc · 51 | Cursor rules | no sections | 60/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-plugins-official/anthropics_claude-plugins-official_commit-commands/for-cursor/.cursor/rules/cmd-commit-push-pr.mdc · 51 | Cursor rules | stylegit | 44/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-plugins-official/anthropics_claude-plugins-official_commit-commands/for-cursor/.cursor/rules/cmd-commit.mdc · 51 | Cursor rules | style | 44/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-plugins-official/anthropics_claude-plugins-official_example-plugin/for-cursor/.cursor/rules/cmd-example-command.mdc · 51 | Cursor rules | lint-formatstyleagent-behaviour | 58/100 | today | |
| nota-america/forgecat-agent-profilesprofiles/anthropics/claude-plugins-official/anthropics_claude-plugins-official_feature-dev/for-cursor/.cursor/rules/cmd-feature-dev.mdc · 51 | Cursor rules | stylearchgit | 56/100 | today |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 14 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 14 days ago | |
| bybren-llc/safe-agentic-workflow.cursor/rules/10-backend-python.mdc · 399 | Cursor rules | testlint-formatstylegit+4 | 97/100 | today |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/nota-america-forgecat-agent-profiles-profiles-vercel-labs-agent-skills-vercel-labs-agent-skills-react-native-skills-for-cursor-cursor-rules-rule-list-performance-function-reference)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.