Practice React Coding Challenges to Pass Your Interview

Interviewers test what you can build, not just what you know. Practice real React and TypeScript coding challenges — hooks, forms, data fetching, and component architecture — with a full code editor, real test cases, and instant feedback.

  • No credit card required
  • Real TypeScript runtime
  • Server-side test runner

Challenges and katas inspired by real interview questions from companies like

Amazon
Google
Microsoft
Apple
OpenAI
Stripe
Uber
Tiktok
Atlassian
Meta
LinkedIn
The workspace is designed for desktop. For the best experience, please switch to a larger screen.

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 useState and useRef in React.
  • Learn how useRef can store mutable values without causing rerenders.
  • Practice triggering and observing rerenders with useState.
  • Gain clarity on when to use useState vs useRef depending on UI updates.

Tests

  1. increment state value on plus button click
  2. decrement state value on minus button click
  3. does not update ref value in DOM without re-render
  4. displays updated ref value after state re-render

Last UI Challenges

Put Your React UI Skills to the Test

#64

Command Palette

60 min
60 min

Build a keyboard-driven command palette (Cmd/Ctrl+K) with fuzzy filtering, arrow-key navigation, a focus trap, and accessible combobox/listbox semantics.

ddd
useStateuseEffectuseRefkeyboardaccessibilityARIA
#65

OTP Input

60 min
60 min

Build a one-time-password (OTP) input with six single-digit fields that auto-advance focus as you type, support pasting a full code, and validate it against a demo code.

ddd
useStateuseRefformskeyboard
#66

Virtualized List

60 min
60 min

Build a virtualized list that renders only the rows visible in the scroll viewport (plus overscan) instead of mounting all 10,000 contacts, using fixed row heights and windowing math.

ddd
useStateuseLayoutEffectuseMemouseRefperformance
Available on Sep 30, 2026

Everything You Need to Master React Interviews

From JavaScript fundamentals to real-world React applications and architecture

Fair prices

A small investment for your next React interview. You can't afford to fail.

monthly plan
$9/month
Billed monthly
  • 1Full access to 66 UI challenges across all levels
  • 2Full access to 95 katas across all levels
  • 3Full access to 675 quiz questions
  • 4Unlimited quizzes
  • 5New challenges added every week
annual planRecommended
$5/month
Billed $60yearly
save 44%!
  • 1Full access to 66 UI challenges across all levels
  • 2Full access to 95 katas across all levels
  • 3Full access to 675 quiz questions
  • 4Unlimited quizzes
  • 5New challenges added every week
quarterly plan
$7/month
Billed $21quarterly
save 22%!
  • 1Full access to 66 UI challenges across all levels
  • 2Full access to 95 katas across all levels
  • 3Full access to 675 quiz questions
  • 4Unlimited quizzes
  • 5New challenges added every week
FREE
  • 1Start solving 18 free challenges and 42 free katas
  • 2Free quiz questions to test your React knowledge
  • 3Free playground to experiment with React, TypeScript and Tailwind
  • 4All challenges include TypeScript and pre-styled layouts
  • 5Code editor with optional Vim mode
  • 6Run automated tests with instant feedback
Get Started

Frequently Asked Questions

Still have questions? Contact us

Need more JavaScript Practice?
Strengthen your JavaScript knowledge with JSExercises
Try JSExercises