본문으로 건너뛰기
KYH
  • Blog
  • About

joseph0926

I document what I learn while solving product problems with React and TypeScript.

HomeBlogAbout

© 2026 joseph0926. All rights reserved.

Filter28 topics
10 posts loaded.
Why should good tests make failures believable?
Mar 27, 202610 min read

Why should good tests make failures believable?

When tests in React Router or TanStack Query fail, I usually inspect my code first. When tests I wrote fail, I sometimes end up re-checking the test itself as well. That difference made me rethink the boundary between unit, integration, browser, and e2e tests.

testingvitest+1
useRef holds values not needed for rendering, so why should you not read it during render?
Mar 01, 20266 min read

useRef holds values not needed for rendering, so why should you not read it during render?

Two sentences in the React docs looked contradictory at first. useRef stores values not needed for rendering, yet React says not to read ref.current during render. Tracing the source code shows these are about two different dimensions of rendering: trigger vs consistency, all the way to tearing.

reactuseRef+1
Why is Next.js source code so complex? -- The cost of keeping Pages Router
Feb 21, 20267 min read

Why is Next.js source code so complex? -- The cost of keeping Pages Router

Tracing just next/navigation through the source reveals where the complexity comes from: re-export entry points, context adapters, and .react-server.ts splits.

nextjssource-code
Minor optimizations found in React source code
Feb 13, 202616 min read

Minor optimizations found in React source code

Small React source-level optimizations explained: Object.freeze in DEV, Hidden Class effects, branch ordering, and Smi/Double choices.

react
ESM is asynchronous, so how is static analysis possible?
Feb 10, 20268 min read

ESM is asynchronous, so how is static analysis possible?

ESM can be asynchronous and still statically analyzable. This post explains why through the Construction, Instantiation, and Evaluation phases.

javascriptesm+1
Why Map and Set are known to have better performance than Array
Feb 01, 20265 min read

Why Map and Set are known to have better performance than Array

Why Map and Set often outperform Array: hash-based lookup complexity, insertion behavior, and traversal trade-offs including cache locality.

javascriptdata-structure+1
Measure and improve the performance of the AI ​​tool you created
Jan 23, 20264 min read

Measure and improve the performance of the AI ​​tool you created

Rather than judging the quality of AI tools solely by feel, we have a record of quantifying the extent of improvement through datasets and automatic scoring.

aiprompt-smith
Why bundlers exist
Dec 20, 20255 min read

Why bundlers exist

In this article, we summarize why bundlers emerged, what a dependency graph is, and why Vite took a different approach.

bundlervite
Attaching a RAG-based AI chatbot to an open source document site
Dec 01, 20257 min read

Attaching a RAG-based AI chatbot to an open source document site

A practical guide to adding a RAG chatbot to open source docs, covering model choice, retrieval pipeline design, and cost-aware operations.

aifirsttx
How does RSC split server/client bundles?
Nov 01, 20254 min read

How does RSC split server/client bundles?

Tracing Next.js internals to explain how React Server Components split server and client bundles from build-time transforms to runtime restoration.

nextjsreact