React Review Audit
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 静か
- 技術スタック
- nextjs, react, typescript
調査の方向性
Start with the diagnostics in apps/demo/src/app.tsx, apps/website/app/page.tsx, apps/website/app/claude-spinner.tsx, and apps/website/package.json, using the listed line numbers and rule guidance. Review each warning and error, then rerun the React Review audit; done means the reported reduced-motion error and all listed warnings are resolved.
索引モデルが issue の本文から書いたものです。
説明
| ❌ 1 error, ⚠️ 22 warnings |
Copy as prompt
Fix the following React Review diagnostics in my codebase.
## Errors (1)
1. [error] require-reduced-motion — apps/website/package.json:0
Project uses a motion library but has no prefers-reduced-motion handling — required for accessibility (WCAG 2.3.3)
## Warnings (22)
2. [warning] exhaustive-deps — apps/demo/src/app.tsx:72
React Hook `useEffect` is missing dependency `inputValue.trim` — list it in the dependency array, or call the hook unconditionally.
3. [warning] no-array-index-key — apps/demo/src/app.tsx:96
Array index in `key` doesn't uniquely identify the element — re-renders may use stale state.
4. [warning] no-array-index-as-key — apps/demo/src/app.tsx:96
Array index "index" used as key — causes bugs when list is reordered or filtered
5. [warning] control-has-associated-label — apps/demo/src/app.tsx:107
A control must be associated with a text label — add visible text, `aria-label`, or `aria-labelledby`.
6. [warning] button-has-type — apps/demo/src/app.tsx:118
`<button>` elements must have an explicit `type` attribute.
7. [warning] nextjs-missing-metadata — apps/website/app/page.tsx:6
Page without metadata or generateMetadata export — hurts SEO
8. [warning] use-lazy-motion — apps/website/app/page.tsx:9
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size
9. [warning] exhaustive-deps — apps/website/app/page.tsx:261
React Hook `useEffect` is missing dependency `config` — list it in the dependency array, or call the hook unconditionally.
10. [warning] click-events-have-key-events — apps/website/app/page.tsx:579
Visible non-interactive elements with click handlers must have a corresponding keyboard listener (`onKeyUp`, `onKeyDown`, or `onKeyPress`).
11. [warning] no-static-element-interactions — apps/website/app/page.tsx:579
Static HTML elements with event handlers require a role — add `role="…"` or use a semantic HTML element instead.
12. [warning] button-has-type — apps/website/app/page.tsx:596
`<button>` elements must have an explicit `type` attribute.
13. [warning] no-array-index-key — apps/website/app/page.tsx:758
Array index in `key` doesn't uniquely identify the element — re-renders may use stale state.
14. [warning] no-array-index-as-key — apps/website/app/page.tsx:758
Array index "index" used as key — causes bugs when list is reordered or filtered
15. [warning] click-events-have-key-events — apps/website/app/page.tsx:759
Visible non-interactive elements with click handlers must have a corresponding keyboard listener (`onKeyUp`, `onKeyDown`, or `onKeyPress`).
16. [warning] no-static-element-interactions — apps/website/app/page.tsx:759
Static HTML elements with event handlers require a role — add `role="…"` or use a semantic HTML element instead.
17. [warning] no-array-index-as-key — apps/website/app/claude-spinner.tsx:38
Array index "index" used as key — causes bugs when list is reordered or filtered
18. [warning] unused-dependency — apps/website/package.json:0
Unused dependency: `class-variance-authority`
19. [warning] unused-dependency — apps/website/package.json:0
Unused dependency: `lucide-react`
20. [warning] unused-dependency — apps/website/package.json:0
Unused dependency: `pasito`
21. [warning] unused-dependency — apps/website/package.json:0
Unused dependency: `torph`
22. [warning] unused-dependency — apps/website/package.json:0
Unused dependency: `web-haptics`
23. [warning] unused-dependency — apps/website/package.json:0
Unused dependency: `zustand`
❌ Errors (1)
Project uses a motion library but has no prefers-reduced-motion handling — required for accessibility (WCAG 2.3.3) · 1 in 1 file
require-reduced-motion
Add
useReducedMotion()from your animation library, or a@media (prefers-reduced-motion: reduce)CSS query
| File | Lines |
|---|---|
apps/website/package.json |
0 |
⚠️ Warnings (22)
Unused dependency: `class-variance-authority` · 6 in 1 file
unused-dependency
Remove the dependency from package.json if it is genuinely unused.
| File | Lines |
|---|---|
apps/website/package.json |
0, 0, 0, 0, 0, 0 |
Array index "index" used as key — causes bugs when list is reordered or filtered · 3 in 3 files
no-array-index-as-key
Use a stable unique identifier:
key={item.id}orkey={item.slug}— index keys break on reorder/filter
| File | Lines |
|---|---|
apps/demo/src/app.tsx |
96 |
apps/website/app/page.tsx |
758 |
apps/website/app/claude-spinner.tsx |
38 |
React Hook `useEffect` is missing dependency `inputValue.trim` — list it in the dependency array, or call the hook unconditionally. · 2 in 2 files
exhaustive-deps
List every value the hook callback captures in its dependency array.
| File | Lines |
|---|---|
apps/demo/src/app.tsx |
72 |
apps/website/app/page.tsx |
261 |
Array index in `key` doesn't uniquely identify the element — re-renders may use stale state. · 2 in 2 files
no-array-index-key
Use a stable, data-derived
keyinstead of the array index.
| File | Lines |
|---|---|
apps/demo/src/app.tsx |
96 |
apps/website/app/page.tsx |
758 |
`<button>` elements must have an explicit `type` attribute. · 2 in 2 files
button-has-type
Set
type="button"(or"submit"/"reset") explicitly on every<button>.
| File | Lines |
|---|---|
apps/demo/src/app.tsx |
118 |
apps/website/app/page.tsx |
596 |
Visible non-interactive elements with click handlers must have a corresponding keyboard listener (`onKeyUp`, `onKeyDown`, or `onKeyPress`). · 2 in 1 file
click-events-have-key-events
Pair
onClickwithonKeyUp/onKeyDown/onKeyPressfor keyboard users.
| File | Lines |
|---|---|
apps/website/app/page.tsx |
579, 759 |
Static HTML elements with event handlers require a role — add `role="…"` or use a semantic HTML element instead. · 2 in 1 file
no-static-element-interactions
Static HTML elements with event handlers require a role, or use a semantic HTML element instead.
| File | Lines |
|---|---|
apps/website/app/page.tsx |
579, 759 |
A control must be associated with a text label — add visible text, `aria-label`, or `aria-labelledby`. · 1 in 1 file
control-has-associated-label
Every interactive control must have an accessible label.
| File | Lines |
|---|---|
apps/demo/src/app.tsx |
107 |
Page without metadata or generateMetadata export — hurts SEO · 1 in 1 file
nextjs-missing-metadata
Add
export const metadata = { title: '...', description: '...' }orexport async function generateMetadata()
| File | Lines |
|---|---|
apps/website/app/page.tsx |
6 |
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size · 1 in 1 file
use-lazy-motion
Use
import { LazyMotion, m } from "framer-motion"withdomAnimationfeatures — saves ~30kb
| File | Lines |
|---|---|
apps/website/app/page.tsx |
9 |
Reviewed by reactreview for commit b47aab7435d488f12b3fe6c415cc92244cf5f6fb. Configure here.
- 主要言語
- TypeScript
- スター
- 351
- フォーク
- 23
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
millionco/debug-agent のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
millionco/debug-agent#2 ·
millionco/debug-agent の issue をすべて見る
似ている issue
-
数据界面的横向滚动条缺失オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
zilliztech/attu#1037 ·
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
openclaw/openclaw#181212 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apify/apify-mcp-server#1684 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
Automattic/data-liberation-agent#953 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
siteboon/claudecodeui#1642 ·
メンテナーはふだん 5 日以内に返信