Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    theorcdev

    js-tosorted-immutable

    theorcdev/js-tosorted-immutable
    Coding
    1,606
    1 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Use toSorted() instead of sort() to avoid mutating arrays. Apply when sorting arrays that are React props, state, or otherwise shared/referenced elsewhere.

    SKILL.md

    Use toSorted() Instead of sort() for Immutability

    .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:

    • .toSorted() - immutable sort
    • .toReversed() - immutable reverse
    • .toSpliced() - immutable splice
    • .with() - immutable element replacement
    Recommended Servers
    Ref
    Ref
    Repository
    theorcdev/8bitcn-ui
    Files