Jacob Rask
ja.cob-ra.sk
Jacob Rask
@ja.cob-ra.sk
web platform staff engineer at Volvo Cars. design systems, developer experience and scaling web teams. falling back in love with css.
If you release a new major version of your design system as soon as there are non-trivial visual changes, what’s even the point of design tokens and components?

If you also want to change your token architecture/semantics, why not decouple that from the visual change?
October 22, 2025 at 6:57 PM
After several rewrites of my state machine I learned about the difference between onChange and onReceive in #SwiftUI. Now at least the state machine is.. very robust, and seriously well tested.
July 7, 2025 at 11:11 PM
Movie you’ve watched more than six times with a gif. Hard mode: no Star Wars, Star Trek, LotR, Marvel
June 30, 2025 at 11:32 AM
Really enjoying this book. I've barely been on horse back, but starting to feel some itch for several reasons.

Today while riding #MTB in the woods we crossed paths with my niece three times, but she was on a horse instead. Not that different perhaps...

www.goodreads.com/book/show/17...
On the Trail of Genghis Khan: An Epic Journey Through t…
The relationship between man and horse on the Eurasian …
www.goodreads.com
June 28, 2025 at 3:35 PM
Me adding an icon library to my iOS app:
This API is really convenient, importing everything, nice to not have to care about tree shaking and bundle size as much.

Me 10 minutes later:
Still waiting for the build to finish since the icon library 10xed the build time.

Some things are the same.
June 28, 2025 at 9:23 AM
rwt.io/typography-t...
It's such a bummer when you read a 2019 article about the "current state" of something, and it's still the case in 2025 :(
Getting bent: the current state of Italics in variable font support | Responsive Web Typography
One of the key objectives in the crea
rwt.io
June 27, 2025 at 10:44 AM
Implementing `font-variant-alternates: stylistic()` in our design system to toggle between font features.
There’s very little material about this online though. Anyone here used it?
How would you even go about creating a design token for something like a “time-colon” glyph variant? Should you? 🤔
June 26, 2025 at 4:46 PM
I now have a bunch of iOS simulator utils so that Claude can easily read logs or even take screenshots.

I can say “what have you done to my app?!”, Claude will take a screenshot and apologize
Guess what I ended up with? Preact? Web components?

Nope. SwiftUI.

Haven't touched XCode in 6 years when I did a tiny bit of Objective C, but Swift is not bad, actually. It's so quick to pick up new languages in the LLM era.

I guess this is now a #swiftui account.
Working on a side project and started completely from scratch. Just me, index.html, LLMs and npx serve.

I'm not a luddite, I think we probably still need ~50% of the abstractions created the last decade. But which half? You need to feel some of the pain to know.
June 24, 2025 at 7:53 PM
Guess what I ended up with? Preact? Web components?

Nope. SwiftUI.

Haven't touched XCode in 6 years when I did a tiny bit of Objective C, but Swift is not bad, actually. It's so quick to pick up new languages in the LLM era.

I guess this is now a #swiftui account.
Working on a side project and started completely from scratch. Just me, index.html, LLMs and npx serve.

I'm not a luddite, I think we probably still need ~50% of the abstractions created the last decade. But which half? You need to feel some of the pain to know.
June 23, 2025 at 8:55 PM
Reposted by Jacob Rask
Write flat tests. No "describe", no scenario nesting, no beforeEach/afterEach hooks (as a rule). Each test case is self-contained, listing all the setup it needs. Use Symbol.dispose for reliable cleanup. Use granular test cases.

☝️ These things will make your tests shine.
June 14, 2025 at 11:33 AM
The more I use Claude Code and Codex the more frustrated I get from the lack of agents for everything else

I just want an app on my phone that I can tell “summarize that Notion link that Bla bla what’s their name posted on Slack yesterday”
June 11, 2025 at 7:49 PM
How about 🧠

import { Input } from 'ds/forms/top-label';
import { Input } from 'ds/forms/floating-label';

instead of 🤢

<Input variant="top-label" />
<Input variant="floating-label" />
June 10, 2025 at 7:30 AM
Reposted by Jacob Rask
As a kid, I learned to program in HyperCard, a fantastic thing from Apple in the 1990s which empowered normal people to make homemade software. Last fall @pontus.granstrom.me started exploring and reinterpreting these ideas for 2025. Excited to share our writeup: pontus.granstrom.me/scrappy/
Scrappy
make little apps for you and your friends
pontus.granstrom.me
May 19, 2025 at 1:18 PM
Reposted by Jacob Rask
The verdict: neither React Router, Redwood SDK nor tRPC were complelling enough to switch from my <router-route> and <router-outlet> components paired with Navigation API interceptors.

Still also just share the types from the workers to types in JSDoc on the client.
June 8, 2025 at 6:31 PM
4 days from reporting a bug until it was fixed, that might be a record for any browser bug I’ve filed 👏

Also this pattern is really not used enough:

Chromium
issues.chromium.org
June 7, 2025 at 9:17 AM
I have a handful of screens with some mutations, HTML/JS sprinkles with most logic in Cloudflare workers. Wanted to see what the app would look with React Router (framework mode) or Redwood.

Claude Code is so good at understanding stuff like my little homegrown router, made a perfect rewrite.
Working on a side project and started completely from scratch. Just me, index.html, LLMs and npx serve.

I'm not a luddite, I think we probably still need ~50% of the abstractions created the last decade. But which half? You need to feel some of the pain to know.
June 7, 2025 at 9:04 AM
I’ve been employed full time as a software engineer for 16 years now.

I did not expect that 2025 would be the first year with a 5 days a week work-from-office policy.
June 4, 2025 at 8:07 PM
If I reimagined bundling today:

- start with no or light bundling
- dynamically bundle in prod based on usage

If modules A–F are often requested together in a short window, bundle them.
G–H might stay separate. I–Z in a different bundle. Could even be different for different user segments.
May 31, 2025 at 1:09 PM
Working on a side project and started completely from scratch. Just me, index.html, LLMs and npx serve.

I'm not a luddite, I think we probably still need ~50% of the abstractions created the last decade. But which half? You need to feel some of the pain to know.
May 30, 2025 at 10:27 AM
The principles outlined here are great. This could be huge.

remix.run/blog/wake-up...
Wake up, Remix!
It's time to go wake up Remix! Here's what we're building and what it means for React Router.
remix.run
May 28, 2025 at 4:01 PM
`<a href="">` is all you need in many cases, but the current state of tooling tricks developers into believing HTML is complex and full of foot guns.

`rel=noopener` has been the default for `target=_blank` links for years.
`rel=noreferrer` is an optional privacy feature, not a reasonable default
May 23, 2025 at 7:56 AM
We run our design system's test suite in CI in both React 18 and 19. Sometimes there's minor differences in HTML snapshots which would cause tests to fail. Putting the current React version in the Playwright snapshot filename solved it in a really neat way.
May 22, 2025 at 8:24 AM
Reposted by Jacob Rask
📝 You get more of what you make easy; therefore, be mindful of what you make easy.

blog.jim-nielsen.com/2025/be-mind...
Be Mindful of What You Make Easy
Writing about the big beautiful mess that is making things for the world wide web.
blog.jim-nielsen.com
April 16, 2025 at 5:53 PM
It's a shame there's still no good solution for snug widths combined with text-wrap in CSS, like the tooltip example in @ishadeed.com's article ishadeed.com/article/bala...

Maybe `calc-size()` could be extended to support this? It already has a custom `content` param so there's "room" in the API
April 14, 2025 at 10:47 AM