Debuggler LogoDebuggler

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.

Interactive Incident Preview
SearchQueue.jsx

// 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)}

/ >

};

}

/challenges/1

Support queue

Find a ticket before assigning it.

Active filter: INV-402

⚠️ Mismatch: filter shows "Active filter: INV-402" but input is cleared on state.
Input is controlled stateFAIL
1 check failing. Run checks again.

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.

🔍
Challenge #1medium

The Phantom Form Error

FormsFormik

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.

Static & Runtime checks activeCrush Bug
Challenge #2easy

The Missing Search Results

Lists / TablesInstantSearch.js

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.

Static & Runtime checks activeCrush Bug
Challenge #3medium

The Amnesia Auto-Save

DashboardNotion & Slate Editors

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.

Static & Runtime checks activeCrush Bug
Challenge #4easy

The Aggressive Table Row

Lists / TablesRadix UI & Shadcn

Clicking 'Delete' on a project removes it, but also abruptly navigates you to its detail view. Fix the event bubbling.

Static & Runtime checks activeCrush Bug
Challenge #5medium

The Unfocused Input

FormsMaterial-UI

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.

Static & Runtime checks activeCrush Bug
Challenge #6medium

The Teleporting Popover

DashboardFloating UI

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.

Static & Runtime checks activeCrush Bug
Challenge #7hard

The Infinite Data Loop

API / SyncSWR

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.

Static & Runtime checks activeCrush Bug
Challenge #8medium

The Stubborn Input

FormsFormik

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.

Static & Runtime checks activeCrush Bug
Challenge #9hard

The Confused Invoice Status

PaymentsStripe Elements

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.

Static & Runtime checks activeCrush Bug

© 2026 Debuggler. Real app incident simulation laboratory.