rerender-lazy-state

Use Lazy State Initialization

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "rerender-lazy-state" with this command: npx skills add theorcdev/8bitcn-ui/theorcdev-8bitcn-ui-rerender-lazy-state

Use Lazy State Initialization

Pass a function to useState for expensive initial values. Without the function form, the initializer runs on every render even though the value is only used once.

Incorrect (runs on every render):

function FilteredList({ items }: { items: Item[] }) { // buildSearchIndex() runs on EVERY render, even after initialization const [searchIndex, setSearchIndex] = useState(buildSearchIndex(items)) const [query, setQuery] = useState('')

// When query changes, buildSearchIndex runs again unnecessarily return <SearchResults index={searchIndex} query={query} /> }

function UserProfile() { // JSON.parse runs on every render const [settings, setSettings] = useState( JSON.parse(localStorage.getItem('settings') || '{}') )

return <SettingsForm settings={settings} onChange={setSettings} /> }

Correct (runs only once):

function FilteredList({ items }: { items: Item[] }) { // buildSearchIndex() runs ONLY on initial render const [searchIndex, setSearchIndex] = useState(() => buildSearchIndex(items)) const [query, setQuery] = useState('')

return <SearchResults index={searchIndex} query={query} /> }

function UserProfile() { // JSON.parse runs only on initial render const [settings, setSettings] = useState(() => { const stored = localStorage.getItem('settings') return stored ? JSON.parse(stored) : {} })

return <SettingsForm settings={settings} onChange={setSettings} /> }

Use lazy initialization when computing initial values from localStorage/sessionStorage, building data structures (indexes, maps), reading from the DOM, or performing heavy transformations.

For simple primitives (useState(0) ), direct references (useState(props.value) ), or cheap literals (useState({}) ), the function form is unnecessary.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

fumadocs-mdx-structure

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

rendering-animate-svg

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

8-bit-pixel-art-patterns

No summary provided by upstream source.

Repository SourceNeeds Review