Roman Liutikov's Avatar

Roman Liutikov

@romanliutikov.com

software engineer @ margelo, ex @whimsical, ex @pitch https://romanliutikov.com/blog/

244
Followers
77
Following
71
Posts
04.05.2023
Joined
Posts Following

Latest posts by Roman Liutikov @romanliutikov.com

State of ClojureScript 2025 Survey

State of ClojureScript 2025 Survey is live state-of-clojurescript.com If you ever wanted to know what's happening in cljs world, and using the language at work or for hobby projects, fill out the survey. And share it with others! Results will be shared in January next year.

30.10.2025 13:28 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
Bringing granular updates to React, the Clojure way | Roman Liutikov, Software Engineer An eploration on building auto memoizing compiler for React in Clojure

Posted about my ongoing experiment to bring React Compiler to Clojure/UIx, link below
spoiler: it works :)

romanliutikov.com/blog/bringin...

09.07.2025 16:25 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Largest attack on Ukraine last night yet, but yeah, clearly Putin is open to peace and Trump will personally solve this in uh how long ago was that supposed to happen? www.france24.com/en/europe/20...

29.06.2025 11:33 πŸ‘ 9 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

drones drones multiple days in a row, funny how you get used to shots and explosions

17.06.2025 11:18 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Thanks!

05.06.2025 16:40 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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.

05.06.2025 13:45 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

got React Context working across server and client components in my Clojure implementation of RSC

while context is not supported in js implementations, in Clojure it aligns quite nicely with `binding` macro, so it would be a shame to not have this working across the boundary

05.06.2025 13:26 πŸ‘ 6 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Preview
Towards React Server Components in Clojure, Part 3 | Roman Liutikov, Software Engineer A journey on bringing React Server Components to Clojure JVM, as a part of UIx library

An update on RSC port to Clojure: form actions, data fetching, batching, caching and error handling romanliutikov.com/blog/towards...

04.06.2025 17:19 πŸ‘ 14 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0

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.

02.06.2025 11:41 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

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.

02.06.2025 11:37 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Not great for perf, but probably negligible. EDN is a native wire format in Clojure, so developer experience here matters more than performance.

02.06.2025 08:56 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

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.

02.06.2025 08:54 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

That’s what I do in Clojure impl as well. Both, client components and server functions have to be marked explicitly.

02.06.2025 08:10 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Nice! Any interesting observations on how RSC implementation in OCaml is different from JS?

01.06.2025 20:28 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

rebuilt this React Router demo with my Clojure port of RSC, still wip but lots of stuff already working uix-rsc-movies.fly.dev

21.05.2025 13:59 πŸ‘ 6 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

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)

19.05.2025 14:49 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
GitHub - cognitect/transit-js: Transit for JavaScript Transit for JavaScript. Contribute to cognitect/transit-js development by creating an account on GitHub.

Checkout Transit format, its extensible and supports rich data types encoding github.com/cognitect/tr...

19.05.2025 10:40 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I’ll be there sharing my experience with Clojure in WASM πŸ‘‹

17.05.2025 19:06 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
// Import Attributes
import data from "./resource.json" with { type: "json" };

// Import Attributes import data from "./resource.json" with { type: "json" };

It was about time, wasn't it? πŸ˜… πŸ‘‡

But now, with Firefox 138 all major browser engines support import attributes to import JSON from within your ECMAScript modules. πŸ‘‡

βœ… Chromium: 123+
βœ… Safari: 17.2+
βœ… Firefox: 138+ (released 2w ago)

PS. This syntax works in modern Node.js, too!

15.05.2025 10:46 πŸ‘ 124 πŸ” 36 πŸ’¬ 5 πŸ“Œ 3

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

14.05.2025 14:25 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

afaik this is also doable in RSC, just that the server component must be passed as a prop to a client component

14.05.2025 14:01 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

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.

14.05.2025 14:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

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

14.05.2025 12:50 πŸ‘ 10 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
Preview
Towards React Server Components in Clojure, Part 2 | Roman Liutikov, Software Engineer A journey on bringing React Server Components to Clojure JVM, as a part of UIx library

Clojure port of React's server components is coming along nicely, this update brings streaming SSR, route prefetching and more romanliutikov.com/blog/towards...

13.05.2025 18:48 πŸ‘ 3 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0

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 🀦

09.05.2025 09:27 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Thanks!

09.05.2025 07:11 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

maybe that's my bubble, where do you get the data from?

08.05.2025 18:56 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

is that mentality still holds true among devs who came to frontend in the past ~5 years? I'm under impression that folks just don't think about it anymore and use frameworks to get their jobs done

08.05.2025 18:05 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
GitHub - hyperfiddle/electric: Electric Clojure: full-stack differential dataflow for UI Electric Clojure: full-stack differential dataflow for UI - hyperfiddle/electric

yeah that's what I mean, should add an example with props passing, thanks

I was thinking more about Electric Clojure framework here, which allows arbitrary composition github.com/hyperfiddle/...

08.05.2025 09:28 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

thanks! good point, I'll redact that missinfo

08.05.2025 09:26 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0