Nicholai 827f13a2db feat(skills): add agent skills for claude code
add web-perf and vercel-react-best-practices skills from skills.sh
to improve ai assistance for this next.js + cloudflare workers project.

- web-perf: core web vitals analysis and performance auditing
- vercel-react-best-practices: react/next.js optimization patterns
- wrangler: cloudflare workers cli guidance (already existed)
2026-01-22 11:40:05 -07:00

973 B

title impact impactDescription tags
Defer State Reads to Usage Point MEDIUM avoids unnecessary subscriptions rerender, searchParams, localStorage, optimization

Defer State Reads to Usage Point

Don't subscribe to dynamic state (searchParams, localStorage) if you only read it inside callbacks.

Incorrect (subscribes to all searchParams changes):

function ShareButton({ chatId }: { chatId: string }) {
  const searchParams = useSearchParams()

  const handleShare = () => {
    const ref = searchParams.get('ref')
    shareChat(chatId, { ref })
  }

  return <button onClick={handleShare}>Share</button>
}

Correct (reads on demand, no subscription):

function ShareButton({ chatId }: { chatId: string }) {
  const handleShare = () => {
    const params = new URLSearchParams(window.location.search)
    const ref = params.get('ref')
    shareChat(chatId, { ref })
  }

  return <button onClick={handleShare}>Share</button>
}