Tomas
tomasklingen.nl
Tomas
@tomasklingen.nl
🎸👨‍💻 Frontend Web Dev @ Chordify
Wow I’m shocked.. I’ve watched so many hours of videos of him explaining chess with so much passion and expertise. I was literally watching one tonight. This is an extremely sad loss for the chess community.
GM Daniel Naroditsky passed away. He was a talented chess player, commentator, and educator. FIDE extends its deepest condolences to Daniel’s family and loved ones.
October 20, 2025 at 9:39 PM
Reposted by Tomas
Firefox now supports view transitions, the command and commandfor HTML attributes, and the moveBefore() method.

www.firefox.com/en-US/firefo...
Firefox 144.0, See All New Features, Updates and Fixes
www.firefox.com
October 14, 2025 at 3:20 PM
It’s not explicitly required, but passing an Error object type as { cause } will display very nicely in error monitoring tools like @sentry.io. It will show the child and parent errors stacked together.
JS pro tip: Add { cause } to errors. Makes debugging and inspection way easier 🔍

developer.mozilla.org/en-US/docs/W...
October 2, 2025 at 8:33 PM
It's called, gaslamping. I don't know why you keep saying gaslighting.
October 1, 2025 at 9:43 PM
Go take the State of JavaScript 2025 survey if you have a minute! survey.devographics.com/survey/state...
State of JavaScript 2025
Take the State of JavaScript survey
survey.devographics.com
September 29, 2025 at 8:44 PM
Every React hook has multiple levels of understanding a dev has to go through to get to most out of them. Hopefully at some point I fully understand Reacts concurrent rendering gotchas.
TIL: the "sync" in @react.dev's useSyncExternalStore isn't for "synchronise", it's for "synchronous".

As: it's not for synchronising against an external store,

It's for synchronously (ie: disabling concurrent features) updating against a store's changes.

h/t @tkdodo.eu 🤯
September 20, 2025 at 6:02 AM
Having this exact same problem. In the Mac dock I'm trying to keep them far away from each other
TFW for a moment you can't tell which one is the code editor and which one is the web browser
September 19, 2025 at 9:15 AM
About the React useEffect bug and the CloudFlare outage..

Of course devs just need to learn their tools, RTFM and understand the libs/frameworks they're using.
But what's also true is that framework APIs should be designed in such a way that they're intuitive to use and hard to accidentally abuse.
September 17, 2025 at 8:10 AM
Reposted by Tomas
Can't believe what I'm reading. Accidentally DDoS yourself because you fetch in useEffect in 2025 is so avoidable 😂

blog.cloudflare.com/deep-dive-in...
September 13, 2025 at 8:26 AM
Reposted by Tomas
We’ve launched MDN’s new front end — and it’s just the beginning.

Intentionally targeting Baseline "Widely available" features when deciding on which ones to use. This means we're able to adopt modern CSS and web components for our UI.

Check it out 👇
developer.mozilla.org/en-US/blog/...
Launching MDN's new front end | MDN Blog
MDN is getting a facelift 🎉 Discover what's changed, what's improved, and how navigating the site just got smoother.
developer.mozilla.org
August 25, 2025 at 10:00 AM
Reposted by Tomas
I edited my Cross-Site Request Forgery countermeasures research into a stand-alone article, including recommendations reusable by other projects.

tl;dr: no need for tokens or keys, modern browsers tell you if a request is cross-origin!

words.filippo.io/csrf
Cross-Site Request Forgery
Cross-Site Request Forgery countermeasures can be greatly simplified using request metadata provided by modern browsers.
words.filippo.io
August 13, 2025 at 4:06 PM
I’m a little bit obsessed with hydration errors in React. To prevent them the typical advice is to use useEffect when using browser apis like localStorage. But useSyncExternalStore is so much more powerful! When (re)mounting a component, it skips the getServerSnapshot 💡 saves a useless render.
August 10, 2025 at 3:34 PM
Of all the type-aware TS linting rules I’m really looking forward to see “No-unnecessary-condition” implemented in the Rust/Go-based linters. I almost feel like it could be a strict tsc flag.

