Master React Through Real-World Challenges
Write React and TypeScript in a full Monaco editor with IntelliSense, autocomplete, and optional Vim mode.
Run your code against a real Node + Jest server — the same setup you’d face in production and technical interviews.
Last challenges
Best practices
In a technical interview, solving the logic is only half the battle — reviewers also judge your code's quality. A todo list that works perfectly can still hide anti-patterns like derived state in effects, impure renders, or eager initializers that degrade performance. This challenge is different: instead of just checking that your code passes tests, the platform also runs ESLint with React best-practice rules and surfaces every violation. Fix the 3 lint warnings to prove you don't just make it work — you make it right.
dddTry a Free React Challenge
Try a real challenge right in your browser. Write code with TypeScript and IntelliSense, run tests on a live Node + Jest server, and see your solution validated instantly — no setup required.
Overview
Learn the difference between useState and useRef by creating two counters and observing how state and refs affect component rendering.
Requirements
- Create two counters: counter state and counter ref, each with increment and decrement buttons.
- The counter state should update and reflect its value in the UI when incremented or decremented.
- The counter ref should update its value when incremented or decremented without triggering a UI update.
- After triggering a rerender with the counter state, the counter ref should show its updated value.
Notes
- Understand the difference between
useStateanduseRefin React. - Learn how
useRefcan store mutable values without causing rerenders. - Practice triggering and observing rerenders with
useState. - Gain clarity on when to use
useStatevsuseRefdepending on UI updates.
Tests
- increment state value on plus button click
- decrement state value on minus button click
- does not update ref value in DOM without re-render
- displays updated ref value after state re-render
Simple, transparent pricing
- 1Full access to 50+ challenges across all levels
- 2New challenges added every week
- 3Exclusive advanced topics: Redux, React 19, compound components
- 4View solutions and learn from working code
- 1Full access to 50+ challenges across all levels
- 2New challenges added every week
- 3Exclusive advanced topics: Redux, React 19, compound components
- 4View solutions and learn from working code
- 1Full access to 50+ challenges across all levels
- 2New challenges added every week
- 3Exclusive advanced topics: Redux, React 19, compound components
- 4View solutions and learn from working code
- 1Start solving free coding challenges
- 2All challenges include TypeScript and pre-styled layouts
- 3Code editor with optional Vim mode
- 4Run and test your code instantly in the browser