Debug Scenarios

Guided frontend incident simulator

Practice the part interviews usually miss: root cause, debug order, fixes, and guardrails under production-style pressure.

How it works

Production-style diagnosis, not trivia

Each scenario is a short simulator: likely root cause, debug order, best fix set, and regression guard. Progress stays local and separate from coding or trivia.

Scenario
Signals
Status

Search box typing lag under product-card load

Typing gets laggy after the third character because every keypress does too much work and also triggers a request.

ReactEasy12 min
performancesearchreact
Typing gets much slower after 3+ charactersMost time is spent filtering and highlighting before the screen updatesEvery keypress also sends a network request
Not started Updated Mar 19, 2026 Open simulator →

Latest query loses to stale search results

Cached results and slower network results both update the same list, so an older query can briefly show up again.

JavaScriptIntermediate14 min
asyncrace-conditionsearch
Results briefly jump back to an older queryCached and network results both update the same results listDebounce reduced traffic, but the stale flash is still there
Not started Updated Mar 20, 2026 Open simulator →

Modal opens visually but fails screen-reader users

The modal looks fine on screen, but keyboard focus escapes behind it and screen readers do not announce it properly.

ReactIntermediate15 min
accessibilitymodalfocus-management
Tab moves behind the modalScreen reader does not announce the modal titleFocus does not return to the button that opened it
Not started Updated Mar 19, 2026 Open simulator →

Realtime feed leaks sockets and listeners

Route changes and filter changes keep adding listeners, so old listeners stay alive and still use old filter values.

ReactIntermediatePremium14 min
memorywebsocketeffects
Events start showing up more than once after route or filter changesSome duplicates still mention old filter valuesListener and subscription counts keep growing
Not started Updated Mar 20, 2026 View preview →

Context update causes rerender storm

One big shared context holds too much fast-changing state, so typing in one place rerenders parts of the page that did not actually change.

ReactHardPremium16 min
reactcontextrendering
Typing rerenders parts of the page that did not changeOne context update rerenders lots of componentsThe provider creates a new value object on every update
Not started Updated Mar 19, 2026 View preview →

Autosave overwrites the latest draft

If the network is slow, an older autosave response can still overwrite what the user typed a moment later.

ReactHardPremium18 min
autosaveasyncstate-consistency
Text jumps back to an older versionSaved state clears too earlyEasy to reproduce on a slow network
Not started Updated Mar 19, 2026 View preview →

OnPush order row stays stale after a live update

A live order update arrives, but the row keeps showing the old status until the user clicks, sorts, or filters the table.

AngularIntermediatePremium15 min
angularonpushchange-detectionimmutability
The socket event arrives, but the row still shows the old statusSorting or filtering suddenly makes the right status appearThe service mutates the existing order object in place
Not started Updated Mar 21, 2026 View preview →

Cart badge and cart page drift out of sync

The header badge and the cart page stop agreeing because one feature quietly creates a second CartService instance.

AngularIntermediate14 min
angulardependency-injectionservicesstate
The header shows 3 items while the cart page shows 0Refreshing the cart page briefly 'fixes' only one sideThe feature component has its own CartService provider
Not started Updated Mar 21, 2026 Open simulator →

Pinia filter label stays stale after a store update

The product grid updates, but one filter label stays old because store state was destructured into plain values.

VueIntermediatePremium14 min
vuepiniareactivitystate-management
The list reacts, but the selected filter pill stays oldA page reload or remount suddenly shows the right valueThe component destructures Pinia store state directly
Not started Updated Mar 21, 2026 View preview →

Draft note jumps to the wrong row after adding at the top

The list updates, but edit state and draft text jump to the wrong row because `v-for` is keyed by index instead of item identity.

VueIntermediate14 min
vuekeyslist-renderingforms
Text typed into one row appears under a different row after insertEdit mode sticks to the wrong item after reorderingThe list uses `:key="index"`
Not started Updated Mar 21, 2026 Open simulator →