<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><description>🧊 Devs from Siberia building open-source tools.&#xA;reactuse https://reactuse.org&#xA;Everything TypeScript-first.</description><link>https://bsky.app/profile/debabin.bsky.social</link><title>@debabin.bsky.social - siberiacancode</title><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mvzas6nw722g</link><description>reactuse is holding steady above 10K weekly downloads on npm 📈&#xA;&#xA;Not a one-week spike — 10K+ devs reaching for these hooks every single week.&#xA;&#xA;Huge thank you to everyone building with it 🖤&#xA;&#xA;reactuse.org</description><pubDate>21 Sep 2026 08:03 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mvzas6nw722g</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mvzanddlg22g</link><description>Infinite scroll without the wiring 📜&#xA;&#xA;useInfiniteScroll calls your loader when the user nears the end — attach one ref, pass a function, done. No sentinel, no scroll math.&#xA;&#xA;reactuse.org #reactjs</description><pubDate>21 Sep 2026 08:01 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mvzanddlg22g</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mvu5czxapc2f</link><description>Know the moment an element hits the viewport 👀&#xA;&#xA;useIntersectionObserver powers lazy loading, infinite scroll, reveal-on-scroll animations and view tracking — one hook, any of them.&#xA;&#xA;Built on IntersectionObserver&#xA;&#xA;reactuse.org #webdev</description><pubDate>19 Sep 2026 07:18 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mvu5czxapc2f</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mvrww7fj622u</link><description>Skills that make your AI agent actually good at unit tests🧪&#xA;&#xA;Agent skills for testing React hooks — they teach your AI assistant to write tests that check what a hook promises, not how it&#39;s built.&#xA;&#xA;Grill any hook, then let the agent write them 👇&#xA;&#xA;reactuse.org/blog/09.2026-testing-hooks-with-skills&#xA;https://reactuse.org/blog/09.2026-testing-hooks-with-skills</description><pubDate>18 Sep 2026 10:18 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mvrww7fj622u</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mvrc6aazus2u</link><description>Most React hook tests check the wrong thing 🧪&#xA;&#xA;They spy on listeners and count timer ticks — proving how the hook works, not what it promises.&#xA;&#xA;New post: test the contract instead. Best line — cleanup is the absence of behavior.&#xA;&#xA;reactuse.org/blog/09.2026-testing-hooks-with-skills&#xA;https://reactuse.org/blog/09.2026-testing-hooks-with-skills</description><pubDate>18 Sep 2026 04:07 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mvrc6aazus2u</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mvhjhtdquk2f</link><description>Countdown timers, done in one hook ⏱&#xA;&#xA;useTimer gives you the count plus start / pause / restart controls — perfect for OTP resends, quizzes, sales countdowns.&#xA;&#xA;reactuse.org #reactjs</description><pubDate>14 Sep 2026 06:51 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mvhjhtdquk2f</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3muhiv77i7s2n</link><description>reactuse patch — two subtle timing bugs squashed 🐛&#xA;&#xA;· useTimer went negative past zero on fractional counts (useTimer(2.5)) — now clamps to 0&#xA;· useThrottleCallback let a call slip through the throttle window right after a trailing call&#xA;Update 👇</description><pubDate>01 Sep 2026 13:15 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3muhiv77i7s2n</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtlrpjd45s2j</link><description>reactuse v1.0.15 — useImage got a full rewrite 🖼&#xA;&#xA;It&#39;s now a standalone hook built on a native Image by default, not fetch api&#xA;&#xA;The primitive behind avatar components: show a fallback until the image is ready. reactuse.org&#xA;https://reactuse.org/</description><pubDate>21 Aug 2026 12:38 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtlrpjd45s2j</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtlp7b5tes2t</link><description>https://www.youtube.com/watch?v=v03ptR2gr3A&amp;t=102s</description><pubDate>21 Aug 2026 11:53 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtlp7b5tes2t</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtkygbbtac2o</link><description>ChatGPT—the top-tier model—literally gave me an SSR check inside `useEffect`;</description><pubDate>21 Aug 2026 05:06 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtkygbbtac2o</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtkyf5b5ik2o</link><description>It’s already been two years since I submitted a simple PR for shadcn/ui 🫠&#xA;https://github.com/shadcn-ui/ui/pull/2822</description><pubDate>21 Aug 2026 05:05 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtkyf5b5ik2o</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtiurr52xc2q</link><description>https://npmx.dev/package/@vitejs/plugin-react#user-content-rust-react-compiler&#xA;&#xA;React Compiler is now enabled by default in @vitejs/plugin-react.</description><pubDate>20 Aug 2026 08:55 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtiurr52xc2q</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtip3yv43k2q</link><description>https://reactuse.org/blog/08.2026-memoization</description><pubDate>20 Aug 2026 07:14 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtip3yv43k2q</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtidhxy24c2q</link><description>More on useMediaStream &#xA;&#xA;Swap camera constraints live with apply() — change resolution or flip front/back camera without tearing down the stream.</description><pubDate>20 Aug 2026 03:46 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtidhxy24c2q</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtgfpdgpl22b</link><description>Put a live camera feed in your React app 📸&#xA;&#xA;useMediaStream wraps getUserMedia — attach the ref to a &lt;video&gt;, call start(), and you&#39;ve got the webcam streaming. Stop, restart &amp; swap constraints included.&#xA;&#xA;Built on the getUserMedia API&#xA;&#xA;reactuse.org #webdev</description><pubDate>19 Aug 2026 09:20 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtgfpdgpl22b</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtdnq2oxis2c</link><description>https://reactuse.org/blog/08.2026-useclickoutside-hook</description><pubDate>18 Aug 2026 07:06 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtdnq2oxis2c</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtdmfbz4as2c</link><description>Your web app can make the phone buzzzzzzzzz &#xA;&#xA;useVibrate triggers device vibration with one call — great for game feedback, alerts or confirming an action on mobile.&#xA;&#xA;Built on the Vibration API&#xA;&#xA;reactuse.org #webdev</description><pubDate>18 Aug 2026 06:42 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtdmfbz4as2c</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mtbpf4ofmk2k</link><description>reactuse v1.0.13 is out 🩹&#xA; &#xA; The fix: useUrlSearchParam &amp; useUrlSearchParams were writing to the URL during render.&#xA;&#xA;On Next.js App Router that broke navigation and threw the &#34;update a component while rendering&#34; warning 👇</description><pubDate>17 Aug 2026 12:30 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mtbpf4ofmk2k</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mt4sk7qbns22</link><description>New coolifyio design is huge</description><pubDate>15 Aug 2026 13:43 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mt4sk7qbns22</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mt4q77dexk2e</link><description>reactuse just crossed 10,000 weekly downloads on npm&#xA;&#xA;From a side project to 10K devs a week reaching for these hooks. Zero dependencies, fully typed, still growing.&#xA;&#xA;Thank you to everyone shipping with it 🖤&#xA;&#xA;reactuse.org</description><pubDate>15 Aug 2026 13:01 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mt4q77dexk2e</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3msubompmvc2n</link><description>I got banned on Twitter.</description><pubDate>12 Aug 2026 04:20 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3msubompmvc2n</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3msrxofvmck2e</link><description>https://reactuse.org/blog/08.2026-new-brand-logo</description><pubDate>11 Aug 2026 06:16 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3msrxofvmck2e</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3msrxmtumuc2m</link><description>Get the user&#39;s location in one hook 📍&#xA;&#xA;useGeolocation gives you latitude, longitude, accuracy — and live updates as they move.&#xA;&#xA;No navigator boilerplate, no manual watch cleanup 👇&#xA;&#xA;⚙️ Built on the Geolocation API&#xA;&#xA;reactuse.org #webdev</description><pubDate>11 Aug 2026 06:15 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3msrxmtumuc2m</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3msqm7ikpu22z</link><description>Meet the new reactuse 🎉&#xA;&#xA;Say hello to our new logo — a clean monochrome monogram that&#39;s sharp, geometric, and looks right at home next to the tools you already reach for.&#xA;&#xA;Same hooks. Fresh face.&#xA;&#xA;reactuse.org #reactjs</description><pubDate>10 Aug 2026 17:18 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3msqm7ikpu22z</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mspiy4ogrk2k</link><description>Your web app can read the device battery 🔋&#xA;&#xA;useBattery gives you charge level, charging status &amp; time-to-full — straight from the browser.&#xA;&#xA;Dim heavy features on low power, one hook 👇&#xA;&#xA;reactuse.org #webdev #react</description><pubDate>10 Aug 2026 06:47 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mspiy4ogrk2k</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3msmupexaj22s</link><description>Detect when your user goes AFK 😴&#xA;&#xA;useIdle flips to true after a set time with no mouse, keys or touch — perfect for auto-logout, pausing playback or &#34;still there?&#34; prompts.&#xA;&#xA;reactuse.org #reactjs</description><pubDate>09 Aug 2026 05:39 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3msmupexaj22s</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mskyid2jm22j</link><description>Tracking the mouse in React has a trap: every mousemove → setState → hundreds of re-renders per second. Jank city.&#xA;&#xA;New post on how useMouse avoids it — and the API pattern we borrowed from a library you already love 👇&#xA;&#xA;https://reactuse.org/blog/08.2026-usemouse-watch-mode</description><pubDate>08 Aug 2026 11:42 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mskyid2jm22j</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mskgunvdvc2j</link><description>New: reactuse now ships skills for AI coding agents 🤖&#xA;&#xA;So your assistant picks the right hook faster and follows consistent usage patterns — instead of guessing or reinventing them.&#xA;&#xA;Wrote up what they are &amp; how to plug them in 👇&#xA;&#xA;reactuse.org/blog</description><pubDate>08 Aug 2026 06:26 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mskgunvdvc2j</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3msir627onk2n</link><description>New landing hero and release 1.0.12 are finally here!&#xA;&#xA;https://github.com/siberiacancode/reactuse/releases/tag/v1.0.12&#xA;reactuse.org</description><pubDate>07 Aug 2026 14:25 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3msir627onk2n</guid></item><item><link>https://bsky.app/profile/debabin.bsky.social/post/3mshnbzxhvc2n</link><description>Your app should know when the user goes offline 📡&#xA;&#xA;useNetwork gives you online status, connection type, even downlink speed — straight from the browser, one hook.&#xA;&#xA;No event listeners to wire up &#xA;&#xA;reactuse.org #webdev</description><pubDate>07 Aug 2026 03:43 +0000</pubDate><guid isPermaLink="false">at://did:plc:22ht6junjysm53extzogcgld/app.bsky.feed.post/3mshnbzxhvc2n</guid></item></channel></rss>