<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Evanrobby Macharia - Notebook</title><description>Short pieces on the parts of frontend work that took longest to get right - data fetching, forms, state and performance.</description><link>https://www.evanrobbymacharia.com/</link><language>en-gb</language><item><title>Infinite scroll that doesn&apos;t fight the user</title><link>https://www.evanrobbymacharia.com/notebook/infinite-scroll-that-doesnt-fight-the-user/</link><guid isPermaLink="true">https://www.evanrobbymacharia.com/notebook/infinite-scroll-that-doesnt-fight-the-user/</guid><description>Pagination is easy. Infinite scroll is easy. Making one feel like the other - stable scroll position, a real end state, a back button that works - took me three attempts.</description><pubDate>Sat, 14 Mar 2026 00:00:00 GMT</pubDate><category>TanStack Query</category><author>evansrobbie5311@gmail.com (Evanrobby Macharia)</author></item><item><title>Forms I no longer dread</title><link>https://www.evanrobbymacharia.com/notebook/forms-i-no-longer-dread/</link><guid isPermaLink="true">https://www.evanrobbymacharia.com/notebook/forms-i-no-longer-dread/</guid><description>Formik and Yup got me most of the way; Zod and a shared schema finished the job.</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate><category>Forms</category><author>evansrobbie5311@gmail.com (Evanrobby Macharia)</author></item><item><title>URL state without the mess</title><link>https://www.evanrobbymacharia.com/notebook/url-state-without-the-mess/</link><guid isPermaLink="true">https://www.evanrobbymacharia.com/notebook/url-state-without-the-mess/</guid><description>Search params are state. Treating them that way made filters shareable and the back button honest.</description><pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate><category>Next.js</category><author>evansrobbie5311@gmail.com (Evanrobby Macharia)</author></item><item><title>Framer Motion, but restrained</title><link>https://www.evanrobbymacharia.com/notebook/framer-motion-but-restrained/</link><guid isPermaLink="true">https://www.evanrobbymacharia.com/notebook/framer-motion-but-restrained/</guid><description>Three motion patterns I reuse, and the ones I removed after watching people use the site.</description><pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate><category>Animation</category><author>evansrobbie5311@gmail.com (Evanrobby Macharia)</author></item><item><title>Intersection Observer patterns</title><link>https://www.evanrobbymacharia.com/notebook/intersection-observer-patterns/</link><guid isPermaLink="true">https://www.evanrobbymacharia.com/notebook/intersection-observer-patterns/</guid><description>Lazy sections, sticky headers and scroll spies out of one small hook.</description><pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate><category>React</category><author>evansrobbie5311@gmail.com (Evanrobby Macharia)</author></item><item><title>Making a Next.js site actually fast</title><link>https://www.evanrobbymacharia.com/notebook/making-a-nextjs-site-actually-fast/</link><guid isPermaLink="true">https://www.evanrobbymacharia.com/notebook/making-a-nextjs-site-actually-fast/</guid><description>Where the time went on a 3,000-listing marketplace, and what moved the numbers.</description><pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate><category>Performance</category><author>evansrobbie5311@gmail.com (Evanrobby Macharia)</author></item></channel></rss>