Frontend Bug Hunts: 44 Debugging Challenges
44 frontend bug hunts — 22 easy · 19 medium · 3 hard — each a small project with a planted bug, a bug report and hidden tests that decide whether the fix is…
- Hunts: 44
- By difficulty: 22 easy · 19 medium · 3 hard
- Reward: 50 XP per complete fix
Bugs in the code a browser runs: the calculation behind a checkout, a search box, a signup form, a progress bar, an unread badge, an infinite scroll. The framework is out of the way — what you fix is the function a component calls, judged by tests that exercise it directly.
Every frontend bug hunt
- Average Watch Time: Infinity Easy · JavaScript · Math · Division
- Double-Charged at Checkout Easy · JavaScript · Idempotency · Payments
- Four Years and a Day Off Easy · JavaScript · Dates · Configuration
- Infinite Scroll, Infinite Repeats Easy · JavaScript · Pagination · Dedupe
- Public by Default Easy · JavaScript · Privacy · State
- Ten Seconds to Next Episode Easy · JavaScript · Timers · Off-by-one
- The 130% Progress Bar Easy · JavaScript · Math · Clamping
- The 140-Character Lie Easy · JavaScript · Strings · Unicode
- The Checkout Meltdown Easy · JavaScript
- The ETA That Went Negative Easy · JavaScript · Formatting · Math
- The Infinite Spinner Easy · JavaScript · State · Error Handling
- The Invisible Tweet Button Easy · JavaScript · Security · Config
- The Move That Quartered Crits Easy · JavaScript · Game Logic · Bitwise
- The One-Night Overcharge Easy · JavaScript · Dates · Off-by-one
- The Quote That Escaped the Link Easy · JavaScript · Security · Parsing
- The Resurfaced Memory Easy · JavaScript · Filtering · Privacy
- The Sunset That Crashed the Phone Easy · Java · Overflow · Bounds
- The Sure Hit That Missed One Time in 256 Easy · JavaScript · Randomness · Games
- The Tweet ID JavaScript Rounded Off Easy · JavaScript · Parsing · Identifiers
- The Upvote That Counted Twice Easy · JavaScript · Dedupe · State
- The Vanishing Search Results Easy · JavaScript
- Undo Send Never Works Easy · JavaScript · Units · Timers
- Drill or Live, Same Prompt Hard · JavaScript · UX · Validation
- One Frame Behind Forever Hard · Java · Game Loops · Rounding
- Six Degrees, Give or Take Hard · JavaScript · Graphs · BFS
- Cursor Chaos After the Emoji Medium · JavaScript · Unicode · Strings
- False Positives at the Signup Gate Medium · JavaScript
- Java, Newline, Script Medium · JavaScript · Security · Parsing
- One Plus Two Plus Three Is Twenty-Four Medium · JavaScript · State · Rendering
- Shuffle Isn't Random Medium · JavaScript · Algorithms · Randomness
- Stuck on Mute Medium · JavaScript · State · Stale Closures
- The Autosave That Cut You Off Medium · Java · Debounce · Timers
- The Config Value That Crashed Every App Medium · JavaScript · Config · Validation
- The Fields You Never Saw Medium · JavaScript · Security · Privacy
- The Kill Screen at Level 256 Medium · Java · Overflow · Rendering
- The Leaderboard Shuffle Medium · Java · Sorting · Stability
- The Leaning Tower of Pins Medium · JavaScript · Layout · Algorithms
- The Payment Page Script Nobody Pinned Medium · JavaScript · Security · Validation
- The Phantom Unread Badge Medium · JavaScript · State · Dedupe
- The Reducer That Bit the Hand Medium · JavaScript · Immutability · State
- The Toast That Never Left Medium · JavaScript · Arrays · Mutation
- Three Checkboxes and $900 Million Medium · JavaScript · Forms · Defaults
- Too Young by One Birthday Medium · JavaScript · Validation · Dates
- When 65536 Read as Zero Medium · JavaScript · Rendering · Overflow