Sign in

janka

@owoce.bsky.social
462 followers 172 following 259 posts

i like computers she/her 🏳️‍🌈 📍berlin (and warsaw sometimes) twitter.com/lubieowoce github.com/lubieowoce

PostsRepliesMedia
Reposted by janka
Next.js @nextjs.org · 06/10/2026
Next.js 16.4 • Cache Components by default in new apps • Static output guarantees and more control over prefetching • Agent-guided upgrades and feedback • 20–25% smaller Turbopack disk cache • Faster development and smaller bundles nextjs.org/blog/next-16-4
nextjs.org
Next.js 16.4
Next.js 16.4 introduces lazy compilation, smaller Turbopack output, React 19.3 features, Cache Components improvements, and new developer tooling.
2283
janka @owoce.bsky.social · 26/06/2026
hey at least it's phonetically right! it's funnier when english speakers say it with J-as-in-jeans
010
janka @owoce.bsky.social · 26/06/2026
josh also did a lot on it! but yeah i do kinda feel like it's my baby, happy to see it being useful :')
010
Reposted by janka
Ian Coldwater 🧊🚫 @lookitup.baby · 03/12/2025
A perfect CVSS 10 🧑🏻‍🍳💋 CVE-2025-55182: Unauthenticated remote code execution vulnerability in React Server Components The vuln is in versions 19.0, 19.1.0, 19.1.1, and 19.2.0: react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack Upgrade immediately!
react.dev
Critical Security Vulnerability in React Server Components – React
The library for web and native user interfaces
18286119
janka @owoce.bsky.social · 02/12/2025
you can try setting NEXT_PRIVATE_DEBUG_CACHE=1, it's not great but it's something
110
janka @owoce.bsky.social · 02/12/2025
idk, i guess we just figured that advanceStage() is the happy path, and abandonRender() is the abort path. but there's some stuff we'll need to change in the abandon flow anyway, so it might not stay like that, we'll see
010
janka @owoce.bsky.social · 02/12/2025
FWIW we reject them after the render is finished. in the case of Dan's bug report, we just accidentally weren't doing that, i fixed that here github.com/vercel/next....
github.com
[CC] Fix hanging dynamic promise when abandoning render by lubieowoce · Pull Request #86690 · vercel/next.js
Fixes #86662 The bug was introduced in #85747, where we added RenderStage.Abandoned. We forgot to update the logic that rejects promises on abort, so if a render was abandoned (i.e. restarted due t...
110
janka @owoce.bsky.social · 02/12/2025
...and that's why we're doing the staging stuff -- by carefully ordering when promises are allowed to resolve, we can divide the RSC stream into parts that correspond to what we'd prerender statically (or in a runtime prefetch) *while also performing a full render* github.com/vercel/next....
github.com
130
janka @owoce.bsky.social · 02/12/2025
btw there's one important thing to know here. you can take an RSC payload and cut it off at some point in time (after some row). when you do this, all the promises that haven't resolved at that point will just be left hanging (i.e. suspend). this is the basis of prerendering in Cache Components
110
janka @owoce.bsky.social · 01/12/2025
we need that separation for a couple reasons, e.g. for labelling stuff correctly in suspense devtools, but mostly for validation (where we check if we can render a static shell). we recently implemented that here: github.com/vercel/next....
github.com
[Cache Components] Discriminate static shell validation errors by type by lubieowoce · Pull Request #85747 · vercel/next.js
Prior to this change any "hole" in a prerender that would block the shell was considered an error and you would be presented with a very generic message explaining all the different ways ...
220
janka @owoce.bsky.social · 01/12/2025
the general idea is that we want to separate the content that: 1. would be statically prerendered 2. would be rendered in a runtime prefetch 3. would be rendered in a navigation ("dynamic") and in order to achieve this, we resolve various promises at specific times (see `pipelineInSequentialTasks`)
110
janka @owoce.bsky.social · 01/12/2025
yeah, agreed, but sometimes you just happen to be grumpy and being nice and considerate doesn't come as easily 😅
020
janka @owoce.bsky.social · 01/12/2025
these two PRs introduced most of the "staged" stuff: github.com/vercel/next.... github.com/vercel/next....
github.com
[Cache Components] Dev - restart render on cache miss by lubieowoce · Pull Request #84088 · vercel/next.js
This PR replaces the previous approach to the dev-time cache warmup. On full-page requests, we We attempt an initial RSC render. It uses a RequestStore, but includes a cacheSignal and a prerenderR...
120
janka @owoce.bsky.social · 01/12/2025
i guess i'd try tracing code back to the PR that introduced it, and figuring out the background + seeing how it's described there. these features are built over time, so tracing their evolution over time is probably the least overwhelming way to see which parts are relevant
github.com
[Cache Components] Dev - restart render on cache miss by lubieowoce · Pull Request #84088 · vercel/next.js
This PR replaces the previous approach to the dev-time cache warmup. On full-page requests, we We attempt an initial RSC render. It uses a RequestStore, but includes a cacheSignal and a prerenderR...
120
janka @owoce.bsky.social · 01/12/2025
so anyway. again, sorry for being rude in the thread, but i hope that with this explanation, it makes more sense why i reacted the way i did. cheers, and hope that the next time we meet, it's under nicer circumstances :)
100
janka @owoce.bsky.social · 01/12/2025
and while this is an open source project, and we like to be inviting to external contributors, that doesn't mean every incorrect suggestion will get a careful and considerate reply explaining why it's wrong. i'd love to, but i don't have time for that, sorry!
100
janka @owoce.bsky.social · 01/12/2025
if u were a coworker or someone i know, then i would've spent the time to explain what's wrong with ur ideas. but that takes a bunch of effort -- in this case, it'd need quite a bit of explanation about how the whole "staged rendering + restart on cache miss" setup works.
100
janka @owoce.bsky.social · 01/12/2025
ofc this can be "you don't know what you don't know" situation, i'm guessing that's what it was in this case. but i hope that you can understand why i might react the way i did to someone coming in and talking about solutions while clearly missing a lot of context and background. i don't need that!
100
janka @owoce.bsky.social · 01/12/2025
... and yes, this might not be obvious to someone who hasn't touched the staged rendering code, but that's my point -- if you don't know the code, perhaps you should familiarize yourself with it before jumping in and suggesting changes. otherwise, you might just waste people's time.
100
janka @owoce.bsky.social · 01/12/2025
e.g. in this case, suggesting moving dynamic fetches to an earlier stage *fundamentally* doesn't make sense -- we specifically set up the dynamic stage so that dynamic stuff happens there (and is blocked earlier)! the bug is not the fetch patch itself, it's related to restarting the render in dev
100
janka @owoce.bsky.social · 01/12/2025
i don't want to discourage u from contributing, but if you're trying to do that, you should make sure that you actually understand what you're talking about enough to suggest something helpful.
100
janka @owoce.bsky.social · 01/12/2025
while i appreciate the enthusiasm and desire to help, "joining the discussion" isn't valuable in and of itself. it's only valuable if your contribution is actually valuable. in this case, despite good intentions, it wasn't helpful. this is what i meant by "you're adding noise".
100
janka @owoce.bsky.social · 01/12/2025
however, there's something that i'd like to get across so that you understand why i reacted in the way i did. it relates to something you said: > I don't know the best way to fix this, so I didn't immediately come up with a PR, but joined the discussion
100
janka @owoce.bsky.social · 01/12/2025
(sorry, it took me a while to collect my thoughts and reply) alright. so first of all, i'd like to apologize for my tone in the thread. my rudeness wasn't warranted, and i could've communicated my point in a kinder way.
110
janka @owoce.bsky.social · 30/11/2025
i'm guessing this might be related to our interaction on dan's issue earlier today. happy to discuss more if you'd like
110
janka @owoce.bsky.social · 30/11/2025
some of us are also available here :)
110
janka @owoce.bsky.social · 07/07/2025
(feeling vulnerable might delete later etc)
120
janka @owoce.bsky.social · 07/07/2025
also just very destabilizing like. mentally. everything sucks
040
janka @owoce.bsky.social · 07/07/2025
ugh us->eu jetlag is so upsetting
140
janka @owoce.bsky.social · 02/06/2025
(although "static shell" is not quite accurate -- if it contains a cache, the shell will become ISR and will revalidate as often as needed to satisfy the specified staleTime)
000
janka @owoce.bsky.social · 02/06/2025
the other important part is that in PPR + dynamicIO it serves as a marker that says "this can be part of the static shell" (if the staleTime is long enough), don't create a dynamic hole here". so it's kind of a lot of things in one
100
janka @owoce.bsky.social · 02/06/2025
not sure wym by "something more official", but happy to answer questions
200
janka @owoce.bsky.social · 02/06/2025
yeah the transform itself isn't that involved, in next we're repurposing most of the "use server" logic for it cacheLife is important, one of the goals of this is to not just cache things server side but also inform the client-side router about how long stuff is allowed to be stale
100
janka @owoce.bsky.social · 31/05/2025
ok balteus time! kinda tough but seems beatable if i get my execution together and capitalize on openings better
000
janka @owoce.bsky.social · 31/05/2025
rn i'm playing it like the monster hunter of fighting robots, we'll see when i get to the dark souls part
000
janka @owoce.bsky.social · 31/05/2025
she's purble
010
janka @owoce.bsky.social · 31/05/2025
armored core is fun! i feel like i kinda suck at it rn but: big robot go pew pew whoosh slash slash
210
janka @owoce.bsky.social · 18/05/2025
tbh the sheer amount of work hendrik has been doing recently makes the rest of the team like occasional weekend contributors
030
janka @owoce.bsky.social · 12/05/2025
also iirc all witness testimony has to be in a form of Q&A right? so you basically *have* to do this if you want the jury to hear about something
150
janka @owoce.bsky.social · 10/05/2025
rn i'm using a library that does some of the parsing but it's incomplete so i'm gonna have to roll my own probably
000
janka @owoce.bsky.social · 10/05/2025
i'm making a tool to turn jsdoc into typescript because... because
110
janka @owoce.bsky.social · 09/05/2025
parsing type annotations from jsdoc comments is a pain in the ass
120
janka @owoce.bsky.social · 08/05/2025
nice! feel free to DM if you need any help with RSC internals or want to know how next.js does something with RSC
120
janka @owoce.bsky.social · 07/05/2025
also i still have some ST keybinds ported to vscode bc i don't like changing my keyboard habits
000
janka @owoce.bsky.social · 07/05/2025
yeah i was ride or die ST for a long time, vscode beat it on js tooling tho i still use it for viewing big files (fast) and as my $GIT_EDITOR (vscode takes forever to open)
100
janka @owoce.bsky.social · 07/05/2025
tbh i'm pretty sure i've bought one before, but i can't find it anywhere. it might've died with my old laptop :(
030
janka @owoce.bsky.social · 07/05/2025
just bought a sublime text license, AMA (and sublime merge, it's good)
220
janka @owoce.bsky.social · 05/05/2025
you gotta hand it to billie eilish, she makes some salient points about lunch
020
janka @owoce.bsky.social · 03/05/2025
reset the "days since" counter
120
janka @owoce.bsky.social · 23/04/2025
i found out that the pope died from a "meets jd vance, dies of cringe" meme
050