Where bugs become features.
Break. Debug. Master the stack.
Stop solving dry algorithmic puzzles. Debuggler immerses you in fully functioning application viewports running broken code inspired by real incidents in popular open-source repositories like Formik, Radix UI, and InstantSearch. Trace symptoms, fix logic errors, and pass checks in real-time.
// Fix mismatch when search clears
import { useState } from "react";
export default function SearchQueue() {
const [query, setQuery] = useState("");
return (
<input
type="search"
defaultValue={query} // ⚠️ Input becomes uncontrolled
onChange={(e) => setQuery(e.target.value)}
/ >
};
}
Support queue
Find a ticket before assigning it.
Active filter: INV-402
Built for Builders
Puzzles styled like production codebases
Real Browser Sandbox
No mock UI. Code runs inside a fully responsive browser viewport using the standard HTML document, so you test clicks, inputs, and fetches directly.
Automated Checks
Your code is analyzed instantly on every change. Instantly run source regex testing alongside real interactive DOM assertions inside the frame.
Production Incident Surface
Learn how bugs affect authentic customer dashboards: Session token resets, race conditions in org lists, OTP timeout intervals, and more.
The Challenge Cockpit
Select a system incident below and jump into the editor sandbox to crush the bug.
The Phantom Form Error
Type a username quickly. Watch as the older validation overwrites the newer one, displaying false errors. Fix the race condition so the final state is always accurate.
The Missing Search Results
Navigate to page 3, then search for 'Special'. The list goes blank because it's asking for page 3 of the new search results. Fix the search so it resets the page.
The Amnesia Auto-Save
Type some text in the notepad. Every 4 seconds, the auto-save runs and erases your work because it saves the initial empty state. Fix the stale closure.
The Aggressive Table Row
Clicking 'Delete' on a project removes it, but also abruptly navigates you to its detail view. Fix the event bubbling.
The Unfocused Input
Type into the profile input fields. You'll notice the input field instantly loses focus after every single character you type. Fix this annoying input behavior.
The Teleporting Popover
Click the 'View Details' button. The popover initially appears at the top-left of the screen (0, 0) instead of below the button. Find out why it renders incorrectly on first mount.
The Infinite Data Loop
Inspect the Activity Monitor. Although it displays the logs, it executes an infinite number of API requests, taxing the server and slowing down the UI. Stabilize the request system.
The Stubborn Input
Type into the custom input fields. Try clicking the 'Reset Defaults' button. Notice that while the parent state is successfully reset, the input fields remain stubbornly stuck showing your custom text. Fix the controlled input sync.
The Confused Invoice Status
Pay Invoice #101 (which fails) and quickly pay Invoice #102 (which succeeds) right after. Notice that when Invoice #101 fails, it incorrectly wipes out the success checkmark of Invoice #102 and displays the error message on the wrong invoice! Stabilize the parallel invoice payment status.