{"id":"https:\/\/overreacted.io\/","title":"overreacted \u2014 A blog by Dan Abramov","updated":"2026-04-15T19:25:08.129Z","generator":"Feed for Node.js","author":{"name":"Dan Abramov","email":"dan.abramov@gmail.com","uri":"https:\/\/overreacted.io\/"},"link":[{"@attributes":{"rel":"alternate","href":"https:\/\/overreacted.io\/"}},{"@attributes":{"rel":"self","href":"https:\/\/overreacted.io\/atom.xml"}}],"subtitle":"A blog by Dan Abramov","logo":"https:\/\/github.com\/gaearon.png","icon":"https:\/\/overreacted.io\/\/icon.png","entry":[{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/a-social-filesystem\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/a-social-filesystem\/"}},"updated":"2026-01-18T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/introducing-rsc-explorer\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/introducing-rsc-explorer\/"}},"updated":"2025-12-19T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/hire-me-in-japan\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/hire-me-in-japan\/"}},"updated":"2025-11-11T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/how-to-fix-any-bug\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/how-to-fix-any-bug\/"}},"updated":"2025-10-21T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/where-its-at\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/where-its-at\/"}},"updated":"2025-10-02T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/open-social\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/open-social\/"}},"updated":"2025-09-26T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/a-lean-syntax-primer\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/a-lean-syntax-primer\/"}},"updated":"2025-09-02T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/beyond-booleans\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/beyond-booleans\/"}},"updated":"2025-08-16T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/the-math-is-haunted\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/the-math-is-haunted\/"}},"updated":"2025-07-30T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/suppressions-of-suppressions\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/suppressions-of-suppressions\/"}},"updated":"2025-06-11T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/im-doing-a-little-consulting\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/im-doing-a-little-consulting\/"}},"updated":"2025-06-11T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/how-imports-work-in-rsc\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/how-imports-work-in-rsc\/"}},"updated":"2025-06-05T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/rsc-for-lisp-developers\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/rsc-for-lisp-developers\/"}},"updated":"2025-06-01T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/progressive-json\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/progressive-json\/"}},"updated":"2025-05-31T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/why-does-rsc-integrate-with-a-bundler\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/why-does-rsc-integrate-with-a-bundler\/"}},"updated":"2025-05-30T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/one-roundtrip-per-navigation\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/one-roundtrip-per-navigation\/"}},"updated":"2025-05-29T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/static-as-a-server\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/static-as-a-server\/"}},"updated":"2025-05-08T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/rsc-for-astro-developers\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/rsc-for-astro-developers\/"}},"updated":"2025-05-06T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/functional-html\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/functional-html\/"}},"updated":"2025-05-02T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/what-does-use-client-do\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/what-does-use-client-do\/"}},"updated":"2025-04-25T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/impossible-components\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/impossible-components\/"}},"updated":"2025-04-22T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/jsx-over-the-wire\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/jsx-over-the-wire\/"}},"updated":"2025-04-16T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/react-for-two-computers\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/react-for-two-computers\/"}},"updated":"2025-04-09T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/the-two-reacts\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/the-two-reacts\/"}},"updated":"2024-01-04T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/a-chain-reaction\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/a-chain-reaction\/"}},"updated":"2023-12-11T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/npm-audit-broken-by-design\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/npm-audit-broken-by-design\/"}},"updated":"2021-07-07T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/before-you-memo\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/before-you-memo\/"}},"updated":"2021-02-23T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/the-wet-codebase\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/the-wet-codebase\/"}},"updated":"2020-07-13T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/goodbye-clean-code\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/goodbye-clean-code\/"}},"updated":"2020-01-11T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/my-decade-in-review\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/my-decade-in-review\/"}},"updated":"2020-01-01T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/what-are-the-react-team-principles\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/what-are-the-react-team-principles\/"}},"updated":"2019-12-25T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/on-let-vs-const\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/on-let-vs-const\/"}},"updated":"2019-12-22T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/what-is-javascript-made-of\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/what-is-javascript-made-of\/"}},"updated":"2019-12-20T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/how-does-the-development-mode-work\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/how-does-the-development-mode-work\/"}},"updated":"2019-08-04T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/algebraic-effects-for-the-rest-of-us\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/algebraic-effects-for-the-rest-of-us\/"}},"updated":"2019-07-21T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/preparing-for-tech-talk-part-3-content\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/preparing-for-tech-talk-part-3-content\/"}},"updated":"2019-07-10T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/name-it-and-they-will-come\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/name-it-and-they-will-come\/"}},"updated":"2019-03-25T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/writing-resilient-components\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/writing-resilient-components\/"}},"updated":"2019-03-16T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/a-complete-guide-to-useeffect\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/a-complete-guide-to-useeffect\/"}},"updated":"2019-03-09T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/how-are-function-components-different-from-classes\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/how-are-function-components-different-from-classes\/"}},"updated":"2019-03-03T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/coping-with-feedback\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/coping-with-feedback\/"}},"updated":"2019-03-02T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/fix-like-no-ones-watching\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/fix-like-no-ones-watching\/"}},"updated":"2019-02-15T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/making-setinterval-declarative-with-react-hooks\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/making-setinterval-declarative-with-react-hooks\/"}},"updated":"2019-02-04T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/react-as-a-ui-runtime\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/react-as-a-ui-runtime\/"}},"updated":"2019-02-02T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/why-isnt-x-a-hook\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/why-isnt-x-a-hook\/"}},"updated":"2019-01-26T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/the-bug-o-notation\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/the-bug-o-notation\/"}},"updated":"2019-01-25T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/preparing-for-tech-talk-part-2-what-why-and-how\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/preparing-for-tech-talk-part-2-what-why-and-how\/"}},"updated":"2019-01-07T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/the-elements-of-ui-engineering\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/the-elements-of-ui-engineering\/"}},"updated":"2018-12-30T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/things-i-dont-know-as-of-2018\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/things-i-dont-know-as-of-2018\/"}},"updated":"2018-12-28T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/preparing-for-tech-talk-part-1-motivation\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/preparing-for-tech-talk-part-1-motivation\/"}},"updated":"2018-12-26T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/why-do-hooks-rely-on-call-order\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/why-do-hooks-rely-on-call-order\/"}},"updated":"2018-12-13T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/optimized-for-change\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/optimized-for-change\/"}},"updated":"2018-12-12T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/how-does-setstate-know-what-to-do\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/how-does-setstate-know-what-to-do\/"}},"updated":"2018-12-09T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/my-wishlist-for-hot-reloading\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/my-wishlist-for-hot-reloading\/"}},"updated":"2018-12-08T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/why-do-react-elements-have-typeof-property\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/why-do-react-elements-have-typeof-property\/"}},"updated":"2018-12-03T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/how-does-react-tell-a-class-from-a-function\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/how-does-react-tell-a-class-from-a-function\/"}},"updated":"2018-12-02T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}},{"title":{"@attributes":{"type":"html"}},"id":"https:\/\/overreacted.io\/why-do-we-write-super-props\/","link":{"@attributes":{"href":"https:\/\/overreacted.io\/why-do-we-write-super-props\/"}},"updated":"2018-11-30T00:00:00.000Z","summary":{"@attributes":{"type":"html"}}}]}