<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CheonBi (English)</title>
    <link>https://cheonbi.kr/en</link>
    <atom:link href="https://cheonbi.kr/en/feed.xml" rel="self" type="application/rss+xml" />
    <description>Grind. Learn. Repeat.</description>
    <language>en</language>
    <lastBuildDate>Sat, 30 May 2026 14:00:00 GMT</lastBuildDate>
    
        <item>
          <title><![CDATA[React cache() Deep Dive: Request-Scoped Memoization, Read from the Source]]></title>
          <link>https://cheonbi.kr/en/2026/05/react-cache-function-deep-dive</link>
          <guid>https://cheonbi.kr/en/2026/05/react-cache-function-deep-dive</guid>
          <pubDate>Sat, 30 May 2026 14:00:00 GMT</pubDate>
          <description><![CDATA[Every odd rule of React's cache() falls straight out of a ~30-line implementation. We trace the dispatcher, getCacheForType, and the WeakMap/Map tree at the source level to see exactly how request-scoped memoization works.]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[react-server-components]]></category><category><![CDATA[memoization]]></category><category><![CDATA[performance]]></category><category><![CDATA[frontend]]></category>
        </item>
      
        <item>
          <title><![CDATA[The TanStack npm Supply Chain Attack: Why pull_request_target Is Dangerous]]></title>
          <link>https://cheonbi.kr/en/2026/05/tanstack-npm-supply-chain-attack</link>
          <guid>https://cheonbi.kr/en/2026/05/tanstack-npm-supply-chain-attack</guid>
          <pubDate>Sat, 16 May 2026 12:00:00 GMT</pubDate>
          <description><![CDATA[Analysis of the @tanstack/* supply chain incident. The risks of pull_request_target, GitHub Actions cache, and OIDC trusted publishers, and how to defend against them.]]></description>
          <category><![CDATA[security]]></category><category><![CDATA[github-actions]]></category><category><![CDATA[npm]]></category><category><![CDATA[supply-chain]]></category><category><![CDATA[ci-cd]]></category>
        </item>
      
        <item>
          <title><![CDATA[Bun rewrite Exposed Something: OSS Could Only Stop External AI]]></title>
          <link>https://cheonbi.kr/en/2026/05/bun-rust-rewrite-real-story</link>
          <guid>https://cheonbi.kr/en/2026/05/bun-rust-rewrite-real-story</guid>
          <pubDate>Fri, 15 May 2026 02:00:00 GMT</pubDate>
          <description><![CDATA[Bun moved roughly 960,000 lines from Zig to Rust in six days using Claude Code. The meaning here is not code quality but OSS governance and resource asymmetry.]]></description>
          <category><![CDATA[bun]]></category><category><![CDATA[rust]]></category><category><![CDATA[oss]]></category><category><![CDATA[code-generation]]></category><category><![CDATA[ai]]></category><category><![CDATA[governance]]></category>
        </item>
      
        <item>
          <title><![CDATA[What makes a package you can keep using for years different]]></title>
          <link>https://cheonbi.kr/en/2026/05/good-package-for-long-term-users</link>
          <guid>https://cheonbi.kr/en/2026/05/good-package-for-long-term-users</guid>
          <pubDate>Sat, 09 May 2026 12:54:08 GMT</pubDate>
          <description><![CDATA[A good package has to be user-friendly not just in features, but in dependencies, version bumps, compatibility, and release policy.]]></description>
          <category><![CDATA[frontend]]></category><category><![CDATA[package-management]]></category><category><![CDATA[semver]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[maintenance]]></category>
        </item>
      
        <item>
          <title><![CDATA[The invisible cost in PR diffs: we are not reviewing the code our users receive]]></title>
          <link>https://cheonbi.kr/en/2026/05/pr-diff-vs-bundle</link>
          <guid>https://cheonbi.kr/en/2026/05/pr-diff-vs-bundle</guid>
          <pubDate>Sun, 03 May 2026 15:50:00 GMT</pubDate>
          <description><![CDATA[The bundle costs that code review misses, and how to surface them in the PR.]]></description>
          <category><![CDATA[frontend]]></category><category><![CDATA[bundle-analysis]]></category><category><![CDATA[performance]]></category><category><![CDATA[tree-shaking]]></category><category><![CDATA[code-review]]></category>
        </item>
      
        <item>
          <title><![CDATA['use cache' Directive Deep Dive: To the End of Cache Boundaries]]></title>
          <link>https://cheonbi.kr/en/2026/05/use-cache-deep-dive</link>
          <guid>https://cheonbi.kr/en/2026/05/use-cache-deep-dive</guid>
          <pubDate>Fri, 01 May 2026 19:47:36 GMT</pubDate>
          <description><![CDATA[Build-time transformations, cache key serialization, ResumeDataCache, cacheHandler, and Cache Components - everything created by a single 'use cache' line]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[frontend]]></category>
        </item>
      
        <item>
          <title><![CDATA['use client' Directive Deep Dive: To the Edge of Client Boundaries]]></title>
          <link>https://cheonbi.kr/en/2026/05/use-client-deep-dive</link>
          <guid>https://cheonbi.kr/en/2026/05/use-client-deep-dive</guid>
          <pubDate>Fri, 01 May 2026 12:00:00 GMT</pubDate>
          <description><![CDATA[Module boundaries created by a single line of 'use client', build-time transformations, Flight serialization, and performance implications]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[frontend]]></category>
        </item>
      
        <item>
          <title><![CDATA[AI Only Amplifies Me to the Level I Can See]]></title>
          <link>https://cheonbi.kr/en/2026/04/ai-only-amplifies-what-you-see</link>
          <guid>https://cheonbi.kr/en/2026/04/ai-only-amplifies-what-you-see</guid>
          <pubDate>Mon, 20 Apr 2026 12:00:00 GMT</pubDate>
          <description><![CDATA[I'm definitely coding faster, but why are my codebase and skills staying the same? Examining the gap between perceived and proven benefits.]]></description>
          <category><![CDATA[ai]]></category><category><![CDATA[learning]]></category><category><![CDATA[career]]></category><category><![CDATA[productivity]]></category><category><![CDATA[code-quality]]></category>
        </item>
      
        <item>
          <title><![CDATA[Why We Still Use Next.js]]></title>
          <link>https://cheonbi.kr/en/2026/03/why-still-nextjs</link>
          <guid>https://cheonbi.kr/en/2026/03/why-still-nextjs</guid>
          <pubDate>Mon, 23 Mar 2026 22:00:00 GMT</pubDate>
          <description><![CDATA[Switching costs stronger than technical superiority]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[react]]></category><category><![CDATA[vercel]]></category><category><![CDATA[frontend]]></category><category><![CDATA[web]]></category>
        </item>
      
        <item>
          <title><![CDATA[Is Next.js Fast Enough?]]></title>
          <link>https://cheonbi.kr/en/2026/03/is-nextjs-fast-enough</link>
          <guid>https://cheonbi.kr/en/2026/03/is-nextjs-fast-enough</guid>
          <pubDate>Sat, 21 Mar 2026 22:00:00 GMT</pubDate>
          <description><![CDATA[The uncomfortable truth benchmarks reveal]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[react]]></category><category><![CDATA[ssr]]></category><category><![CDATA[benchmark]]></category>
        </item>
      
        <item>
          <title><![CDATA[Whose React Is It?]]></title>
          <link>https://cheonbi.kr/en/2026/03/react-is-whose</link>
          <guid>https://cheonbi.kr/en/2026/03/react-is-whose</guid>
          <pubDate>Thu, 19 Mar 2026 23:30:00 GMT</pubDate>
          <description><![CDATA[The questions React Foundation must answer]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[governance]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[vercel]]></category><category><![CDATA[meta]]></category>
        </item>
      
        <item>
          <title><![CDATA[Why Cloudflare Rebuilt Next.js]]></title>
          <link>https://cheonbi.kr/en/2026/03/why-cloudflare-rebuilt-nextjs</link>
          <guid>https://cheonbi.kr/en/2026/03/why-cloudflare-rebuilt-nextjs</guid>
          <pubDate>Tue, 17 Mar 2026 20:07:31 GMT</pubDate>
          <description><![CDATA[What question does vinext really ask?]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[cloudflare]]></category><category><![CDATA[edge-computing]]></category><category><![CDATA[vite]]></category><category><![CDATA[reverse-engineering]]></category>
        </item>
      
        <item>
          <title><![CDATA[The Rise and Fall of Next.js Edge Runtime]]></title>
          <link>https://cheonbi.kr/en/2026/03/nextjs-edge-runtime-rise-and-fall</link>
          <guid>https://cheonbi.kr/en/2026/03/nextjs-edge-runtime-rise-and-fall</guid>
          <pubDate>Mon, 16 Mar 2026 16:24:02 GMT</pubDate>
          <description><![CDATA[Hey Edge Middleware, how have you been?]]></description>
          <category><![CDATA[nextjs]]></category><category><![CDATA[edge-computing]]></category><category><![CDATA[serverless]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[vercel]]></category>
        </item>
      
        <item>
          <title><![CDATA[React Server Functions Deep Dive: To the End of "use server"]]></title>
          <link>https://cheonbi.kr/en/2026/03/react-server-functions-deep-dive</link>
          <guid>https://cheonbi.kr/en/2026/03/react-server-functions-deep-dive</guid>
          <pubDate>Mon, 09 Mar 2026 22:02:05 GMT</pubDate>
          <description><![CDATA[What happens behind a single line of "use server"?]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[nextjs]]></category><category><![CDATA[frontend]]></category>
        </item>
      
        <item>
          <title><![CDATA[React's <ViewTransition>: Browser-Native Animation, Done the React Way]]></title>
          <link>https://cheonbi.kr/en/2026/03/react-view-transition</link>
          <guid>https://cheonbi.kr/en/2026/03/react-view-transition</guid>
          <pubDate>Mon, 02 Mar 2026 10:45:38 GMT</pubDate>
          <description><![CDATA[What happens when React wraps the View Transition API]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[css]]></category><category><![CDATA[nextjs]]></category>
        </item>
      
        <item>
          <title><![CDATA[The Pitfalls of Node.js vm Module: Why It's Not a Sandbox]]></title>
          <link>https://cheonbi.kr/en/2026/02/nodejs-deep-dive-sample</link>
          <guid>https://cheonbi.kr/en/2026/02/nodejs-deep-dive-sample</guid>
          <pubDate>Fri, 27 Feb 2026 10:00:00 GMT</pubDate>
          <description><![CDATA[A preview of section 5.2 (Pitfalls of the vm Module) from the upcoming Node.js Deep Dive book.]]></description>
          <category><![CDATA[nodejs]]></category><category><![CDATA[security]]></category><category><![CDATA[javascript]]></category>
        </item>
      
        <item>
          <title><![CDATA[The Downfall of Infinite Scroll — Why Google Removed Infinite Scrolling]]></title>
          <link>https://cheonbi.kr/en/2026/02/infinite-scroll-dark-side</link>
          <guid>https://cheonbi.kr/en/2026/02/infinite-scroll-dark-side</guid>
          <pubDate>Sat, 21 Feb 2026 10:00:00 GMT</pubDate>
          <description><![CDATA[How infinite scroll is being reevaluated from UX, performance, accessibility, and legal perspectives]]></description>
          <category><![CDATA[frontend]]></category><category><![CDATA[ux]]></category><category><![CDATA[web-performance]]></category><category><![CDATA[accessibility]]></category><category><![CDATA[infinite-scroll]]></category>
        </item>
      
        <item>
          <title><![CDATA[Deep Dive into Effect Systems: From Monads to Algebraic Effects, and Effect-TS's Choices]]></title>
          <link>https://cheonbi.kr/en/2026/02/effect-ts-deep-dive</link>
          <guid>https://cheonbi.kr/en/2026/02/effect-ts-deep-dive</guid>
          <pubDate>Fri, 20 Feb 2026 10:00:00 GMT</pubDate>
          <description><![CDATA[I dug deep into what Effect-TS is all about and why everyone seems so excited about it.]]></description>
          <category><![CDATA[typescript]]></category><category><![CDATA[backend]]></category>
        </item>
      
        <item>
          <title><![CDATA[Seeking Beta Readers for Node.js Deep Dive (Working Title)]]></title>
          <link>https://cheonbi.kr/en/2026/02/nodejs-deep-dive-beta-reader</link>
          <guid>https://cheonbi.kr/en/2026/02/nodejs-deep-dive-beta-reader</guid>
          <pubDate>Thu, 19 Feb 2026 22:00:00 GMT</pubDate>
          <description><![CDATA[Please show lots of interest and support!]]></description>
          <category><![CDATA[nodejs]]></category><category><![CDATA[javascript]]></category>
        </item>
      
        <item>
          <title><![CDATA[React Compiler Deep Dive: From Principles to Output]]></title>
          <link>https://cheonbi.kr/en/2026/02/react-compiler-deep-dive</link>
          <guid>https://cheonbi.kr/en/2026/02/react-compiler-deep-dive</guid>
          <pubDate>Thu, 19 Feb 2026 14:00:00 GMT</pubDate>
          <description><![CDATA[A deep exploration of how React Compiler analyzes code and what it produces, from pipeline to final output.]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[frontend]]></category>
        </item>
      
        <item>
          <title><![CDATA[In the Age of AI-Generated Code, Where is Frontend Engineering Headed?]]></title>
          <link>https://cheonbi.kr/en/2026/02/frontend-engineering-in-ai-era</link>
          <guid>https://cheonbi.kr/en/2026/02/frontend-engineering-in-ai-era</guid>
          <pubDate>Sat, 14 Feb 2026 12:00:00 GMT</pubDate>
          <description><![CDATA[AI coding tools aren't changing developers—they're changing the nature of what developers do.]]></description>
          <category><![CDATA[ai]]></category><category><![CDATA[frontend]]></category>
        </item>
      
        <item>
          <title><![CDATA[Complete Guide to Core Coding Agent Concepts]]></title>
          <link>https://cheonbi.kr/en/2026/01/coding-agent-core-concepts</link>
          <guid>https://cheonbi.kr/en/2026/01/coding-agent-core-concepts</guid>
          <pubDate>Sat, 17 Jan 2026 23:00:00 GMT</pubDate>
          <description><![CDATA[Complete overview of core coding agent concepts: Rules, Commands, MCP, Sub-agents, Hooks, Skills, and Plugins]]></description>
          <category><![CDATA[ai]]></category><category><![CDATA[devops]]></category><category><![CDATA[backend]]></category>
        </item>
      
        <item>
          <title><![CDATA[Preventing Memory Leaks with IntersectionObserver Singleton Pattern and WeakMap]]></title>
          <link>https://cheonbi.kr/en/2026/01/intersection-observer-singleton-weakmap</link>
          <guid>https://cheonbi.kr/en/2026/01/intersection-observer-singleton-weakmap</guid>
          <pubDate>Sat, 17 Jan 2026 21:30:00 GMT</pubDate>
          <description><![CDATA[How to efficiently observe hundreds of elements while preventing memory leaks]]></description>
          <category><![CDATA[javascript]]></category><category><![CDATA[frontend]]></category><category><![CDATA[web-performance]]></category>
        </item>
      
        <item>
          <title><![CDATA[How to Check if All Cases Are Handled in TypeScript Switch Statements]]></title>
          <link>https://cheonbi.kr/en/2026/01/typescript-exhaustive-check</link>
          <guid>https://cheonbi.kr/en/2026/01/typescript-exhaustive-check</guid>
          <pubDate>Sat, 17 Jan 2026 20:00:00 GMT</pubDate>
          <description><![CDATA[Exhaustive check pattern using the never type]]></description>
          <category><![CDATA[typescript]]></category>
        </item>
      
        <item>
          <title><![CDATA[How to Efficiently Process Massive JSON Responses]]></title>
          <link>https://cheonbi.kr/en/2026/01/handling-large-json-responses</link>
          <guid>https://cheonbi.kr/en/2026/01/handling-large-json-responses</guid>
          <pubDate>Sun, 11 Jan 2026 15:00:00 GMT</pubDate>
          <description><![CDATA[How to survive when JSON.parse() becomes overwhelming]]></description>
          <category><![CDATA[javascript]]></category><category><![CDATA[web-performance]]></category>
        </item>
      
        <item>
          <title><![CDATA[React's New Lint Rule: set-state-in-effect]]></title>
          <link>https://cheonbi.kr/en/2025/12/react-set-state-in-effect-lint-rule</link>
          <guid>https://cheonbi.kr/en/2025/12/react-set-state-in-effect-lint-rule</guid>
          <pubDate>Tue, 16 Dec 2025 15:30:00 GMT</pubDate>
          <description><![CDATA[Why you shouldn't call setState in Effects and what alternatives exist]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[javascript]]></category><category><![CDATA[testing]]></category>
        </item>
      
        <item>
          <title><![CDATA[From useEvent to useEffectEvent: React's Event Handler Stabilization Journey]]></title>
          <link>https://cheonbi.kr/en/2025/12/use-effect-event</link>
          <guid>https://cheonbi.kr/en/2025/12/use-effect-event</guid>
          <pubDate>Mon, 15 Dec 2025 14:30:00 GMT</pubDate>
          <description><![CDATA[An RFC from 3 years ago finally sees the light of day]]></description>
          <category><![CDATA[react]]></category><category><![CDATA[typescript]]></category>
        </item>
      
        <item>
          <title><![CDATA[In an Era Where AI Writes Code, What Should I Do as a Frontend Developer?]]></title>
          <link>https://cheonbi.kr/en/2025/05/what-to-do-as-frontend-developer-in-ai-era</link>
          <guid>https://cheonbi.kr/en/2025/05/what-to-do-as-frontend-developer-in-ai-era</guid>
          <pubDate>Mon, 19 May 2025 17:43:12 GMT</pubDate>
          <description><![CDATA[I don't know what the future holds, but shouldn't we just keep developing diligently?]]></description>
          <category><![CDATA[ai]]></category><category><![CDATA[career]]></category><category><![CDATA[frontend]]></category>
        </item>
      
        <item>
          <title><![CDATA[Understanding AST for JavaScript Developers (2026 Update)]]></title>
          <link>https://cheonbi.kr/en/2021/05/ast-for-javascript</link>
          <guid>https://cheonbi.kr/en/2021/05/ast-for-javascript</guid>
          <pubDate>Mon, 10 May 2021 09:40:39 GMT</pubDate>
          <description><![CDATA[A comprehensive guide covering AST concepts, parsing process, key node types, and practical usage in tools like Babel and ESLint.]]></description>
          <category><![CDATA[javascript]]></category><category><![CDATA[compiler]]></category>
        </item>
      
  </channel>
</rss>