Trishnangshu Goswami
Writing

Essays & notes

Production debugging stories, frontend architecture decisions, and lessons from building real-time systems.

2026

The Data That Lied: A Real-Time Bug Hiding Between Two Systems

A live grid kept showing changes that weren't saved yet, so they vanished on page change. The fix lived between two systems.

FrontendReal-TimeSystem Design

Dashboards on Top of a Spreadsheet You Talk To

Turning a talk-to-it data grid into a one-glance surface — and why the dashboard, not the widget, is the fundamental unit.

FrontendSystem DesignReact

Why My Data Grid Kept Switching to the Wrong Sheet: Syncing a Live Grid an LLM Is Editing

A live data grid an LLM edits while a user does too — and the silent concurrency bugs I fixed by making the client defer to the server.

FrontendState ManagementReal-Time

Why Sentry Was Showing 11-Second Button Clicks: Debugging Bad Data, Multiple Bundles, and an 82% Size Cut

Garbage Sentry data led us to multiple SDK bundles and wildcard imports. Fixing the init pattern and tree-shaking cut our Sentry payload from 400KB to 70KB.

ObservabilityBundle OptimizationDeveloper Experience

How I Cut a Trading Platform's Memory from 1GB to 400MB

A production debugging story — how I tracked down a 1GB memory leak on a crypto trading platform caused by a subtle useEffect dependency and unmemoized table re

PerformanceReactProduction Debugging
2025

Shipping a Payment Flow Across Web and Native Without Losing Your Mind

Building a Razorpay payment flow that works across web, React Native, and WebView — with a postMessage bridge, HMAC verification, and webhook reconciliation.

PaymentsReact NativeArchitecture

Doctor Scheduling with Recurring Rules and Timezone Traps

RRule-based recurring availability, lazy slot generation with IST-UTC conversion, FOR UPDATE SKIP LOCKED for race-safe booking, and payment locking with cron-based cleanup.

BackendPostgreSQLSystem Design

Building a Real-Time Assessment Engine with WebSockets and State Machines

How we built a real-time clinical assessment engine using Socket.IO, Redis state machines, and config-driven scoring — with emergency short-circuits for risk detection.

ArchitectureWebSocketsSystem Design

Rendering 20 Message Types in a Chat UI Without Losing Your Mind

Rendering 20 message types in a single chat UI with a switch statement, the isLastMessage single-active-step pattern, and three hooks pushing to one Redux store.

FrontendReactSystem Design

What I Learned Deploying a Full Observability Stack for a Side Project

Deploying Prometheus, Grafana, Loki, Tempo, and Alertmanager for a Node.js backend. What actually caught production issues and what was overkill.

InfrastructureMonitoringSystem Design

Building a Retry-Aware API Client with Silent Token Refresh

Building an Axios-based HTTP client with linear backoff retries, a subscriber queue for silent token refresh, server-down detection via CustomEvents, and forced logout after repeated failures.

ArchitectureTypeScriptFrontend

OTP Auth, Rate Limiting, and the Token Refresh Dance

Phone-based OTP auth with crypto-safe generation, cookie-only JWT delivery, escalating rate limits across six tiers, and full refresh token rotation with bcrypt verification.

BackendSecurityNode.js
2022
2021