celeroncoder / celeroncoder/marketplace-ui-poc

React Review Audit

Open
#1 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

**Score: 93/100** · 1 error · 13 warnings

Copy as prompt

```text
Fix the following React Review diagnostics in my codebase.

## Errors (1)

1. [error] require-reduced-motion — package.json:0
Project uses a motion library but has no prefers-reduced-motion handling — required for accessibility (WCAG 2.3.3)

## Warnings (13)

2. [warning] nextjs-missing-metadata — app/page.tsx:1
Page without metadata or generateMetadata export — hurts SEO

3. [warning] use-lazy-motion — app/page.tsx:15
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size

4. [warning] rerender-state-only-in-handlers — app/page.tsx:34
useState "isLoading" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

5. [warning] design-no-redundant-size-axes — app/page.tsx:135
w-12 h-12 → use the shorthand size-12 (Tailwind v3.4+)

6. [warning] design-no-three-period-ellipsis — app/page.tsx:136
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)

7. [warning] design-no-bold-heading — app/page.tsx:150
font-bold on

crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

8. [warning] design-no-redundant-size-axes — app/page.tsx:156
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

9. [warning] design-no-space-on-flex-children — app/page.tsx:179
space-x-3 on a flex/grid parent — use gap-x-3 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

10. [warning] design-no-redundant-size-axes — app/page.tsx:181
w-10 h-10 → use the shorthand size-10 (Tailwind v3.4+)

11. [warning] nextjs-no-img-element — app/page.tsx:182
Use next/image instead of — provides automatic optimization, lazy loading, and responsive srcset

12. [warning] design-no-redundant-size-axes — app/page.tsx:185
w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)

13. [warning] design-no-redundant-size-axes — app/page.tsx:206
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

14. [warning] design-no-redundant-size-axes — app/page.tsx:263
w-12 h-12 → use the shorthand size-12 (Tailwind v3.4+)
```

---

### ❌ Errors (1)

**`require-reduced-motion`**

Project uses a motion library but has no prefers-reduced-motion handling — required for accessibility (WCAG 2.3.3)

> Add `useReducedMotion()` from your animation library, or a `@media (prefers-reduced-motion: reduce)` CSS query

[`package.json:0`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/package.json#L0)

---

### ⚠️ Warnings (13)

**`design-no-redundant-size-axes`**

w-12 h-12 → use the shorthand size-12 (Tailwind v3.4+)

> Collapse `w-N h-N` to `size-N` (Tailwind v3.4+) when both axes match

[`app/page.tsx:135`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L135)
[`app/page.tsx:156`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L156)
[`app/page.tsx:181`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L181)
[`app/page.tsx:185`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L185)
[`app/page.tsx:206`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L206)
[`app/page.tsx:263`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L263)

**`nextjs-missing-metadata`**

Page without metadata or generateMetadata export — hurts SEO

> Add `export const metadata = { title: '...', description: '...' }` or `export async function generateMetadata()`

[`app/page.tsx:1`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L1)

**`use-lazy-motion`**

Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size

> Use `import { LazyMotion, m } from "framer-motion"` with `domAnimation` features — saves ~30kb

[`app/page.tsx:15`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L15)

**`rerender-state-only-in-handlers`**

useState "isLoading" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

> Replace useState with useRef when the value is only mutated and never read in render — `ref.current = ...` updates without re-rendering the component

[`app/page.tsx:34`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L34)

**`design-no-three-period-ellipsis`**

Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)

> Use the typographic ellipsis "…" (or `…`) instead of three periods — pairs with action-with-followup labels ("Rename…", "Loading…")

[`app/page.tsx:136`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L136)

**`design-no-bold-heading`**

font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

> Use `font-semibold` (600) or `font-medium` (500) on headings — 700+ crushes letter counter shapes at display sizes

[`app/page.tsx:150`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L150)

**`design-no-space-on-flex-children`**

space-x-3 on a flex/grid parent — use gap-x-3 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

> Use `gap-*` on the flex/grid parent. `space-x-*` / `space-y-*` produce phantom gaps when a sibling is conditionally rendered, lose vertical spacing on wrapped lines, and don't mirror in RTL

[`app/page.tsx:179`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L179)

**`nextjs-no-img-element`**

Use next/image instead of <img> — provides automatic optimization, lazy loading, and responsive srcset

> `import Image from 'next/image'` — provides automatic WebP/AVIF, lazy loading, and responsive srcset

[`app/page.tsx:182`](https://github.com/celeroncoder/marketplace-ui-poc/blob/40f3f82608dbade1092b323bdb6497313faf1256/app/page.tsx#L182)

---

Last scored May 14, 2026 at 9:39 AM UTC. Maintained by [React Review](https://github.com/millionco/react-review).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the referenced package.json entry and the listed locations in app/page.tsx, reviewing each React Review diagnostic and its suggested direction. Re-run the React Review audit after addressing the reduced-motion, metadata, motion import, state, Tailwind, text, and image findings; done means the reported error and warnings are resolved.

Written by the indexing model from the issue text.

Assessment

Tech stack
next.js, react, tailwindcss, typescript
Domain
accessibility, frontend, performance, web-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
64/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.