Spínat: Competition #9 Results
Voting for Naglasúpan #9 - Spínat finished today, and the community has ranked a winner from the four projects.
This was the first round decided by the new Schulze ranking, where you only rank the projects you have an opinion on. Thanks for the submissions, the votes and the comments!
If you haven't already, check them out in detail here: naglasupan.is/competitions/spinat.
Congratulations to Result-RPC
Typed RPC for web apps - errors stay values, across the wire.
In a complex web app, making sure every component handles every error a call can return is a problem. You can't easily get a list of what can go wrong, and even when you can, most of it isn't that component's business.
Result-RPC is an RPC layer for React that addresses both halves. Errors are defined in the contract, and handled by position in the component tree.
On the contract side, each procedure declares the errors it can return, and the client adds the ones any network call can hit anyway - offline, timeout, version drift after a deploy. Every call comes back as a `Result<T, E>` with that one closed union, so there's a definitive list.
On the handling side, shells are React components that take responsibility for a class of error. An auth shell owns session expiry and does the redirect; the app shell owns the transport errors and renders the offline banner. Each one subtracts what it handles from the type below it, so a document component is left with DocNotFound and nothing else - and a missing case fails to compile.
The documentation is fantastic too. With useful guides, walkthroughs and a coding-agent skill, it's easy to get started with.
Congratulations to Jökull Sólberg.
Upcoming competitions
Competition #10: Sveppur is open for submissions now - closes September 27th
Happy building.