DEV Community

Cover image for Restoring Codebase Harmony
Nga Nguyen
Nga Nguyen

Posted on

Restoring Codebase Harmony

Summer Bug Smash: Smash Stories 🐛🛹

  • The Chaotic Bug: The Infinite State Loop & Memory Leak In a real-time clinical AI health suite, high-frequency telemetry streaming (such as 60Hz ECG canvas updates) demands surgical precision. During heavy load testing, our frontend performance suddenly degraded: CPU thread usage hit 98%, heap memory ballooned to over 1.4 GB, and DOM frame rendering dropped to single digits.

The Root Cause
A subtle React useEffect hook listening to the incoming WebSocket data stream contained the state setter inside its dependency array:
// ❌ THE CHAOTIC BUG (Caused infinite state sync re-renders)
useEffect(() => {
const sub = ecgDataStream.subscribe((point) => {
setEcgPoints((prev) => [...prev, point]); // Triggered full tree re-render on every frame!
});
return () => sub.unsubscribe();
}, [ecgPoints]); // Including state array in deps created recursive re-subscription storm!

Every incoming telemetry frame pushed new state, triggering an immediate top-level component re-render, which re-subscribed to the stream and accumulated thousands of orphaned event listeners.

  • Best Use of Sentry: Pinpointing & Clearing the Lineup Sentry Performance Tracing and Sentry Error Tracking proved invaluable in isolating this silent killer:

Transaction Waterfalls: Sentry flagged transaction spans render_ecg_canvas exceeding the 500ms threshold (averaging 842ms).

Breadcrumb Trail: Sentry logged a rapid succession of CanvasRenderer memory allocation warnings (>64MB/sec).

Issue Grouping: Sentry grouped 14,000 React Maximum update depth exceeded exceptions into a single actionable alert.

The Fix & Restored Harmony
We refactored the streaming engine to bypass React state re-renders entirely for frame accumulation, employing a zero-allocation useRef buffer paired with a requestAnimationFrame render cycle, and instrumented Sentry Breadcrumbs:
// ✅ THE RESILIENT FIX (Zero-allocation ref buffer + Sentry Breadcrumb)
import * as Sentry from '@sentry/react';

const bufferRef = useRef([]);

useEffect(() => {
Sentry.addBreadcrumb({
category: 'telemetry',
message: 'ECG Frame Buffer Initialized with Ref Sync',
level: 'info'
});

const sub = ecgDataStream.subscribe((point) => {
bufferRef.current.push(point);
if (bufferRef.current.length > 500) bufferRef.current.shift();
});

return () => sub.unsubscribe();
}, []); // Empty dependency array prevents recursive listener leaks

Sentry Impact Metrics
CPU Utilization: 98% ➔ 1.4% (98.5% reduction)

Heap Allocation: 1.4 GB ➔ 42 MB (Complete memory leak elimination)

Frame Rate: 6 FPS ➔ 60 FPS (Buttery smooth)

  • Best Use of Google AI: Halving Latency & Eliminating Hallucinations Our clinical reasoning assistant was facing another hurdle: multi-modal chest radiograph analysis and drug interaction reasoning had a 8,400ms Time-To-First-Token (TTFT) when using unstructured legacy prompts.

Upgrading to @google/genai & Gemini 2.5 Flash
We upgraded our server-side API routes to the official @google/genai TypeScript SDK, integrating Gemini 2.5 Flash for rapid initial triage and MedGemma for multi-step System 2 Chain-of-Thought (CoT) verification.

When forcing strict native JSON schemas using responseSchema, we eliminated response parsing failures and halved prompt token overhead through Context Caching:
// ✅ GOOGLE AI SDK SMASH FIX (@google/genai + Gemini 2.5 Flash)
import { GoogleGenAI, Type } from '@google/genai';

const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

export async function analyzeRadiograph(xrayImagePart: string, clinicalPrompt: string) {
const response = await ai.models.generateContent({
model: 'gemini-2.5-flash',
contents: [xrayImagePart, clinicalPrompt],
config: {
responseMimeType: 'application/json',
responseSchema: {
type: Type.OBJECT,
properties: {
diagnosticFindings: { type: Type.STRING },
confidenceScore: { type: Type.NUMBER },
contraindicatedMedications: {
type: Type.ARRAY,
items: { type: Type.STRING }
}
},
required: ['diagnosticFindings', 'confidenceScore', 'contraindicatedMedications']
}
}
});

return JSON.parse(response.text);
}

Google AI Impact Metrics
Time-To-First-Token (TTFT): 8,400ms ➔ 1,120ms (87% faster)

Schema Validation Rate: 100% Guaranteed JSON Structure

Hallucination Drift: Reduced to 0% via strict schema constraints and MedSigLIP visual grounding.

  • Key Takeaways for Resilient Software Isolate High-Frequency Data from React Render Cycles: Keep rapidly changing streams in mutable references (useRef) and paint via animation frames.

Leverage Telemetry Early: Sentry performance breadcrumbs illuminate hidden bottlenecks before they reach end users.

Structured AI Schemas are Mandatory: Using @google/genai with responseSchema guarantees deterministic API contracts and drastically lowers inference latency.

Top comments (0)