typescript-eslint.io/rules/no-unn...
no-unnecessary-condition | typescript-eslint
Disallow conditionals where the type is always truthy or always falsy.
typescript-eslint.io
August 8, 2025 at 9:25 PM
Reposted by Tomas
Saw @ThePrimeTime's video (youtu.be/ciNXbR5wvhU?...) & comments around HTTP cache & sharing across origins.

Resources have long been isolated due to partitioning (2020+ in Chrome, longer in other browsers).

Spreading knowledge is hard 😳: developer.chrome.com/blog/http-ca...
#webperf #webdev
Why your website should be under 14kB in size
YouTube video by ThePrimeTime
youtu.be
August 4, 2025 at 4:05 AM
Together with Claude Code I'm migrating my site from react-router (with pre-prendering for SSG) to Astro.
I first let CC read some Astro docs, then prompted to create a project requirement plan for the migration in several steps. This generally works great for CC. The time estimation is funny.
July 26, 2025 at 6:58 PM
Reposted by Tomas
“The reason SPAs became the default wasn’t because they were better. It was because, for a while, they were the only way to deliver something that felt fluid – something that didn’t flash white between pages or jank the scroll position.”

www.jonoalderson.com/conjecture/i...
It's time for modern CSS to kill the SPA
Native CSS transitions have quietly killed the strongest argument for client-side routing. Yet people keep building terrible apps instead of performant websites.
www.jonoalderson.com
July 26, 2025 at 1:13 AM
Reposted by Tomas
One of the most powerful tools in my toolbox is SVG. When combined with CSS and JavaScript, we can do some truly remarkable things. ✨

📝 I’ve just published a brand-new blog post that covers the most critical fundamentals. It’s chock full of interactive demos. 😄

Check it out:
A Friendly Introduction to SVG • Josh W. Comeau
SVGs are one of the most remarkable technologies we have access to on the web. They’re first-class citizens, fully addressable with CSS and JavaScript. In this tutorial, I’ll cover all of the most imp...
www.joshwcomeau.com
July 21, 2025 at 3:11 PM
At work we’re currently in the process of migrating from php + react SPA with some old school Hypernova SSR rendering to @reactrouter.com in framework mode. It’s tough and a lot of work, but probably worth it!
July 22, 2025 at 6:25 PM
Hey! 💿!
July 22, 2025 at 6:24 PM
Dropped out of technical computer science. I liked web and visual stuff things more than low level programming. It doesn’t t hurt to have dabbled into assembly and c for a little bit though!
Frontend Developers:
Do you have a higher education degree?

Is it related to Frontend?
July 22, 2025 at 4:53 AM
I upgraded my site! ✨

tomasklingen.nl

💿 Static site generation using React Router with pre-render
🐙 Builds with GitHub Actions, hosted on GitHub pages
💨 My first experience with Tailwind (the design is in beta shape still though 🚧)
📝 Notes/thoughts/blog in Markdown

#publiclearning #frontend
Tomas Klingen - Front-end Web Developer
Meet Tomas Klingen, a passionate Front-end Web Developer based in the Netherlands. Explore his portfolio showcasing expertise in React, Angular, TypeScript, and crafting modern, user-centric web appli...
tomasklingen.nl
July 19, 2025 at 7:59 AM
I scored 10/28 on jsdate.wtf and all I got was this lousy text to share on social media.
new Date("wtf")
How well do you know JavaScript's Date class?
jsdate.wtf
July 11, 2025 at 10:01 PM
Cloudflare's bot crawl payments: Is this innovation or just monetizing unauthorized data access? Feels a bit like fencing digital info. #Cloudflare #DataRights #PayPerCrawl
July 3, 2025 at 8:31 AM
Reposted by Tomas
Just published a new blog post on why I think it's time that the web platform added a declarative template API.

Let me know what you think!

As I find time, I'll be working on more of a concrete proposal over the next few months...

justinfagnani.com/2025/06/26/t...
The time is right for a DOM templating API
justinfagnani.com
June 26, 2025 at 2:04 PM
Reposted by Tomas
Most of the time, boolean props on react components are a bad idea. They don't evolve well. More boolean props create impossible states and the component becomes a "thing" that does way too much.

Go for string literal union types and slot props (composition) more often than not.
June 18, 2025 at 4:08 PM