Katja Lutz
banner
katywings.bsky.social
Katja Lutz
@katywings.bsky.social
Anarchist altruist, down-to-earth, independent hobby astronaut 🧑‍🚀 and amazingly lively, passionate web developer, in the stand against the technocrats. Creator of @nitropage.bsky.social, the FOSS visual website editor.

nitropage.org / lufrai.org
and in addition guide the users of course 🙂
November 10, 2025 at 8:28 PM
Maybe a good middleground could be to have two supported methods 🤔:

imported CSS =
basic features (tiny runtime)

url imported CSS + API =
extended features (heavier runtime)
November 10, 2025 at 8:25 PM
So what do you do? Do you try to fix the flakyness of these features with an overly complicated runtime or do you remove them and guide users to write better CSS?

Better CSS as in: "body:has(.route-xyz) {"
instead of
"body {"

3/3
November 10, 2025 at 2:59 PM
The harder question is: how do you transition from protecting to guiding users?

SolidStart mounts CSS late, preventing FOECs, and it unmounts old CSS on route switch. Both these "features" have flaky sideeffects (including FOUCs) and are not needed, if the users would just write "better" CSS. 2/3
November 10, 2025 at 2:59 PM
Lol riiiight 🤦‍♀️, I am not even sure when I started using the wrong word 🥴.

If you ask me, preventing FOEC's at the framework level belongs to the category: protecting users from themselves. If thats a good thing is highly debatable. 1/3
November 10, 2025 at 2:59 PM
I think most cases (iteration, recursion), where implicit deps are "better", can be solved with explicit deps by using a deep-tracking utility. If this "deep" tracking utility uses an advanced algo, it even can be more performant than the implicit deps. Many people probably don't know about "deep" 🤔
November 9, 2025 at 2:42 PM
You are position:absolutely right 😅.

The one situation where I kinda can understand the user, is if they do not use css modules, and wanna use the same class names in their routes - and that is a big kinda 😉.
November 8, 2025 at 8:38 AM
Lets say you have two routes, route A sets the background-color of body to red, route B sets it to green.

Now when you clientside navigate from A to B, you wanna load the styles of B early to avoid FOUC, but you only wanna show the green background once B is ready for rendering.
November 8, 2025 at 6:20 AM
Most users fear change. So when they hear that they must give up something, to get something else they don't know, the gain must be explained extremely well and even then many will neglect it until they try it themselves.
November 7, 2025 at 9:47 PM
I think its a question of requirements, use cases and scaleability. E.g. a model like jQuery or htmx might not be perfect, but works "good enough" for the one or other use case.

Non-splitted effects that overrun and arent 100% correct in order, were not perfect, but they were usually "good enough".
November 7, 2025 at 9:47 PM
14:00: Showering
14:15: Seizure during showering
15:45: S̶t̶a̶r̶t̶ ̶w̶o̶r̶k̶i̶n̶g̶ Seizure
16:45: Seizure
19:30: Eat dinner
20:45: Seizure
22:15: Continue working or relax
24:00: Seizure
01:00: Sleep
November 1, 2025 at 11:41 AM
It is 3 PM and I have not been able to work in the past 48h because of almost uninterrupted phantosmia 😣.
July 29, 2025 at 1:14 PM
Dang it, I am still at the pizzeria 🤯
July 25, 2025 at 5:17 PM
I assume you didn't use context to have working types in the fields? 🤔
July 22, 2025 at 7:45 AM