Recoil got axed, but before we shit on Facebook too hard, let's see what they actually built. Facebook dropped Recoil in 2020 because Redux was driving everyone insane. Way too much boilerplate, your entire app re-renders when you update a single fucking counter, and watching junior devs try to understand reducers is just painful. So they tried something different.
What Made Recoil Actually Smart
Instead of one massive store that forces every component to re-render when a single piece of state changes, Recoil split everything into atoms - tiny units of state that components subscribe to individually. Only subscribe to userNameAtom
? Only re-renders when username changes, not when some unrelated cart item updates.
Atoms are just state containers - think useState
but shareable across your entire app. Selectors compute derived state from atoms, like filtering a list or calculating totals. The magic happens because React only re-renders components that actually care about the changed atoms.
The atomic approach was actually brilliant. Facebook actually got this right for once. Components subscribe to exactly what they need, performance smokes Redux's everything-re-renders nightmare, and you don't need three different middleware libraries just to fetch some fucking data.
The Technical Stuff That Actually Worked
Dependency Tracking: Recoil builds a graph behind the scenes tracking which components depend on which atoms. Change an atom, and only the components using it re-render. No more wondering why your entire app re-renders when you update one piece of state.
Async Without the Middleware Hell: Selectors can be async functions that return promises. Need to fetch user data? Just make your selector async and Recoil handles loading states automatically. No Redux-Thunk, no Redux-Saga, just regular async/await.
Built for React 18: Unlike Redux which needed adapters, Recoil was designed for React's concurrent features from day one. Suspense, automatic batching, all that modern React stuff just works.
Developer Experience: The DevTools integration works great when it feels like it. Half the time the DevTools randomly shit the bed with Cannot read property '_recoil_state' of null
and you're back to console.log debugging like a caveman, especially with complex selector chains. Still beats adding console.log('why the fuck is this undefined')
everywhere, but Redux DevTools never randomly crash on you.
Why Facebook Killed It
September 7, 2023: Last commit to Recoil was just Flow error suppression. January 1, 2025: Meta officially archived the repository, making it read-only. The repo has 19.6k stars, proving developers actually wanted this shit to work, but Facebook apparently had other priorities.
Here's the kicker: Recoil never escaped "experimental" status after 4+ fucking years. Version 0.7.7 from March 2023 was the final release - try explaining to your CTO why your entire user dashboard depends on an experimental library that Facebook just threw in the garbage. That's a fun meeting where you get to explain technical debt for 45 minutes.
The Recoil Legacy - What Actually Survived
Facebook might have killed Recoil, but the atomic state management idea didn't die. Jotai basically copied the best parts of Recoil and actually maintains it. Valtio took a different approach but solved similar problems with proxy-based reactivity.
The irony? These community alternatives are better maintained than Facebook's original. Jotai has full React 18 support, active development, and doesn't carry the baggage of being "experimental" forever. Sometimes the community does it better than Big Tech.