8-bit-pixel-art-patter…
Create pixelated borders, shadows, and effects for 8-bit retro components. Apply when…
Use toSorted() instead of sort() to avoid mutating arrays. Apply when sorting arrays that are React props, state, or otherwise shared/referenced elsewhere.
$ npx -y skills add theorcdev/8bitcn-ui --skill js-tosorted-immutable --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/js-tosorted-immutableContext preview
The summary Claude sees to decide when to auto-load this skill.
Use toSorted() instead of sort() to avoid mutating arrays. Apply when sorting arrays that are React props, state, or otherwise shared/referenced elsewhere.
name: js-tosorted-immutable description: Use toSorted() instead of sort() to avoid mutating arrays. Apply when sorting arrays that are React props, state, or otherwise shared/referenced elsewhere.
`.sort()` mutates the array in place, which can cause bugs with React Use `.toSorted()` to create a new sorted array without state and props. mutation.
**Incorrect (mutates original array):**
function UserList({ users }: { users: User[] }) {
// Mutates the users prop array!
const sorted = useMemo(
() => users.sort((a, b) => a.name.localeCompare(b.name)),
[users]
)
return <div>{sorted.map(renderUser)}</div>
}**Correct (creates new array):**
function UserList({ users }: { users: User[] }) {
// Creates new sorted array, original unchanged
const sorted = useMemo(
() => users.toSorted((a, b) => a.name.localeCompare(b.name)),
[users]
)
return <div>{sorted.map(renderUser)}</div>
}**Why this matters in React:**
1. Props/state mutations break React's immutability model - React expects props and state to be treated as read-only 2. Causes stale closure bugs - Mutating arrays inside closures (callbacks, effects) can lead to unexpected behavior
**Browser support (fallback for older browsers):**
`.toSorted()` is available in all modern browsers (Chrome 110+, Safari 16+, Firefox 115+, Node.js 20+). For older environments, use spread operator:
// Fallback for older browsers const sorted = [...items].sort((a, b) => a.value - b.value)
**Other immutable array methods:**
Accessible retro components that you can copy and paste into your apps.Free. Open Source. Built on shadcn/ui. Documentation · Components · Blocks · Themes · Discord
Repo: theorcdev/8bitcn-ui
Create pixelated borders, shadows, and effects for 8-bit retro components. Apply when…
Create documentation with gaming-specific examples, retro styling, and 8-bit terminology.…
Optimize 8-bit animations for smooth performance. Apply when creating animated pixel art,…
Import directly from source files instead of barrel files. Apply when using libraries like…
Use next/dynamic for lazy-loading heavy components. Apply when importing large components…
Best practices for wrapping shadcn/ui components. Apply when creating 8-bit styled variants…