Since React 18 is coming i'm compiling some tweets exploring suspense, a groundbreaking new feature.
Suspense allows components to handle async tasks, while the parent control loading, errors and fallbacks. It essentially solves async in front end.
Here are some use cases →
Example #1 — You load an async asset (fetch, wasm, parsing, workers, ...). When it's finished you want to execute a specific action, for instance zoom in.
Example #3 — You want fallbacks. This would be hard already, but imagine going through variants, where you load a lesser thing first before switching to hi-res. Sketchfab does that for instance .
This is trivial with suspense because you can nest it.
Example #4 — What if you load something but you want to hold on to the current thing on screen, you want users to be able to continue interacting with it until the new thing comes in.
With suspense you can define transitions that make this so easy.
There might be more. But as you see, the feature can do far more than fetching data. There are some examples here that remind me of when i had to struggle with C/C++ and threads and how hard it was to do certain things, and now i can just lego compose async. 🧙♂️
we are releasing JŌTAI today github.com/react-spring/j… 🎉 this is @dai_shi 's take of the atomic state model. quite similar to recoil but focusses on a small api surface w/ simpler albeit equally powerful atoms and derived state. jōtai is 100% ready for concurrent mode and suspense
in its simplest form think of it as a global replacement for useState. in scale you can create complex transforms and relations between state atoms. see it in action here: jotai.surge.sh or try it out on codesandbox: codesandbox.io/s/1w52w
you might be wondering why so many libs come from "react-spring". started with an anim lib, turned into a gh-org, and it's been more like a collective recently (say hello discord.gg/ZZjjNvJ), there are 25 devs working for it atm. full rebrand and exciting news coming soon.