janka Profile Banner
janka Profile
janka

@lubieowoce

1,193
Followers
376
Following
244
Media
3,920
Statuses

she/her 🏳️‍🌈 notorious server components reply-girl ▲ next.js at @vercel

jungle (massive) / berlin
Joined January 2020
Don't wanna be here? Send us removal request.
Pinned Tweet
@lubieowoce
janka
2 months
pretty proud of this docs-ish thing for RSCs that i made today!
@lubieowoce
janka
2 months
@tannerlinsley (reupload -- read only link now! sry lol) not strictly about routers, but ur earlier posts nudged me to write up some notes on the mechanics of RSC. has some examples of usage of the RSC APIs + some examples of bundling (WIP!!)
3
2
41
6
4
27
@lubieowoce
janka
3 months
oh btw. i havent't posted about it yet, but i'll be joining the Next.js team at @vercel soon! absolutely over the moon about it & can't WAIT to help cook some new stuff!!!
34
3
251
@lubieowoce
janka
1 year
hey alright, i got SSR of React Server Components kinda working! held together with duct-tape, but it's one server, no need for a separate SSR worker (my streams are a bit messed up and some stuff gets written before <html> so i'm getting a Quirks Mode warning lol)
2
15
244
@lubieowoce
janka
1 year
holy shit the app-router clone is ALIVE!!!! (only nested routes being fetched, layouts above them maintaining state)
3
8
100
@lubieowoce
janka
1 year
finally made some progress on my RSC thing! still quite rough but at least it can SSR properly and refetch (here, it happens after pressing Submit). also made the example show the boundaries a bit better next stop: a proper router
4
8
79
@lubieowoce
janka
6 months
@RoborosewaterM @WillWeaverRVA WOE UNEXPECTED SCORPION UPON YE
Tweet media one
2
7
66
@lubieowoce
janka
8 months
@JLarky oh wtf i thought you were joking... i had no idea these existed
1
0
41
@lubieowoce
janka
2 months
@tannerlinsley (reupload -- read only link now! sry lol) not strictly about routers, but ur earlier posts nudged me to write up some notes on the mechanics of RSC. has some examples of usage of the RSC APIs + some examples of bundling (WIP!!)
3
2
41
@lubieowoce
janka
3 months
watch this mf space
Tweet media one
@lubieowoce
janka
8 months
@tomus_sherman @JLarky i'm THIS close to doing RSC in bash just bc it'd be very funny
1
1
9
3
0
38
@lubieowoce
janka
2 months
@__justplaying wikipedia? maybe stackexchange?
2
0
36
@lubieowoce
janka
3 months
bash-rsc can now render components in parallel & stream the response (w/ suspense)!!!
@lubieowoce
janka
3 months
ok we're getting somewhere, it can recursively render a tree down to primitives like div/span
Tweet media one
4
1
19
2
2
32
@lubieowoce
janka
1 year
it's on github now! it's messy! have fun <3
@lubieowoce
janka
1 year
finally made some progress on my RSC thing! still quite rough but at least it can SSR properly and refetch (here, it happens after pressing Submit). also made the example show the boundaries a bit better next stop: a proper router
4
8
79
2
6
31
@lubieowoce
janka
1 year
(now i *just* have to make a router and get actions working and generally draw the rest of the owl)
2
0
26
@lubieowoce
janka
6 months
okay after writing some of the most rickety code ever i got it to work. goodnight
@lubieowoce
janka
7 months
okay it's time to add support for inline "use server" to Tangle (WIP, haven't even tried running it, just messing around with Babel for now)
Tweet media one
Tweet media two
1
2
18
2
2
27
@lubieowoce
janka
6 months
Tweet media one
Tweet media two
1
2
27
@lubieowoce
janka
6 days
moving to berlin has been incredibly good for me. like "new place new me" sounds like a meme but its kinda true back in warsaw (where i've lived ~all my life) there's like, a lot of history, good and bad. and i feel like the bad parts were kinda holding me back
5
0
29
@lubieowoce
janka
3 months
@vercel also i'm moving to berlin! so if you're there and wanna grab a coffee or something, lmk! i don't know a lot of people there so gonna be looking to make some new friends <3 oh and if you play MTG, hmu IMMEDIATELY
2
0
26
@lubieowoce
janka
3 months
using only food, where are you from?
Tweet media one
@t3dotgg
Theo - t3.gg
3 months
Using only food, where are you from?
Tweet media one
117
2
176
7
0
25
@lubieowoce
janka
3 months
@JLarky but you also gotta reply to every RSC thread you come across. just make your entire twitter presence about that. that's a requirement
3
0
24
@lubieowoce
janka
3 months
@threepointone "Sunil stealing statefulness from the gods to give it to serverless devs" (watercolor & ink, Greece, 430 BC)
Tweet media one
1
2
22
@lubieowoce
janka
3 months
@dan_abramov2 it's simple, we're using the term "div" in a more generic sense -- a div can also run at build time, so it just means "someone else's container"
2
0
22
@lubieowoce
janka
2 years
@xoxobrien @dan_abramov @otakahuynyaa when have you had to worry about the "implementation" of a for-loop? :) and like, by that metric wouldn't any function call be declarative? that sounds a bit broad... at the end of the day one is a language construct and the other is a method but they're *doing the same thing*
2
0
22
@lubieowoce
janka
11 months
you should be able to see an alpha of my app-router clone running here! proper release coming soon probably (i need to add like tailwind or something to make this look decent but the point is that nested layouts kinda work)
0
2
21
@lubieowoce
janka
6 months
@devongovett just gotta be careful to not end up with 1000 variables like var(--promo-card-border-accent) var(--holdiday-special-offer-background)
3
1
20
@lubieowoce
janka
3 months
@vercel oh and obviously Bash on Vercel is coming in 2024, you can bank on that
@lubieowoce
janka
3 months
bash-rsc can now render components in parallel & stream the response (w/ suspense)!!!
2
2
32
2
0
20
@lubieowoce
janka
1 month
i was very skeptical of bun's "auto-install imported packages" thing, but damn it's pretty amazing for quick scripts where you don't wanna bother setting up a whole package.json
3
0
19
@lubieowoce
janka
3 months
ok we're getting somewhere, it can recursively render a tree down to primitives like div/span
Tweet media one
@lubieowoce
janka
3 months
watch this mf space
Tweet media one
3
0
38
4
1
19
@lubieowoce
janka
6 months
can't focus on shit today i just keep opening one of 3 apps, scrolling a bit, closing the app, trying to work a bit, failing, and going back to the apps (repeat until ???) this SUCKS
5
1
17
@lubieowoce
janka
1 year
this "just make a nextjs app router clone" shit is hard
Tweet media one
3
0
19
@lubieowoce
janka
2 years
@xoxobrien @dan_abramov @otakahuynyaa and i feel like by this logic we shouldn't use ifs. like, we shouldn't do myBool ? "it's true" : "it's false" but instead we should use sth like myBool.ifElse(() => "it's true", () => "it's false") i mean, they both end up meaning exactly the same thing, no?
1
0
19
@lubieowoce
janka
2 months
@tomus_sherman when we say that it's sunny, don't we really mean that there's no clouds
1
0
19
@lubieowoce
janka
7 days
@threepointone if only we could pattern matchil on tuples...... im rly yearning for a real `match` in JS
2
0
20
@lubieowoce
janka
8 months
@passle_ lmao react isn't even written in JS, it's in Flow!
2
0
18
@lubieowoce
janka
7 months
okay it's time to add support for inline "use server" to Tangle (WIP, haven't even tried running it, just messing around with Babel for now)
Tweet media one
Tweet media two
1
2
18
@lubieowoce
janka
1 year
@0xblacklight @dan_abramov i'll also plug my own VERY EXPERIMENTAL RSC thing which happens to use express for the server (though tbh express is barely doing any work there, could be a plain http.server) but mostly as a "beware, it takes a buunch of work to set this up from scratch"
0
3
17
@lubieowoce
janka
10 months
@TheWindHasAWay @mattpocockuk maybe this is pedantic but many (most?) statically typed langs compile down to barely-typed languages (assembly/bytecode) with no/few runtime checks. so [not having runtime checks] is not a reason to consider TS weakly typed it's mostly about escape hatches like `any` or casts
1
0
17
@lubieowoce
janka
2 months
@dan_abramov2 @acemarke @nkSaraf98 @tannerlinsley @Yuval_Shimoni @vercel @nextjs i made this thing today, maybe it'll be useful as a stopgap until sth more docsy is ready
2
0
16
@lubieowoce
janka
4 months
1
0
15
@lubieowoce
janka
2 months
we made it folks!
@lubieowoce
janka
2 months
berlin today! at least if i don't miss my goddamn train, which is about a 30% chance r/n
2
0
7
2
1
16
@lubieowoce
janka
7 months
@TaliaRinger idk like i'm not gonna stand here and say this behavior is good or intuitive but. it does make sense (in the badly-designed context it's in). "counterintuitive" and "nonsensical" aren't the same thing, which i guess is the main thing JS ppl are arguing here
1
0
16
@lubieowoce
janka
2 months
@tannerlinsley maaaan how did someone manage to delete the whole thing overnight :(((( luckily i made a backup, it's up here (linked in the original one too)
4
1
16
@lubieowoce
janka
6 months
@devagrawal09 @dan_abramov @mattcarrollcode @tweetsbycolin (as usual, i'll plug my stab at that: i.e. basically a baby nextjs. worse in a bunch of ways but might be a bit easier to follow if you're looking for examples)
1
2
16
@lubieowoce
janka
7 months
@DasSurma 2:30am *doesn't happen* on that day (bc 2 becomes 3!) so the app shouldn't let you set it, it should prompt for disambiguation (or at least say "THIS'LL ACTUALLY BE 3:30, WATCH OUT")
3
0
16
@lubieowoce
janka
2 months
what do you call it when you decide to take a bundling problem and unwittingly turn it into a distributed systems problem. apart from "being a dumbass"
3
1
16
@lubieowoce
janka
6 days
im not used to vulnerableposting on main so idk if i'll keep this up. but feels kinda nice to say out loud
1
0
15
@lubieowoce
janka
6 months
Tweet media one
1
1
14
@lubieowoce
janka
1 year
anyone know any good explanations/intros to webpack's whole Dependency API? the one with dependency factories and templates. bc every time i think i get it, i find something that makes me go "how is THAT a dependency too" and i'm just... confused at this point
2
3
14
@lubieowoce
janka
9 months
@MichaelArnaldi right, the important part is that Promise.all *makes* you create the promises before awaiting, which'll make them run "in parallel" but imho it's fine to shorten that to "Promise.all is parallel" for casual conversation. it's not precise but gets the point across
3
0
15
@lubieowoce
janka
2 months
got a cool mug in the mail!
Tweet media one
0
0
14
@lubieowoce
janka
7 months
this is a pro-"use server" account btw
1
1
15
@lubieowoce
janka
6 months
@t3dotgg wanted to pass multiple arguments at once anyway for a laugh? we have a tool for that: it's called TUPLES
0
0
15
@lubieowoce
janka
1 year
@dan_abramov all my fav haskell bullshit: - parser combinators - Lenses (van Laarhoven ones are nice) - ADTs in general (Scott encoding is fun too) - monads babey!
1
0
14
@lubieowoce
janka
6 months
okay my pile of babel hacks for compiling inline "use server" is getting better! it can handle quite a bunch of edge cases now i think i'm gonna try publishing that as a standalone thing, for my fellow homebrew framework freaks <3
2
0
14
@lubieowoce
janka
10 months
i finally started using `chalk` for my console.logs and now i can't stop making everything stupidly colourful. it's so fun
2
0
14
@lubieowoce
janka
11 months
i'm trying to do some ~visualizations of how RSCs render (absolute baby steps in remotion). does this do anything for anyone
3
2
14
@lubieowoce
janka
2 months
@rossipedia it's because TS allows passing "wider" types than T as arguments that expect T. so you might get more keys than just `keyof T`, it'd be false type safety
Tweet media one
1
0
14
@lubieowoce
janka
1 year
@reactgular @ZoltanKochan you don't, because there's no sensible notion of ordering for functions. though of course JS will coerce them to a string and compare that that has nothing to do with what you said about arrays of numbers not existing
0
0
14
@lubieowoce
janka
4 months
made a little snippet for extracting the RSC the bits from a Next page, bc i look at those when debugging sometimes. might be useful for someone
3
0
13
@lubieowoce
janka
11 months
@dan_abramov "div" is a client reference to a browser builtin. yeah i can buy that
1
0
13
@lubieowoce
janka
7 months
@dan_abramov @TechCrespo @Domratchev_dev scholars describe this as the dichotomy of "i'm just a guy" vs "hot curves in your area"
Tweet media one
1
2
13
@lubieowoce
janka
7 months
@ken_wheeler the royal life
Tweet media one
1
0
13
@lubieowoce
janka
4 months
@dan_abramov2 currying corresponds to the client/server split here right?
2
1
13
@lubieowoce
janka
4 months
@mattpocockuk shouldn't you, like, pass in a zod schema instead, and get the output type from that? otherwise it's just kinda hopes & dreams bc there's no verification that the response actually matches what the type says
2
0
13
@lubieowoce
janka
9 months
react PR gossip time! > uniquely identify an instance of a component between requests > we'll need this for two separate features would be fun if this was for, like, server-side memo() across requests or something
2
3
12
@lubieowoce
janka
6 months
uh oh i kinda feel like i miiight be burning out at work. what do i do now
6
0
11
@lubieowoce
janka
7 months
@dan_abramov assign different authors, that was written by Dan ^1.x and we're at Dan 3.8 now
0
0
10
@lubieowoce
janka
1 year
refetches in my app router are going great. mutable state is fun and safe when combined with concurrent rendering AND side-effects in render
Tweet media one
2
0
12
@lubieowoce
janka
2 months
@alicemazzy i know this is a somewhat tired angle but aren't you worried it'll tell you some nonsense (that you can't identify as such bc you're new to the topic)? fear of that is the main thing that stops me from relying on it more
4
0
12
@lubieowoce
janka
6 days
also i think im underplaying how important the "meeting someone new" aspect has been. like literally the most important. so you need luck for this to work but also it couldn't have happened w/o moving here. so they're just kinda inextricably linked
1
0
12
@lubieowoce
janka
11 months
@dan_abramov HTML is a proto-RSC JSX serialization format. the "HTML payload" describes a tree of client components (whose implementations are bundled in the browser itself and are referenced via "well known" string names)
1
0
12
@lubieowoce
janka
9 months
@BHolmesDev the actual sign:
Tweet media one
1
0
12
@lubieowoce
janka
4 months
@mattpocockuk "L + ratio + i already wrote a library that does exactly what you suggested ages ago" :P
0
0
12
@lubieowoce
janka
1 year
@reactgular @ZoltanKochan what? there very much ARE arrays of numbers in JS. it's just that sort is weird and just converts to a string before comparing (unless you pass a compare-function)
2
0
11
@lubieowoce
janka
3 months
i cannot WAIT to do async components by spawning a subshell for each one. it's gonna be amazing
1
0
11
@lubieowoce
janka
7 months
@nico_jeannen @vercel i'm sure it sucks to have that happen, but honestly.... if your business model / value proposition can be easily replicated in an app template, it kinda feels like you weren't on very solid ground to begin with?
1
0
11
@lubieowoce
janka
1 month
cut my hair a bit right before a work offsite thing where ppl are gonna be looking at me all week. we're taking big swings here
1
0
11
@lubieowoce
janka
3 months
tricked an online form into letting me edit a disabled field by removing `disabled` from the input element. and it submitted fine! thank you uncontrolled forms and client-side-only validation <3
1
0
11
@lubieowoce
janka
5 months
@syedmuzhasan @reactjs @en_JS @zmofei it doesn't use signals, it's still just memoization, it's just performed on the level of individual expressions. kind of like to automatically useMemo-ing everything, but more efficient
1
0
11
@lubieowoce
janka
1 year
@dan_abramov does RSC try to detect/handle client/server version mismatches somehow? like if the client keeps the page open for a week, tries an RSC refetch, but the server changed in the meantime and no longer has the component? (i'd imagine "graceful" recovery needs framework support)
1
0
11
@lubieowoce
janka
2 months
@AdamRackis it's rude to put lucas on blast like that. i'm sure the crop is just an unfortunate object-fit: fill, it's not his fault he got cropped out
3
0
11
@lubieowoce
janka
4 months
@dan_abramov2 @PutziSan this was cool (but long) some terminology notes: react's own fixture: @tpillard 's blog:
1
0
11
@lubieowoce
janka
2 months
if you wanna know how i'm doing, i set up a loop that runs the build with all possible combinations of SWC `compress` options to see which one breaks it
@lubieowoce
janka
2 months
update: evidence points to *something* miscompiling babel/standalone (only in the prod build!) in a way that silently changes the parser behavior and breaks `in`. this is gonna be a long fuckin day huh
1
0
4
3
1
11
@lubieowoce
janka
10 months
@tomus_sherman who had that nice "it goes in spirals, not circles" diagram, it went sth like this... like we revisit the same places but it's better now
Tweet media one
1
0
11
@lubieowoce
janka
6 months
@threepointone 50/50 on whether this should stay in the drafts. not sure how the morbius reference plays, it's a bit dated by now
Tweet media one
1
1
11
@lubieowoce
janka
2 months
@Category_Fury i like the explanation/theory on wikipedia that it was originally intended for things like "parking not allowed on Sundays" ~> "parking is allowed on all *other* days" but then ppl kinda just starting widely misused to say nonsense
2
0
11
@lubieowoce
janka
4 months
@aidenybai small terminology nitpick: "exponential complexity" would be 3^n, not n^3, i.e. much muuuch bigger if it's n^3 it's cubic (or polynomial as a more general term)
2
0
10
@lubieowoce
janka
1 year
@ManishEarth did u ever try to Ctrl+F in a cupboard or in printed text. i reflexively try that every once in a while
2
0
10
@lubieowoce
janka
10 months
@deathpigeon @BrooklynSV_ @SW33TFANG both things can be true at once - "it looks blue so it makes sense to just say it's blue" - "the physical process that produces this particular blue is very different from most blue things, so in some contexts it makes sense to talk about it differently"
1
0
10
@lubieowoce
janka
6 months
i spent way too much time photoshopping this
@lubieowoce
janka
6 months
Tweet media one
1
1
14
0
0
10
@lubieowoce
janka
8 months
@dev_bogdan @dan_abramov it makes sense once you get it, but it goes against what ppl think of as "client", so it's kinda understandable imho. and we're going to be repeating it for a while bc you keep getting more ppl new to RSC who don't know it yet
0
2
10
@lubieowoce
janka
10 months
@mycoliza @myrrlyn growth mindset
0
0
10
@lubieowoce
janka
9 months
@jessejohnsohn @sebmarkbage @dagster > [Dagster] used RSC [...] on a static hosted website i.e. no Node server. that limits your RSC usage to running them *at build time*, but you can still use them. i'd say that's the nuance
1
0
10
@lubieowoce
janka
2 months
context is that today was my last day at Stepstone. there was a lot of goodbyes with a lot of cool ppl, and this song somehow always fits when i'm in the mood for reminiscing. thanks for the memories guys, love ya lots <3
@lubieowoce
janka
2 months
currently getting emotional listening to this all time banger
1
0
7
2
0
9
@lubieowoce
janka
8 months
@tomus_sherman @JLarky i'm THIS close to doing RSC in bash just bc it'd be very funny
1
1
9