<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>TkDodo&apos;s blog</title><description>A technical blog about frontend-development, TypeScript and React</description><link>https://tkdodo.eu/blog</link><language>en-us</language><item><title>The Vertical Codebase</title><link>https://tkdodo.eu/blog/the-vertical-codebase</link><guid isPermaLink="true">https://tkdodo.eu/blog/the-vertical-codebase</guid><description>Let&apos;s take a look at why the common, horizontal code structure is not ideal, where it breaks down, and what we can do about it.</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let&apos;s take a look at why the common, horizontal code structure is not ideal, where it breaks down, and what we can do about it.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/the-vertical-codebase&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Test IDs are an a11y smell</title><link>https://tkdodo.eu/blog/test-ids-are-an-a11y-smell</link><guid isPermaLink="true">https://tkdodo.eu/blog/test-ids-are-an-a11y-smell</guid><description>Users don&apos;t use data-testid, so why do your tests?</description><pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Users don&apos;t use data-testid, so why do your tests?&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/test-ids-are-an-a11y-smell&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Creating Query Abstractions</title><link>https://tkdodo.eu/blog/creating-query-abstractions</link><guid isPermaLink="true">https://tkdodo.eu/blog/creating-query-abstractions</guid><description>Building reusable abstractions on top of libraries that rely on type inference can be deceptively difficult, which is why we need better ways to build those abstractions ...</description><pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Building reusable abstractions on top of libraries that rely on type inference can be deceptively difficult, which is why we need better ways to build those abstractions ...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/creating-query-abstractions&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Building Type-Safe Compound Components</title><link>https://tkdodo.eu/blog/building-type-safe-compound-components</link><guid isPermaLink="true">https://tkdodo.eu/blog/building-type-safe-compound-components</guid><description>Compound Components are great, but should be type-safe. No, this isn&apos;t about the children prop ...</description><pubDate>Fri, 02 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Compound Components are great, but should be type-safe. No, this isn&apos;t about the children prop ...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/building-type-safe-compound-components&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>2025 in Review</title><link>https://tkdodo.eu/blog/2025-in-review</link><guid isPermaLink="true">https://tkdodo.eu/blog/2025-in-review</guid><description>A retrospective on what has happened for me in 2025</description><pubDate>Fri, 26 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A retrospective on what has happened for me in 2025&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/2025-in-review&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Designing Design Systems</title><link>https://tkdodo.eu/blog/designing-design-systems</link><guid isPermaLink="true">https://tkdodo.eu/blog/designing-design-systems</guid><description>I want to write more about what makes a good design system. This is the unstructured list of principles I think matter.</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I want to write more about what makes a good design system. This is the unstructured list of principles I think matter.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/designing-design-systems&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Omit for Discriminated Unions in TypeScript</title><link>https://tkdodo.eu/blog/omit-for-discriminated-unions-in-type-script</link><guid isPermaLink="true">https://tkdodo.eu/blog/omit-for-discriminated-unions-in-type-script</guid><description>Why TypeScript’s built-in Omit breaks discriminated unions, and how a distributive version preserves them.</description><pubDate>Mon, 24 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why TypeScript’s built-in Omit breaks discriminated unions, and how a distributive version preserves them.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/omit-for-discriminated-unions-in-type-script&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Tooltip Components Should Not Exist</title><link>https://tkdodo.eu/blog/tooltip-components-should-not-exist</link><guid isPermaLink="true">https://tkdodo.eu/blog/tooltip-components-should-not-exist</guid><description>A look at why tooltip components are often the wrong abstraction in design systems, leading to accessibility issues, misuse, and inconsistent user experiences.</description><pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A look at why tooltip components are often the wrong abstraction in design systems, leading to accessibility issues, misuse, and inconsistent user experiences.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/tooltip-components-should-not-exist&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Context Inheritance in TanStack Router</title><link>https://tkdodo.eu/blog/context-inheritance-in-tan-stack-router</link><guid isPermaLink="true">https://tkdodo.eu/blog/context-inheritance-in-tan-stack-router</guid><description>An overview of how TanStack Router automatically shares and infers path params, search params, and context between nested routes in a type-safe way.</description><pubDate>Sun, 12 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An overview of how TanStack Router automatically shares and infers path params, search params, and context between nested routes in a type-safe way.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/context-inheritance-in-tan-stack-router&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Deriving Client State from Server State</title><link>https://tkdodo.eu/blog/deriving-client-state-from-server-state</link><guid isPermaLink="true">https://tkdodo.eu/blog/deriving-client-state-from-server-state</guid><description>How to use derived state in React to keep client state and server data aligned without manual sync or effects.</description><pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How to use derived state in React to keep client state and server data aligned without manual sync or effects.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/deriving-client-state-from-server-state&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query Selectors, Supercharged</title><link>https://tkdodo.eu/blog/react-query-selectors-supercharged</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-selectors-supercharged</guid><description>How to get the most out of select, sprinkled with some TypeScript tips.</description><pubDate>Mon, 04 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How to get the most out of select, sprinkled with some TypeScript tips.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-selectors-supercharged&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>The Useless useCallback</title><link>https://tkdodo.eu/blog/the-useless-use-callback</link><guid isPermaLink="true">https://tkdodo.eu/blog/the-useless-use-callback</guid><description>Why most memoization is downright useless...</description><pubDate>Mon, 28 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why most memoization is downright useless...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/the-useless-use-callback&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>The Beauty of TanStack Router</title><link>https://tkdodo.eu/blog/the-beauty-of-tan-stack-router</link><guid isPermaLink="true">https://tkdodo.eu/blog/the-beauty-of-tan-stack-router</guid><description>Yes, it&apos;s type-safe, but there&apos;s so much more to love about TanStack Router.</description><pubDate>Sun, 25 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Yes, it&apos;s type-safe, but there&apos;s so much more to love about TanStack Router.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/the-beauty-of-tan-stack-router&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Concurrent Optimistic Updates in React Query</title><link>https://tkdodo.eu/blog/concurrent-optimistic-updates-in-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/concurrent-optimistic-updates-in-react-query</guid><description>How to build optimistic UI that is resilient to race conditions, even when multiple mutations update the same entity concurrently.</description><pubDate>Mon, 28 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How to build optimistic UI that is resilient to race conditions, even when multiple mutations update the same entity concurrently.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/concurrent-optimistic-updates-in-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>My Open Source Origin Story</title><link>https://tkdodo.eu/blog/my-open-source-origin-story</link><guid isPermaLink="true">https://tkdodo.eu/blog/my-open-source-origin-story</guid><description>A brief story of how I got into Open Source</description><pubDate>Mon, 31 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A brief story of how I got into Open Source&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/my-open-source-origin-story&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>2024 in Review</title><link>https://tkdodo.eu/blog/2024-in-review</link><guid isPermaLink="true">https://tkdodo.eu/blog/2024-in-review</guid><description>A retrospective on what has happened for me in 2024</description><pubDate>Sun, 29 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A retrospective on what has happened for me in 2024&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/2024-in-review&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query - The Bad Parts</title><link>https://tkdodo.eu/blog/react-query-the-bad-parts</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-the-bad-parts</guid><description>In this talk, maintainer Dominik will explore the other side—the less favorable aspects of React Query and situations where it may not be the best fit. No library is perfect; every choice involves trade-offs. By the end of this talk, you&apos;ll have a better understanding of React Query&apos;s limitations and why it remains a compelling choice despite them.</description><pubDate>Sat, 28 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this talk, maintainer Dominik will explore the other side—the less favorable aspects of React Query and situations where it may not be the best fit. No library is perfect; every choice involves trade-offs. By the end of this talk, you&apos;ll have a better understanding of React Query&apos;s limitations and why it remains a compelling choice despite them.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-the-bad-parts&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Ref Callbacks, React 19 and the Compiler</title><link>https://tkdodo.eu/blog/ref-callbacks-react-19-and-the-compiler</link><guid isPermaLink="true">https://tkdodo.eu/blog/ref-callbacks-react-19-and-the-compiler</guid><description>Reflecting on useCallback, how the Compiler changed my thinking about it, and what React 19 has in store for Ref Callbacks...</description><pubDate>Sun, 08 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Reflecting on useCallback, how the Compiler changed my thinking about it, and what React 19 has in store for Ref Callbacks...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/ref-callbacks-react-19-and-the-compiler&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>My Slow Retreat from Twitter</title><link>https://tkdodo.eu/blog/my-slow-retreat-from-twitter</link><guid isPermaLink="true">https://tkdodo.eu/blog/my-slow-retreat-from-twitter</guid><description>A brief reflection on the platform and how I plan to continue with it...</description><pubDate>Tue, 03 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A brief reflection on the platform and how I plan to continue with it...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/my-slow-retreat-from-twitter&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query API Design - Lessons Learned</title><link>https://tkdodo.eu/blog/react-query-api-design-lessons-learned</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-api-design-lessons-learned</guid><description>In this talk, React Query maintainer Dominik will walk us through some of the API design choices that were made in React Query to get to that DX. You&apos;ll hear stories about things that went well, but also about tradeoffs and mistakes that were made, and what lessons we can all learn from those.</description><pubDate>Fri, 25 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this talk, React Query maintainer Dominik will walk us through some of the API design choices that were made in React Query to get to that DX. You&apos;ll hear stories about things that went well, but also about tradeoffs and mistakes that were made, and what lessons we can all learn from those.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-api-design-lessons-learned&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Component Composition is great btw</title><link>https://tkdodo.eu/blog/component-composition-is-great-btw</link><guid isPermaLink="true">https://tkdodo.eu/blog/component-composition-is-great-btw</guid><description>Component composition is one of the best parts of React, and I think we should take more time to break our components into manageable parts before littering one component with conditional renderings.</description><pubDate>Sat, 21 Sep 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Component composition is one of the best parts of React, and I think we should take more time to break our components into manageable parts before littering one component with conditional renderings.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/component-composition-is-great-btw&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>How Infinite Queries work</title><link>https://tkdodo.eu/blog/how-infinite-queries-work</link><guid isPermaLink="true">https://tkdodo.eu/blog/how-infinite-queries-work</guid><description>A serious bug report about infinite queries led me to question it&apos;s architecture, but it all turned out fine in the end ...</description><pubDate>Sat, 14 Sep 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A serious bug report about infinite queries led me to question it&apos;s architecture, but it all turned out fine in the end ...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/how-infinite-queries-work&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Introducing XState Store</title><link>https://tkdodo.eu/blog/introducing-x-state-store</link><guid isPermaLink="true">https://tkdodo.eu/blog/introducing-x-state-store</guid><description>There&apos;s a new state manager in the game, and it ticks all my boxes ...</description><pubDate>Thu, 01 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There&apos;s a new state manager in the game, and it ticks all my boxes ...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/introducing-x-state-store&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Please Stop Using Barrel Files</title><link>https://tkdodo.eu/blog/please-stop-using-barrel-files</link><guid isPermaLink="true">https://tkdodo.eu/blog/please-stop-using-barrel-files</guid><description>Why you probably shouldn&apos;t be adding index.ts files everywhere</description><pubDate>Fri, 26 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why you probably shouldn&apos;t be adding index.ts files everywhere&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/please-stop-using-barrel-files&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React 19 and Suspense - A Drama in 3 Acts</title><link>https://tkdodo.eu/blog/react-19-and-suspense-a-drama-in-3-acts</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-19-and-suspense-a-drama-in-3-acts</guid><description>React 19 is a very promising release - but there&apos;s something not quite right yet with suspense...</description><pubDate>Sun, 16 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;React 19 is a very promising release - but there&apos;s something not quite right yet with suspense...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-19-and-suspense-a-drama-in-3-acts&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Automatic Query Invalidation after Mutations</title><link>https://tkdodo.eu/blog/automatic-query-invalidation-after-mutations</link><guid isPermaLink="true">https://tkdodo.eu/blog/automatic-query-invalidation-after-mutations</guid><description>Even though there is nothing built into React Query, it doesn&apos;t need a lot of code to implement automatic query invalidation in user-land thanks to the global cache callbacks.</description><pubDate>Sat, 25 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Even though there is nothing built into React Query, it doesn&apos;t need a lot of code to implement automatic query invalidation in user-land thanks to the global cache callbacks.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/automatic-query-invalidation-after-mutations&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Zustand and React Context</title><link>https://tkdodo.eu/blog/zustand-and-react-context</link><guid isPermaLink="true">https://tkdodo.eu/blog/zustand-and-react-context</guid><description>Zustand stores a global and don&apos;t need React Context - but sometimes, it makes sense to combine them regardless.</description><pubDate>Sun, 14 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Zustand stores a global and don&apos;t need React Context - but sometimes, it makes sense to combine them regardless.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/zustand-and-react-context&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Avoiding Hydration Mismatches with useSyncExternalStore</title><link>https://tkdodo.eu/blog/avoiding-hydration-mismatches-with-use-sync-external-store</link><guid isPermaLink="true">https://tkdodo.eu/blog/avoiding-hydration-mismatches-with-use-sync-external-store</guid><description>Avoiding hydration mismatches can usually be done in two ways - suppressing the warning or spawning an effect. But is there a third option ... ?</description><pubDate>Wed, 21 Feb 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Avoiding hydration mismatches can usually be done in two ways - suppressing the warning or spawning an effect. But is there a third option ... ?&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/avoiding-hydration-mismatches-with-use-sync-external-store&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>The Query Options API</title><link>https://tkdodo.eu/blog/the-query-options-api</link><guid isPermaLink="true">https://tkdodo.eu/blog/the-query-options-api</guid><description>v5 brought a new, powerful API, especially if you&apos;re using React Query with TypeScript...</description><pubDate>Wed, 17 Jan 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;v5 brought a new, powerful API, especially if you&apos;re using React Query with TypeScript...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/the-query-options-api&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>2023 in Review</title><link>https://tkdodo.eu/blog/2023-in-review</link><guid isPermaLink="true">https://tkdodo.eu/blog/2023-in-review</guid><description>A retrospective on what has happened for me in 2023</description><pubDate>Sat, 30 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A retrospective on what has happened for me in 2023&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/2023-in-review&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Why You Want React Query</title><link>https://tkdodo.eu/blog/why-you-want-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/why-you-want-react-query</guid><description>Let&apos;s take a look at why you&apos;d want a library like React Query, even if you don&apos;t need all the extra features it provides...</description><pubDate>Tue, 07 Nov 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let&apos;s take a look at why you&apos;d want a library like React Query, even if you don&apos;t need all the extra features it provides...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/why-you-want-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>The Uphill Battle of Memoization</title><link>https://tkdodo.eu/blog/the-uphill-battle-of-memoization</link><guid isPermaLink="true">https://tkdodo.eu/blog/the-uphill-battle-of-memoization</guid><description>Exploring why React.memo shouldn&apos;t be your first choice for performance optimizations</description><pubDate>Sat, 30 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Exploring why React.memo shouldn&apos;t be your first choice for performance optimizations&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/the-uphill-battle-of-memoization&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Array Types in TypeScript</title><link>https://tkdodo.eu/blog/array-types-in-type-script</link><guid isPermaLink="true">https://tkdodo.eu/blog/array-types-in-type-script</guid><description>is string[] really better than Array&lt;string&gt;? Of course not!</description><pubDate>Sat, 19 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;is string[] really better than Array&lt;string&gt;? Of course not!&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/array-types-in-type-script&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query and React Context</title><link>https://tkdodo.eu/blog/react-query-and-react-context</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-and-react-context</guid><description>Can it make sense to combine React Query with React Context ? Yes, sometimes ...</description><pubDate>Sat, 22 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Can it make sense to combine React Query with React Context ? Yes, sometimes ...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-and-react-context&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Thinking in React Query</title><link>https://tkdodo.eu/blog/thinking-in-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/thinking-in-react-query</guid><description>In this talk, we will learn how a different mindset can help us understand React Query and work with it efficiently.</description><pubDate>Wed, 07 Jun 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In this talk, we will learn how a different mindset can help us understand React Query and work with it efficiently.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/thinking-in-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>You Might Not Need React Query</title><link>https://tkdodo.eu/blog/you-might-not-need-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/you-might-not-need-react-query</guid><description>React Query is a great library, but like any tool, you should choose it for the right problem</description><pubDate>Sat, 20 May 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;React Query is a great library, but like any tool, you should choose it for the right problem&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/you-might-not-need-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Breaking React Query&apos;s API on purpose</title><link>https://tkdodo.eu/blog/breaking-react-querys-api-on-purpose</link><guid isPermaLink="true">https://tkdodo.eu/blog/breaking-react-querys-api-on-purpose</guid><description>Why good API design matters, even if it means breaking existing APIs in the face of resistance.</description><pubDate>Sun, 16 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why good API design matters, even if it means breaking existing APIs in the face of resistance.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/breaking-react-querys-api-on-purpose&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>OSS Feature Decision Tree</title><link>https://tkdodo.eu/blog/oss-feature-decision-tree</link><guid isPermaLink="true">https://tkdodo.eu/blog/oss-feature-decision-tree</guid><description>An outline of the questions I try to ask myself before adding new features</description><pubDate>Sat, 18 Feb 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An outline of the questions I try to ask myself before adding new features&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/oss-feature-decision-tree&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Why React isn&apos;t dying</title><link>https://tkdodo.eu/blog/why-react-isnt-dying</link><guid isPermaLink="true">https://tkdodo.eu/blog/why-react-isnt-dying</guid><description>Finishing my train of thought about why React is here to stay (for now).</description><pubDate>Sun, 29 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Finishing my train of thought about why React is here to stay (for now).&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/why-react-isnt-dying&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Type-safe React Query</title><link>https://tkdodo.eu/blog/type-safe-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/type-safe-react-query</guid><description>About the difference between &quot;having types&quot; and &quot;being type-safe&quot;...</description><pubDate>Sat, 07 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;About the difference between &quot;having types&quot; and &quot;being type-safe&quot;...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/type-safe-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>2022 in Review</title><link>https://tkdodo.eu/blog/2022-in-review</link><guid isPermaLink="true">https://tkdodo.eu/blog/2022-in-review</guid><description>A retrospective on what has happened for me in 2022</description><pubDate>Sat, 31 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A retrospective on what has happened for me in 2022&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/2022-in-review&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Inside React Query</title><link>https://tkdodo.eu/blog/inside-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/inside-react-query</guid><description>Taking a look under the hood of React Query</description><pubDate>Sat, 03 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Taking a look under the hood of React Query&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/inside-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Working with Zustand</title><link>https://tkdodo.eu/blog/working-with-zustand</link><guid isPermaLink="true">https://tkdodo.eu/blog/working-with-zustand</guid><description>Let&apos;s dive into some tips for working with Zustand - one of my favourite client state management libraries in React.</description><pubDate>Sun, 20 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let&apos;s dive into some tips for working with Zustand - one of my favourite client state management libraries in React.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/working-with-zustand&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Refactor impactfully</title><link>https://tkdodo.eu/blog/refactor-impactfully</link><guid isPermaLink="true">https://tkdodo.eu/blog/refactor-impactfully</guid><description>Why not every refactoring is worth doing...</description><pubDate>Sun, 13 Nov 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why not every refactoring is worth doing...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/refactor-impactfully&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Seeding the Query Cache</title><link>https://tkdodo.eu/blog/seeding-the-query-cache</link><guid isPermaLink="true">https://tkdodo.eu/blog/seeding-the-query-cache</guid><description>With suspense for data fetching on the horizon, it is now more important than ever to make sure your cache is seeded properly to avoid fetch waterfalls.</description><pubDate>Sat, 22 Oct 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;With suspense for data fetching on the horizon, it is now more important than ever to make sure your cache is seeded properly to avoid fetch waterfalls.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/seeding-the-query-cache&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Refs, Events and Escape Hatches</title><link>https://tkdodo.eu/blog/refs-events-and-escape-hatches</link><guid isPermaLink="true">https://tkdodo.eu/blog/refs-events-and-escape-hatches</guid><description>Refs can provide a way to sidestep dependency arrays without violating any rules, and the proposed useEvent hook might make working with functions and effects a lot easier...</description><pubDate>Sat, 17 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Refs can provide a way to sidestep dependency arrays without violating any rules, and the proposed useEvent hook might make working with functions and effects a lot easier...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/refs-events-and-escape-hatches&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query meets React Router</title><link>https://tkdodo.eu/blog/react-query-meets-react-router</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-meets-react-router</guid><description>React Query and React Router are a match made in heaven.</description><pubDate>Sun, 28 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;React Query and React Router are a match made in heaven.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-meets-react-router&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Avoiding useEffect with callback refs</title><link>https://tkdodo.eu/blog/avoiding-use-effect-with-callback-refs</link><guid isPermaLink="true">https://tkdodo.eu/blog/avoiding-use-effect-with-callback-refs</guid><description>Interacting with DOM nodes doesn&apos;t necessarily need useEffect</description><pubDate>Sun, 14 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Interacting with DOM nodes doesn&apos;t necessarily need useEffect&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/avoiding-use-effect-with-callback-refs&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query FAQs</title><link>https://tkdodo.eu/blog/react-query-fa-qs</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-fa-qs</guid><description>Answering the most frequently asked React Query questions</description><pubDate>Fri, 24 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Answering the most frequently asked React Query questions&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-fa-qs&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Hooks, Dependencies and Stale Closures</title><link>https://tkdodo.eu/blog/hooks-dependencies-and-stale-closures</link><guid isPermaLink="true">https://tkdodo.eu/blog/hooks-dependencies-and-stale-closures</guid><description>Let&apos;s demystify what stale closures are in combination with react hooks with the help of the analogy of taking a photo ...</description><pubDate>Sun, 24 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let&apos;s demystify what stale closures are in combination with react hooks with the help of the analogy of taking a photo ...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/hooks-dependencies-and-stale-closures&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query and Forms</title><link>https://tkdodo.eu/blog/react-query-and-forms</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-and-forms</guid><description>Forms tend to blur the line between server and client state, so let&apos;s see how that plays together with React Query.</description><pubDate>Sun, 10 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Forms tend to blur the line between server and client state, so let&apos;s see how that plays together with React Query.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-and-forms&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Use Urgency</title><link>https://tkdodo.eu/blog/use-urgency</link><guid isPermaLink="true">https://tkdodo.eu/blog/use-urgency</guid><description>Getting huge refactorings going is not an easy task, but urgency can help here.</description><pubDate>Fri, 25 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Getting huge refactorings going is not an easy task, but urgency can help here.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/use-urgency&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>optional vs. undefined</title><link>https://tkdodo.eu/blog/optional-vs-undefined</link><guid isPermaLink="true">https://tkdodo.eu/blog/optional-vs-undefined</guid><description>There is a subtle difference between optional fields and required, but potentially undefined ones.</description><pubDate>Sat, 19 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There is a subtle difference between optional fields and required, but potentially undefined ones.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/optional-vs-undefined&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Offline React Query</title><link>https://tkdodo.eu/blog/offline-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/offline-react-query</guid><description>A glimpse at what v4 will bring for offline queries</description><pubDate>Sat, 05 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A glimpse at what v4 will bring for offline queries&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/offline-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Always provide customer value</title><link>https://tkdodo.eu/blog/always-provide-customer-value</link><guid isPermaLink="true">https://tkdodo.eu/blog/always-provide-customer-value</guid><description>Finding the right spot for doing a refactoring can be tricky</description><pubDate>Sat, 29 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Finding the right spot for doing a refactoring can be tricky&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/always-provide-customer-value&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Road to Refactoring</title><link>https://tkdodo.eu/blog/road-to-refactoring</link><guid isPermaLink="true">https://tkdodo.eu/blog/road-to-refactoring</guid><description>A blogpost series about patterns that have helped me succeed with refactorings</description><pubDate>Sat, 22 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A blogpost series about patterns that have helped me succeed with refactorings&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/road-to-refactoring&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>2021 in Review</title><link>https://tkdodo.eu/blog/2021-in-review</link><guid isPermaLink="true">https://tkdodo.eu/blog/2021-in-review</guid><description>A retrospective on what has happened for me in 2021</description><pubDate>Tue, 21 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A retrospective on what has happened for me in 2021&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/2021-in-review&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Beware the leaking any</title><link>https://tkdodo.eu/blog/beware-the-leaking-any</link><guid isPermaLink="true">https://tkdodo.eu/blog/beware-the-leaking-any</guid><description>Any is not among my favourite TypeScript types, but it is the one you will inevitably encounter. Let&apos;s see what makes it so dangerous.</description><pubDate>Sat, 04 Dec 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Any is not among my favourite TypeScript types, but it is the one you will inevitably encounter. Let&apos;s see what makes it so dangerous.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/beware-the-leaking-any&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Leveraging the Query Function Context</title><link>https://tkdodo.eu/blog/leveraging-the-query-function-context</link><guid isPermaLink="true">https://tkdodo.eu/blog/leveraging-the-query-function-context</guid><description>Use what React Query provides for optimal type safety</description><pubDate>Tue, 26 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Use what React Query provides for optimal type safety&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/leveraging-the-query-function-context&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Mastering Mutations in React Query</title><link>https://tkdodo.eu/blog/mastering-mutations-in-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/mastering-mutations-in-react-query</guid><description>Learn all about the concept of performing side effects on the server with React Query.</description><pubDate>Sat, 09 Oct 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Learn all about the concept of performing side effects on the server with React Query.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/mastering-mutations-in-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>useState vs useReducer</title><link>https://tkdodo.eu/blog/use-state-vs-use-reducer</link><guid isPermaLink="true">https://tkdodo.eu/blog/use-state-vs-use-reducer</guid><description>To useState or useReducer, that is the question...</description><pubDate>Sun, 26 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;To useState or useReducer, that is the question...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/use-state-vs-use-reducer&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query Error Handling</title><link>https://tkdodo.eu/blog/react-query-error-handling</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-error-handling</guid><description>After covering the sunshine cases of data fetching, it&apos;s time to look at situations where things don&apos;t go as planned and &quot;Something went wrong...&quot;</description><pubDate>Fri, 10 Sep 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After covering the sunshine cases of data fetching, it&apos;s time to look at situations where things don&apos;t go as planned and &quot;Something went wrong...&quot;&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-error-handling&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query as a State Manager</title><link>https://tkdodo.eu/blog/react-query-as-a-state-manager</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-as-a-state-manager</guid><description>Everything you need to know to make React Query your single source of truth state manager for your async state</description><pubDate>Fri, 20 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Everything you need to know to make React Query your single source of truth state manager for your async state&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-as-a-state-manager&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Placeholder and Initial Data in React Query</title><link>https://tkdodo.eu/blog/placeholder-and-initial-data-in-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/placeholder-and-initial-data-in-react-query</guid><description>Learn about the different possibilities to avoid loading spinners in React Query.</description><pubDate>Mon, 09 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Learn about the different possibilities to avoid loading spinners in React Query.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/placeholder-and-initial-data-in-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>About async functions</title><link>https://tkdodo.eu/blog/about-async-functions</link><guid isPermaLink="true">https://tkdodo.eu/blog/about-async-functions</guid><description>A deep dive into async functions and how they are different from promise chaining</description><pubDate>Fri, 23 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A deep dive into async functions and how they are different from promise chaining&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/about-async-functions&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Effective React Query Keys</title><link>https://tkdodo.eu/blog/effective-react-query-keys</link><guid isPermaLink="true">https://tkdodo.eu/blog/effective-react-query-keys</guid><description>Learn how to structure React Query Keys effectively as your App grows</description><pubDate>Sun, 13 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Learn how to structure React Query Keys effectively as your App grows&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/effective-react-query-keys&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Using WebSockets with React Query</title><link>https://tkdodo.eu/blog/using-web-sockets-with-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/using-web-sockets-with-react-query</guid><description>A step-by-step guide on how to make real-time notifications work with react-query</description><pubDate>Sun, 06 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A step-by-step guide on how to make real-time notifications work with react-query&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/using-web-sockets-with-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query and TypeScript</title><link>https://tkdodo.eu/blog/react-query-and-type-script</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-and-type-script</guid><description>Combine two of the most powerful tools for React Apps to produce great user experience, developer experience and type safety.</description><pubDate>Sun, 16 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Combine two of the most powerful tools for React Apps to produce great user experience, developer experience and type safety.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-and-type-script&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>How can I ... ?</title><link>https://tkdodo.eu/blog/how-can-i</link><guid isPermaLink="true">https://tkdodo.eu/blog/how-can-i</guid><description>Asking the right questions is a form of art that needs to be mastered.</description><pubDate>Sat, 24 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Asking the right questions is a form of art that needs to be mastered.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/how-can-i&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Testing React Query</title><link>https://tkdodo.eu/blog/testing-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/testing-react-query</guid><description>Let&apos;s take a look at how to efficiently test custom useQuery hooks and components using them.</description><pubDate>Sun, 04 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let&apos;s take a look at how to efficiently test custom useQuery hooks and components using them.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/testing-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Status Checks in React Query</title><link>https://tkdodo.eu/blog/status-checks-in-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/status-checks-in-react-query</guid><description>How the wrong status check order can negatively impact user experience</description><pubDate>Sat, 27 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How the wrong status check order can negatively impact user experience&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/status-checks-in-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query Render Optimizations</title><link>https://tkdodo.eu/blog/react-query-render-optimizations</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-render-optimizations</guid><description>An advanced guide to minimize component re-renderings when using React Query</description><pubDate>Sat, 20 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;An advanced guide to minimize component re-renderings when using React Query&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-render-optimizations&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>useState for one-time initializations</title><link>https://tkdodo.eu/blog/use-state-for-one-time-initializations</link><guid isPermaLink="true">https://tkdodo.eu/blog/use-state-for-one-time-initializations</guid><description>Why you shouldn&apos;t rely on useMemo for guaranteed referential stability but prefer useState instead</description><pubDate>Fri, 12 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why you shouldn&apos;t rely on useMemo for guaranteed referential stability but prefer useState instead&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/use-state-for-one-time-initializations&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>React Query Data Transformations</title><link>https://tkdodo.eu/blog/react-query-data-transformations</link><guid isPermaLink="true">https://tkdodo.eu/blog/react-query-data-transformations</guid><description>Learn the possibilities to perform the quite common and important task of transforming your data with react-query</description><pubDate>Wed, 10 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Learn the possibilities to perform the quite common and important task of transforming your data with react-query&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/react-query-data-transformations&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>No love for boolean parameters</title><link>https://tkdodo.eu/blog/no-love-for-boolean-parameters</link><guid isPermaLink="true">https://tkdodo.eu/blog/no-love-for-boolean-parameters</guid><description>Innocent looking boolean parameters, or flags, are often the reason for hard to maintain legacy code. Resist the urge of adding them!</description><pubDate>Sun, 28 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Innocent looking boolean parameters, or flags, are often the reason for hard to maintain legacy code. Resist the urge of adding them!&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/no-love-for-boolean-parameters&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Things to know about useState</title><link>https://tkdodo.eu/blog/things-to-know-about-use-state</link><guid isPermaLink="true">https://tkdodo.eu/blog/things-to-know-about-use-state</guid><description>5 things everyone needs to know about useState</description><pubDate>Sat, 13 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;5 things everyone needs to know about useState&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/things-to-know-about-use-state&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Simplifying useEffect</title><link>https://tkdodo.eu/blog/simplifying-use-effect</link><guid isPermaLink="true">https://tkdodo.eu/blog/simplifying-use-effect</guid><description>useEffect hooks can be hard to reason about, but I have 5 principles that can help to manage them</description><pubDate>Sat, 23 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;useEffect hooks can be hard to reason about, but I have 5 principles that can help to manage them&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/simplifying-use-effect&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Flow to TypeScript migration journey</title><link>https://tkdodo.eu/blog/flow-to-type-script-migration-journey</link><guid isPermaLink="true">https://tkdodo.eu/blog/flow-to-type-script-migration-journey</guid><description>How we migrated over 100k lines of code from Flow to TypeScript. A Journey.</description><pubDate>Mon, 04 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How we migrated over 100k lines of code from Flow to TypeScript. A Journey.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/flow-to-type-script-migration-journey&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>On naming things</title><link>https://tkdodo.eu/blog/on-naming-things</link><guid isPermaLink="true">https://tkdodo.eu/blog/on-naming-things</guid><description>Naming is hard. Naming is subjective. Yet there are some things we can objectively do when it comes to finding proper names.</description><pubDate>Tue, 08 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Naming is hard. Naming is subjective. Yet there are some things we can objectively do when it comes to finding proper names.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/on-naming-things&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Practical React Query</title><link>https://tkdodo.eu/blog/practical-react-query</link><guid isPermaLink="true">https://tkdodo.eu/blog/practical-react-query</guid><description>Let me share with you the experiences I have made lately with React Query. Fetching data in React has never been this delightful...</description><pubDate>Mon, 16 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Let me share with you the experiences I have made lately with React Query. Fetching data in React has never been this delightful...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/practical-react-query&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Avoiding legacy systems</title><link>https://tkdodo.eu/blog/avoiding-legacy-systems</link><guid isPermaLink="true">https://tkdodo.eu/blog/avoiding-legacy-systems</guid><description>Every software will eventually become a nightmare to maintain, unless we actively do something about it.</description><pubDate>Sun, 01 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Every software will eventually become a nightmare to maintain, unless we actively do something about it.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/avoiding-legacy-systems&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Putting props to useState</title><link>https://tkdodo.eu/blog/putting-props-to-use-state</link><guid isPermaLink="true">https://tkdodo.eu/blog/putting-props-to-use-state</guid><description>Part deux of the useState pitfalls series is here, showing patterns to help solve the common use-case of initializing state with a prop.</description><pubDate>Sun, 25 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Part deux of the useState pitfalls series is here, showing patterns to help solve the common use-case of initializing state with a prop.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/putting-props-to-use-state&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>The power of const assertions</title><link>https://tkdodo.eu/blog/the-power-of-const-assertions</link><guid isPermaLink="true">https://tkdodo.eu/blog/the-power-of-const-assertions</guid><description>const assertions are a criminally underused TypeScript feature - learn all about them here, now</description><pubDate>Thu, 08 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;const assertions are a criminally underused TypeScript feature - learn all about them here, now&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/the-power-of-const-assertions&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Pedantic index signatures in TypeScript 4.1</title><link>https://tkdodo.eu/blog/pedantic-index-signatures-in-type-script-4-1</link><guid isPermaLink="true">https://tkdodo.eu/blog/pedantic-index-signatures-in-type-script-4-1</guid><description>Accessing objects and arrays has never been safe in TypeScript, but this is about to change ...</description><pubDate>Sun, 20 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Accessing objects and arrays has never been safe in TypeScript, but this is about to change ...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/pedantic-index-signatures-in-type-script-4-1&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Why I don&apos;t like reduce</title><link>https://tkdodo.eu/blog/why-i-dont-like-reduce</link><guid isPermaLink="true">https://tkdodo.eu/blog/why-i-dont-like-reduce</guid><description>If you know me, you know I&apos;m no fan of Array.reduce. I&apos;ll explain why in detail in this post.</description><pubDate>Wed, 09 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you know me, you know I&apos;m no fan of Array.reduce. I&apos;ll explain why in detail in this post.&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/why-i-dont-like-reduce&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Calling JavaScript from TypeScript</title><link>https://tkdodo.eu/blog/calling-java-script-from-type-script</link><guid isPermaLink="true">https://tkdodo.eu/blog/calling-java-script-from-type-script</guid><description>Gradually migrating from JS to TS is not without difficulties - here are some tricks to smoothen the interoperability</description><pubDate>Fri, 04 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Gradually migrating from JS to TS is not without difficulties - here are some tricks to smoothen the interoperability&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/calling-java-script-from-type-script&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Solving conflicts in package-lock.json</title><link>https://tkdodo.eu/blog/solving-conflicts-in-package-lock-json</link><guid isPermaLink="true">https://tkdodo.eu/blog/solving-conflicts-in-package-lock-json</guid><description>Why you should never delete package-lock.json and how npm can solve the conflicts for you</description><pubDate>Wed, 02 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Why you should never delete package-lock.json and how npm can solve the conflicts for you&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/solving-conflicts-in-package-lock-json&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Don&apos;t over useState</title><link>https://tkdodo.eu/blog/dont-over-use-state</link><guid isPermaLink="true">https://tkdodo.eu/blog/dont-over-use-state</guid><description>The first part of the useState pitfalls series is all about avoiding state altogether. Lots of things might not even be state after all...</description><pubDate>Sat, 29 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The first part of the useState pitfalls series is all about avoiding state altogether. Lots of things might not even be state after all...&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/dont-over-use-state&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item><item><title>Exhaustive matching in TypeScript</title><link>https://tkdodo.eu/blog/exhaustive-matching-in-type-script</link><guid isPermaLink="true">https://tkdodo.eu/blog/exhaustive-matching-in-type-script</guid><pubDate>Sun, 09 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;margin-top: 50px; font-style: italic;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://tkdodo.eu/blog/exhaustive-matching-in-type-script&quot;&gt;Keep reading&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;</content:encoded></item></channel></rss>