Sign in

Mat Simon

@matsimon.dev
164 followers 213 following 182 posts

Lead Architect @derstandard.at Full Stack Developer (SvelteKit, SwiftUI) www.matsimon.dev Founder of www.pausly.app ⭐️ Musician www.yesmeno.com 🎸 🎤 🎹 🥁 Blender enthusiast 🎨

PostsRepliesMedia
Mat Simon @matsimon.dev · 10/07/2026
Oh nice! That PR looks great. But this will not solve the issue of accessing a runtime env var during build, right?
100
Mat Simon @matsimon.dev · 10/07/2026
Yes! We tried proxying the access and actually throw, but this just throws whenever it’s imported not when it’s used (since that’s not a feature JS supports - same problem as with signals). It’s not perfect but in all use cases we thought of this caused the build code to fail with a useful message.
000
Mat Simon @matsimon.dev · 10/07/2026
This runtimeOnly schema wrapper does two things: 1. It makes the value optional during build, but doesn't make the return type optional. 2. It transforms the value to an Error during build, so that _if_ it is accessed, it will be very apparent and the build will fail in all likelihood
100
Mat Simon @matsimon.dev · 10/07/2026
The docs suggest to make them optional during building, but the downside is that you then need to handle the optional type all over the code since the type of the variable will be `undefined | string`. Although this is technically correct it's not great DX and unnecessary during runtime. 2/
100
Mat Simon @matsimon.dev · 10/07/2026
The new #sveltekit explicit environment variables are really great! But one thing that has been bothering me, is how to handle missing env variables during build time. We just found a nice solution that you might want to use as well. 1/ #svelte
Code to use for a runtimeOnly schema
130
Reposted by Mat Simon
Pausly @pausly.app · 10/07/2026
We have implemented one of the most requested features! When you're in the lobby, waiting for the session to start, you now see all the other members standing next to you. We hope you'll love this feature as much as we do.
Two pausly robots standing side by side.
111
Reposted by Mat Simon
Gerold Riedmann @riedmann.net · 26/06/2026
Meteorologen rechnen mit 41 Grad. Gemeinsam durch die Hitze kommen - mit dem STANDARD-Hitze-Liveticker. www.derstandard.at/jetzt/livebe...
derstandard.at
Drei Tage Rekordhitze stehen bevor – Am Sonntag laut neuester Prognose im Osten bis zu 41 Grad
Schon heute sollen bis zu 38 Grad erreicht werden. Die Regierung berief am Donnerstag das Krisen- und Katastrophenschutzmanagement ein. Der STANDARD begleitet Sie durch den Hitzetag
192
Mat Simon @matsimon.dev · 20/05/2026
Danke für den ping. Wenn ich mich nicht irre, ist die Liste nicht von uns vorgegeben. Ich werde aber morgen rausfinden was die richtige Kategorie wäre.
010
Reposted by Mat Simon
Pausly @pausly.app · 08/12/2025
We completely overhauled the user interface for unboxing new outfits. Hopefully you get to experience it soon :)
001
Reposted by Mat Simon
Pausly @pausly.app · 08/12/2025
High fiving has probably always been the most loved feature of Pausly. It's now possible to directly click on the 🙌 emoji to instantly react. No more stressing over finding the right emoji in time :)
011
Reposted by Mat Simon
Pausly @pausly.app · 08/12/2025
It has always been possible to replace single movements before starting a session, but it's now possible to replace them during a session as well! Click on the settings button and hit the "Replace this movement" button and you'll instantly get a new one.
001
Reposted by Mat Simon
Mia [data-css=poetic] @miriam.codes · 13/08/2025
🎉 Happy 30-month anniversary to Container Queries – in every browser since Feb, 2023. It was supposed to be impossible, but here we are! Why 2.5 years? Nothing will change tomorrow, but Baseline uses this milestone to signal confidence a feature has gained "wide" support. youtu.be/bhHV0rQ3-CQ
59917
Mat Simon @matsimon.dev · 02/07/2025
New blog post: simple, effective skeleton loaders using just HTML and CSS. www.matsimon.dev/blog/simple-... #css #html #svelte
matsimon.dev
Simple but Effective Skeleton Loaders — Mat Simon
Learn how to create a simple, effective skeleton loader component using just HTML and CSS, with full control over layout and design.
181
Mat Simon @matsimon.dev · 15/05/2025
This new #svelte feature is really exciting! It's basically a more versatile replacement of actions.
svelte.dev
{@attach ...} • Docs • Svelte
{@attach ...} • Svelte documentation
090
Mat Simon @matsimon.dev · 06/05/2025
www.matsimon.dev
000
Mat Simon @matsimon.dev · 02/05/2025
Very interesting... This will enable us to use `await` directly inside `<script>`, `$derived` and template code. In a SvelteKit context, this potentially means that the `load` function will not remain the place to fetch your data, but that components can do that themselves. #svelte
github.com
Asynchronous Svelte · sveltejs svelte · Discussion #15845
This is a long document; get yourself a cup of tea. tl;dr You can now use the await keyword in Svelte — in your <script>, inside $derived expressions, and in your markup — by installing the async b...
071
Reposted by Mat Simon
Pop Detective @popdetective.bsky.social · 04/04/2025
I recently watched Adolescence on Netflix and at the risk of sounding a bit iconoclastic, I’d like to offer some criticisms and concerns about how the mini-series (perhaps inadvertently) perpetuates some myths related to the online radicalization of men and boys.
Promotional image from Adolescence on Netflix
916443
Mat Simon @matsimon.dev · 29/03/2025
@tolin.ski Zero looks really promising to me and I love your Svelte adapter. Where and how do you deploy your zero-cache and what is your goto service for the PostgreSQL database?
100
Reposted by Mat Simon
Stefan Judis @stefanjudis.com · 27/01/2025
The power of view transitions is absolutely mind-boggling. Things like this 👇 are quickly done with some CSS (no hacks!) and no additional DOM elements. Wild! 🤯
411111
Mat Simon @matsimon.dev · 03/02/2025
I agree. Still using camelCase thought because that's just how JavaScript is written. Would feel out of place with other libraries and platform functions. (From reading your comments you seem to agree)
030
Mat Simon @matsimon.dev · 30/01/2025
Near the end you write "I’m still not convinced though because could a junior developer understand that more than this?". That is also a purely anecdotal argument, and I disagree with you. I think it's easier to parse and understand that a pseudo class is added to the selector with &:hover.
100
Reposted by Mat Simon
Zicklag @zicklag.dev · 29/01/2025
Thank you @matsimon.dev for this great blog post explaining $effect.root in Svelte 5! www.matsimon.dev/blog/svelte-... Really cleared up some confusion I had about why $effect.root wouldn't track my changes. 😀
matsimon.dev
Svelte in Depth: The $effect.root rune — Mat Simon
This article explores Svelte’s $effect.root rune, detailing its purpose, usage, and common misconceptions. It covers scenarios where $effect.root is essential, explains its lifecycle considerations, a...
0111
Mat Simon @matsimon.dev · 23/01/2025
Good read. "The man claims to have principles, but he appears to have only moods and impulses."
samharris.substack.com
The Trouble with Elon
I didn’t set out to become an enemy of the world’s richest man, but I seem to have managed it all the same.
020
Mat Simon @matsimon.dev · 18/01/2025
Very interesting new #svelte proposal: github.com/sveltejs/svelte/pull/150… A better, more portable implementation of “actions” called “attachments”.
070
Mat Simon @matsimon.dev · 14/01/2025
Elon Musk pretending to be one of the best players of Path of Exile in the world, and then live streaming to prove it... just to show everybody that he has absolutely no clue what he's doing and just bought some Chinese account has got to be one of the funniest things this year so far.
050
Mat Simon @matsimon.dev · 14/01/2025
Absolutely :) But to be fair, the match with Magnus was *really* close. And it was way really short too. It would be very entertaining to see a format with more games.
000
Mat Simon @matsimon.dev · 14/01/2025
Mastodon ist nicht besonders geeignet für sowas weil man dann die Instanz angeben muss. Generell ist das mMn der Grund warum Mastodon nie abgehoben hat oder abheben wird. Instanzen haben zu viel Einfluss auf das Netzwerk.
000
Mat Simon @matsimon.dev · 14/01/2025
I love the chess drama.
Screenshot of Hans Niemann's Twitter post: "As the #1 Blitz Player on CHESSCOM. I challenge the #2 and #3 players to an OTB Blitz match to decide who the best player in the world is. I am willing to put up anywhere from 1 to 1 million USD. If they are too afraid of the challenge, I expect them to retract all false accusations and issue a formal apology."
140
Mat Simon @matsimon.dev · 13/01/2025
I’m really happy about this. I see way too many people switching to Bluesky because it has not been taken over by a right wing lunatic. But the important thing about Bluesky is not that the company it is controlled by is not insane (yet), but that the network is decentralized!
030
Mat Simon @matsimon.dev · 12/01/2025
Ach steht eh ganz am Anfang. Danke :)
010
Mat Simon @matsimon.dev · 12/01/2025
Wie war die Fragestellung?
210
Mat Simon @matsimon.dev · 10/01/2025
In case you missed it, #vscode now has an option for custom labels! The #svelte vscode extension will set this automatically in the future, but until then, you can make these changes to optimize your tab labels in a #sveltekit project. github.com/sveltejs/lan...
The customLabels.pattern configuration for vscode.How tabs will be labeled with this configuration.
0101
Mat Simon @matsimon.dev · 09/01/2025
Just published a post about the new createSubscriber() function in #svelte, and how it helps you manage reactive values from external sources.
matsimon.dev
Svelte in Depth: The createSubscriber() function — Mat Simon
Learn how the createSubscriber() function in Svelte helps manage reactive values from external sources. Discover which problems it solves, when to use it, and how it works under the hood.
0307
Mat Simon @matsimon.dev · 09/01/2025
Funny... I made the exact argument in a Reddit post a few days ago. People constantly complain that there aren't enough svelte jobs, while simultaneously complaining that the team focuses on making Svelte are more reliable framework for big and professional projects. 🤷‍♂️
020
Mat Simon @matsimon.dev · 09/01/2025
How does that break reactivity?
100
Mat Simon @matsimon.dev · 08/01/2025
Same 😂
010
Mat Simon @matsimon.dev · 08/01/2025
Und könnte man kein Gesetz machen, dass das ORF Budget festlegt so dass es nicht einfach so von einer Regierung geändert werden kann? Oder ist das auch nur deswegen nicht realistisch weil es so ein politischer Wirbel wäre?
110
Mat Simon @matsimon.dev · 08/01/2025
Bzw: warum ist die GIS unabhängiger? Kann eine neue Regierung nicht auch einfach die GIS absetzen oder verringern?
110
Mat Simon @matsimon.dev · 08/01/2025
@arminwolf.at ich finde das einen guten und schlüssigen Post. Eine Sache verstehe ich nur nicht so ganz: das Argument warum der ORF nicht aus dem Budget finanziert wird, ist, dass man dann immer mit der aktuellen Regierung verhandeln müsse. Aber könnte das nicht gesetzlich verankert werden? 1/2
110
Mat Simon @matsimon.dev · 03/01/2025
I worded that poorly. It’s not about getting them off the main thread (for which you’d need a web worker) but yielding to the main thread so long running task don’t block the main thread for too long.
000
Mat Simon @matsimon.dev · 03/01/2025
Excellent post by @rviscomi.dev about how to get loops off the main thread efficiently.
calendar.perfplanet.com
Breaking Up with Long Tasks or: how I learned to group loops and wield the yield
Everything, On the Main Thread, All at Once Arrays are in every web developer's toolbox, and there are a dozen ways to iterate over them. Choose wrong, though, and all of that processing time will hap...
130
Mat Simon @matsimon.dev · 03/01/2025
@mandrasch.bsky.social in case you missed it ⬆️
010
Reposted by Mat Simon
Matthias Andrasch @mandrasch.bsky.social · 03/01/2025
Why can't we just use // sharedState.svelte.js export const searchText = $state(""); in the new #Svelte v5? @matsimon.dev was so kind to explain it to me, I turned my learnings (and his answers) into a short blog post: dev.to/mandrasch/sv... Critical feedback welcome! #javascript #webdev
dev.to
Svelte 5: Share state between components (for dummies)
As soon as you see the new $state in Svelte 5, you might be tempted to do this: //...
151
Mat Simon @matsimon.dev · 03/01/2025
developer.mozilla.org/en-US/docs/W...
developer.mozilla.org
Proxy - JavaScript | MDN
The Proxy object enables you to create a proxy for another object, which can intercept and redefine fundamental operations for that object.
110
Mat Simon @matsimon.dev · 03/01/2025
This means that the actual implementation of the array (and object) proxy is quite simple and handles all possible methods the array implements and might implement in the future. 4/4
100
Mat Simon @matsimon.dev · 03/01/2025
From the docs: "For example, array methods read and write to array through these internal methods, so methods like push() would also invoke get() and set() traps." So all these array methods that modify the array go through these traps that svelte can overwrite in the proxy. 3/
110
Mat Simon @matsimon.dev · 03/01/2025
That would be pretty error prone. Every time JavaScript adds a new method, the Svelte team would need to adapt immediately, otherwise reactivity would break for that specific method. In reality JavaScript proxies are pretty cool. They offer get() and set() traps. 2/
210
Mat Simon @matsimon.dev · 03/01/2025
And I'd like to clarify something. In my bsky thread I said that svelte is smart and proxies the methods and that's why methods like push() work too. The reality is a bit more complicated but more robust too. Svelte doesn't have to proxy ever method that modifies the underlying object. 🧵 1/
100
Mat Simon @matsimon.dev · 03/01/2025
Great post! Thanks for mentioning me. A small note: "When you use an object (including arrays) they are also not states themselves!" This is only correct if you export it (or use it outside the scope it's defined in). In the same scope, if defined with $state(), they can be overridden.
210
Mat Simon @matsimon.dev · 02/01/2025
And finally: for all intents and purposes, SvelteSet has the same signature as Set and should behave the same. I actually believe that there is a bug somewhere why simply logging a SvelteSet didn't work. I guess it used .toString() and this should also use the underlying signal. I'll test this today
110