<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Frontend on Commentary of Takao</title><link>https://takao.blog/ko/tags/frontend/</link><description>Recent content in Frontend on Commentary of Takao</description><generator>Hugo -- gohugo.io</generator><language>ko</language><copyright>Commentary of Takao</copyright><lastBuildDate>Sun, 12 Jul 2026 04:12:51 +0900</lastBuildDate><atom:link href="https://takao.blog/ko/tags/frontend/index.xml" rel="self" type="application/rss+xml"/><item><title>React 19 New Features: What Developers Need to Know</title><link>https://takao.blog/ko/web/react-19-new-features/</link><pubDate>Wed, 08 Jul 2026 10:00:00 +0900</pubDate><guid>https://takao.blog/ko/web/react-19-new-features/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-19-new-features-ko.png" alt="Featured image of post React 19 New Features: What Developers Need to Know" /&gt;&lt;h2 id="what-changed-in-react-19"&gt;What Changed in React 19
&lt;/h2&gt;&lt;p&gt;React 19 is not a minor 업데이트 but a paradigm shift. Stable 서버 Components, new hooks, and the React Compiler fundamentally change how developers write applications.&lt;/p&gt;
&lt;h2 id="stable-서버-components"&gt;Stable 서버 Components
&lt;/h2&gt;&lt;p&gt;React 서버 Components (RSC) are now production-ready. By rendering on the 서버 and sending HTML to the client, they reduce bundle size significantly.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// app/page.jsx — Server Component (default)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;export&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;default&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;async&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Home&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;posts&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;await&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;db&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;query&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;SELECT * FROM posts&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;ul&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#a6e22e"&gt;posts&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;map&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;post&lt;/span&gt; =&amp;gt; (
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;li&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;key&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;{&lt;span style="color:#a6e22e"&gt;post&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;id&lt;/span&gt;}&amp;gt;{&lt;span style="color:#a6e22e"&gt;post&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;}&amp;lt;/&lt;span style="color:#f92672"&gt;li&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ))}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;ul&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; );
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Components using useState or useEffect must declare &amp;ldquo;use client&amp;rdquo; at the top.&lt;/p&gt;</description></item><item><title>Tailwind CSS v4.0 Release and Pure CSS Configuration</title><link>https://takao.blog/ko/web/tailwind-css-v4-release-changes/</link><pubDate>Thu, 05 Feb 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/ko/web/tailwind-css-v4-release-changes/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/tailwind-css-v4-release-changes-ko.png" alt="Featured image of post Tailwind CSS v4.0 Release and Pure CSS Configuration" /&gt;&lt;h2 id="introduction"&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Tailwind CSS v4.0 marks a paradigm shift from JavaScript-based configuration to a &lt;strong&gt;CSS-first architecture&lt;/strong&gt;. The &lt;code&gt;tailwind.config.js&lt;/code&gt; file is gone; design tokens are now defined directly in CSS using &lt;code&gt;@theme&lt;/code&gt;. This release also integrates &lt;strong&gt;Lightning CSS&lt;/strong&gt; for blazing-fast builds, adopts modern CSS 기능 like CSS nesting and &lt;code&gt;@layer&lt;/code&gt;, and ships a completely rewritten engine. This article breaks down the key changes and provides a practical migration 가이드 from v3.&lt;/p&gt;</description></item><item><title>Next.js 15 Stable Release: Best Practices in Production</title><link>https://takao.blog/ko/web/nextjs-15-stable-features-overview/</link><pubDate>Sun, 05 Oct 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/ko/web/nextjs-15-stable-features-overview/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nextjs-15-stable-features-overview-ko.png" alt="Featured image of post Next.js 15 Stable Release: Best Practices in Production" /&gt;&lt;h2 id="introduction"&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Next.js 15 ships as a stable release with &lt;strong&gt;React 19 support&lt;/strong&gt;, a redesigned caching model, and major API improvements for async request handling. This 버전 defaults to &lt;strong&gt;no caching&lt;/strong&gt; for fetch requests and GET Route handlers, simplifying behavior predictability. It also introduces &lt;code&gt;async&lt;/code&gt; variants for &lt;code&gt;cookies()&lt;/code&gt;, &lt;code&gt;headers()&lt;/code&gt;, and &lt;code&gt;params()&lt;/code&gt;, aligning with React 19&amp;rsquo;s async rendering paradigm. This article covers every breaking change and best practice for production adoption.&lt;/p&gt;</description></item><item><title>Demystifying Next.js App Router Caching Mechanisms</title><link>https://takao.blog/ko/web/nextjs-app-router-caching/</link><pubDate>Thu, 10 Apr 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/ko/web/nextjs-app-router-caching/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nextjs-app-router-caching-ko.png" alt="Featured image of post Demystifying Next.js App Router Caching Mechanisms" /&gt;&lt;h2 id="introduction"&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Next.js App Router 기능 a robust caching architecture designed to optimize loading speeds and reduce backend API overhead.&lt;/p&gt;
&lt;p&gt;However, because Next.js integrates multiple caching layers, developers often run into debugging issues. Common issues include pages displaying stale data or APIs firing too frequently.&lt;/p&gt;
&lt;p&gt;This article clears up the confusion by explaining the &lt;strong&gt;four caching mechanisms&lt;/strong&gt; in Next.js, along with techniques to configure, refresh, and invalidate them.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-the-four-caching-layers-of-nextjs-app-router"&gt;1. The Four Caching Layers of Next.js App Router
&lt;/h2&gt;&lt;p&gt;The Next.js App Router uses four separate caching layers:&lt;/p&gt;</description></item><item><title>Smooth Page Transitions with View Transitions API</title><link>https://takao.blog/ko/web/css-view-transitions-single-page-api/</link><pubDate>Sat, 05 Apr 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/ko/web/css-view-transitions-single-page-api/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/css-view-transitions-single-page-api-ko.png" alt="Featured image of post Smooth Page Transitions with View Transitions API" /&gt;&lt;h2 id="introduction"&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Providing dynamic page transitions is a key factor in elevating the overall user experience (UX) of modern web applications.&lt;/p&gt;
&lt;p&gt;Historically, to morph or fade elements smoothly between page navigations, developers had to import heavy JavaScript libraries like Framer Motion or GSAP. These libraries require deep hooks into rendering lifecycles to delay unmounting while animating old DOM nodes.&lt;/p&gt;
&lt;p&gt;The introduction of the W3C standard &lt;strong&gt;View Transitions API&lt;/strong&gt; simplifies this. It allows browsers to natively capture states and interpolate page layout updates with minimal CSS and JavaScript.&lt;/p&gt;</description></item><item><title>React 19 Official Release and Practical Features Guide</title><link>https://takao.blog/ko/web/react-19-new-features-practical/</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/ko/web/react-19-new-features-practical/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-19-new-features-practical-ko.png" alt="Featured image of post React 19 Official Release and Practical Features Guide" /&gt;&lt;h2 id="introduction"&gt;Introduction
&lt;/h2&gt;&lt;p&gt;React 19 represents a major paradigm shift for frontend development.&lt;/p&gt;
&lt;p&gt;기능 that were previously restricted to meta-frameworks like Next.js—such as &lt;strong&gt;React 서버 Components (RSC)&lt;/strong&gt; and the &lt;strong&gt;Actions API&lt;/strong&gt; for form handling—are now officially integrated into the stable core React library.&lt;/p&gt;
&lt;p&gt;This 가이드 highlights the most important 기능 in React 19, offering practical code examples and upgrading 팁 to clean up your codebase.&lt;/p&gt;</description></item></channel></rss>