Roman Liutikov
banner
romanliutikov.com
Roman Liutikov
@romanliutikov.com
software engineer @ margelo, ex @whimsical, ex @pitch
https://romanliutikov.com/blog/
Thanks!
June 5, 2025 at 4:40 PM
Error boundaries have been supported in my implementation of server-side rendering almost from the beginning. Under the hood they are a try-catch, synchronously retrying the rendering with the captured error.
June 5, 2025 at 1:45 PM
iirc Next also implements secure scope capturing, which is even more questionable, but at least the data is not exposed to the client. IMO all bound args should be stored on server, tied to user session.
June 2, 2025 at 11:41 AM
How do you find the concept of partial application of server functions on the backend? I did implement it, but it fees like a huge footgun to me, given that bound values are exposed to a client.
June 2, 2025 at 11:37 AM
Not great for perf, but probably negligible. EDN is a native wire format in Clojure, so developer experience here matters more than performance.
June 2, 2025 at 8:56 AM
Interesting. In Clojure we use persistent data types to pass data around, and in my impl I’ve decided to embed the data (in EDN format) into RSC payload. This means double parsing Flight -> JSON -> embedded EDN -> Clojure types.
June 2, 2025 at 8:54 AM
That’s what I do in Clojure impl as well. Both, client components and server functions have to be marked explicitly.
June 2, 2025 at 8:10 AM
Nice! Any interesting observations on how RSC implementation in OCaml is different from JS?
June 1, 2025 at 8:28 PM
Yeah its primary use case is data transmission between services and/or clients written in Clojure. For JS target it’s json based, but otherwise its binary and should probably support async values, though it’s an exotic requirement (outside of RSCs if I might guess)
May 19, 2025 at 2:49 PM
Checkout Transit format, its extensible and supports rich data types encoding github.com/cognitect/tr...
GitHub - cognitect/transit-js: Transit for JavaScript
Transit for JavaScript. Contribute to cognitect/transit-js development by creating an account on GitHub.
github.com
May 19, 2025 at 10:40 AM
ooh now I get it, ok, I got an impression that RSC's model is not limited to server->client but wasn't sure since everywhere I read it's explicitly mentioning that interleaving is a no no
May 14, 2025 at 2:26 PM
afaik this is also doable in RSC, just that the server component must be passed as a prop to a client component
May 14, 2025 at 2:01 PM
Having server as a shell with client components at leaves makes a lot of sense, and it's easy to understand. I don't know electric well, but this demo demonstrates the idea electric.hyperfiddle.net/tutorial/dir... and I think it's a valid use cases as well.
May 14, 2025 at 2:00 PM
I'm working on Clojure port of RSC, more info in these blog posts romanliutikov.com/blog/towards... romanliutikov.com/blog/towards...
not sure if it makes sense to differentiate between backend languages for rsc, but it's interesting to see how those concepts are shaped by different platforms
May 14, 2025 at 12:50 PM
Someone asked me to print a couple of pages recently, I spent an hour figuring out how to connect and then print on both sides of a paper correctly 🤦
May 9, 2025 at 9:27 AM