<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>React on Severin Bucher | Blog</title><link>https://severinbucher.com/tags/react/</link><description>Recent content in React on Severin Bucher | Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 11 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://severinbucher.com/tags/react/index.xml" rel="self" type="application/rss+xml"/><item><title>Upgrading a Legacy Monorepo to React 18: What Nobody Warns You About</title><link>https://severinbucher.com/posts/upgrading-a-legacy-monorepo-to-react-18/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://severinbucher.com/posts/upgrading-a-legacy-monorepo-to-react-18/</guid><description>&lt;p>React 18 shipped in March 2022. We merged our upgrade in April 2026. If you do that math, yes, we were four years behind. This is a post about what that upgrade actually looked like across a large, multi-generational codebase, and the specific issues that ate most of the time.&lt;/p>
&lt;p>Spoiler: the &amp;ldquo;breaking changes&amp;rdquo; in the official React 18 migration guide are the easy part.&lt;/p>
&lt;h2 id="the-starting-point">The Starting Point&lt;/h2>
&lt;p>Our frontend isn&amp;rsquo;t one app. It&amp;rsquo;s four generations of React code living in the same monorepo, piled up over years of product growth:&lt;/p></description></item><item><title>Enabling TypeScript Strict Mode in a Legacy React Project: A Gradual Approach</title><link>https://severinbucher.com/posts/enabling-typescript-strict-mode-in-a-legacy-react-project/</link><pubDate>Wed, 26 Mar 2025 00:00:00 +0000</pubDate><guid>https://severinbucher.com/posts/enabling-typescript-strict-mode-in-a-legacy-react-project/</guid><description>&lt;p>Our App was created in 2017. It is a React application written in TypeScript. At the time, TypeScript was gaining popularity, but strict type safety wasn&amp;rsquo;t a major concern for most teams. Our knowledge of TypeScript was limited, and the primary goal was to use it for basic type annotations rather than enforcing a fully type-safe codebase.&lt;/p>
&lt;p>As a result, strict mode was never turned on. The codebase ran without the safeguards strict mode brings: strict null checks, no implicit &lt;code>any&lt;/code>, and tighter type inference. As the project grew, that gap started to cost us. Subtle bugs slipped through, and refactoring carried more risk than it should have.&lt;/p></description></item></channel></rss>