Sign in

Antoine

@antleth.fr
191 followers 203 following 773 posts

Tech enthusiast, passionate software engineer and hardcore dark mode advocate

PostsRepliesMedia
Antoine @antleth.fr · 01/10/2026
My baby is back His brain is gone But he’s back
Hello screen from my brand new old MacBook
010
Antoine @antleth.fr · 23/09/2026
Meme about me wanting to try this but being held back by the fact my PC literally doesn’t turn on anymore
020
Antoine @antleth.fr · 19/09/2026
Officially Svelte-branded! 🧡
Mirror picture of myself wearing a white tee with orange Svelte logo, under a black hoodie with black Svelte logoMirror picture with more of my face and wearing the black hoodie with black Svelte logo
3190
Antoine @antleth.fr · 14/08/2026
Should I abort the
The merge conflict pop-up from LazyGit, letting the user either "View conflicts" or "Abort the" (we can easily guess the word "merge" is missing at the end here)
010
Antoine @antleth.fr · 25/07/2026
Speaking about your ESLint plugin: you’re using semver although @sxzz.dev released verkit as a modern replacement; interested in switching? 👀
@e18e/eslint-plugin’s package.json dependencies: empathic, module-replacements, semver
130
Antoine @antleth.fr · 24/07/2026
We take this way too much for granted, in my opinion
080
Antoine @antleth.fr · 24/07/2026
Switched btw :)
A screenshot of my commit on SC on GitHub where I removed semver and @types/semver in favor of verkit
010
Antoine @antleth.fr · 23/07/2026
Literally me It went so far I created a site for it
A Reddit post with the following body: "So this is going to sound insane but I need to type it out somewhere because I can't say this out loud to anyone I know.
I've read every changelog for every piece of software I use. Not skimmed. Read. Full patch notes, every version, going back years, for programs I don't even use anymore.
I have a spreadsheet. I know what build number introduced a scrollbar bug in an app that got discontinued in 2019.
It started as "staying informed." Then it became a compulsion. I get anxious if an app updates and I haven't read what changed, even if the update is a font tweak nobody will ever notice. I've stayed up until 4am reading commit messages on GitHub repos for software I have never opened.
The worst part: I don't remember any of it usefully. Ask me what changed in version 14.2 of literally anything and I'll tell you instantly. Ask me what I did last Tuesday and I've got nothing. My memory is apparently only wired for release notes.
I don't know if this is a real problem or just a weird hobby that got out of hand. I don't want to stop. I also don't know why I'm telling a plaintext forum with three other users this instead of a therapist.
Anyway. Update your software. Read the changelog. You'll understand eventually."
050
Antoine @antleth.fr · 16/07/2026
magic-string got more than half smaller btw!
Package size dropping from ~600kB to 305kB, making it 56% smaller
2302
Antoine @antleth.fr · 03/07/2026
That’s true! And modern browsers now set passive automatic for those ones After a closer look, MDN clearly states setting passive for scroll is useless: developer.mozilla.org/en-US/docs/W... You should be good to go with Svelte native features @daviddalbusco.com!
Extract for the link to MDN: "You don't need to worry about the value of passive for the basic scroll event. Since it can't be canceled, event listeners can't block page rendering anyway."
120
Antoine @antleth.fr · 02/07/2026
5/ Let's remove this $effect! 🚀 First option: `svelte:window`, as you mentioned with `bind:scrollY`. Although, instead of `bind:`, which I tend to avoid because it requires a variable, we can use `onscroll` directly. Second option: the great `scrollY` from `svelte/reactivity/window`.
Usage of `<svelte:window {onscroll} />`, allowing us to remove the $effect altogether without changing anything else.The built-in `scrollY` $state rune from `svelte/reactivity/window`, available since 5.11
240
Antoine @antleth.fr · 02/07/2026
4/ You can use AbortSignal's instead of `removeEventListener`. It allows for handler inlining and is cleaner, shorter, and more modern overall! :D developer.mozilla.org/en-US/docs/W... Bonus: Svelte provides a native $effect-bound signal for free with `getAbortSignal`! svelte.dev/docs/svelte/...
Usage of `const controller = new AbortController();` passed into the `signal` `addEventListener` option via `controller.signal`, and `abort`ed in the $effect return valueReplacing the manual AbortController with `getAbortSignal()` from Svelte since Svelte 5.35
230
Antoine @antleth.fr · 01/07/2026
Nice
"An impossible situation occurred" while refreshing my Vite app
3120
Antoine @antleth.fr · 10/06/2026
Ladies and gentlemen, SC is back up
The "what did it cost" Thanos meme with:
- "did you fix all the errors?"
- "yes"
- "what did it cost?"
- "2 hours less sleep"
120
Antoine @antleth.fr · 04/06/2026
SvelteKit 2.63.0 just got released, and env vars are now handled much better than before! 🔥 Here is a quick recap:
<!-- Before -->
<script>
  // Requires running at least `svelte-kit sync` to discover
  // Requires `publicPrefix` prefix
  // Always `string`
  import { PUBLIC_APP_ID } from "$env/static/public";
  // Properties require `publicPrefix` prefix
  // Properties can be arbitrary, thus typoed
  // Properties always `string | undefined`
  // Conflicts with the same import from `$env/dynamic/private`
  import { env } from "$env/dynamic/public";
  // Same logic with the `.../private"` counterparts (without
  // the prefix limitation)
</script>// After
// `src/env.ts`
import { defineEnvVars } from "@sveltejs/kit/hooks";
import * as v from "valibot"; // or any Standard Schema-compatible lib

export const variables = defineEnvVars({
  DEBUG: {
    public: true, // defaults to private (`false`), no need for a prefix
    static: true, // evaluated at build-time (like `"$env/static/...`), can be used for treeshaking (defaults to `false` = evaluated at runtime)
    description: "Enable debug logs and devtools", // LSP documentation!
    schema: v.pipe( // optional validation schema
      v.optional(v.string(), ""), // can both be validated...
      v.transform(str => !!str) // ...and converted to any type with a single schema!
    )
  },
  // ...
});

// Can then be imported with:
import { DEBUG } from "$app/env/public"; // or `/private` if `public: false`
// Typed as `boolean`, eliminates conditional branches depending on its value,
// AND carries its description on hover!// Still experimental! Enable it since Sveltekit 2.63 with the following config:
// svelte.config.js
export default {
  kit: {
    experimental: {
      explicitEnvironmentVariables: true
    }
  }
};

// OR
// vite.config.ts
import adapter from "@sveltejs/adapter-auto";
import { sveltekit } from "@sveltejs/kit/vite";
import { defineConfig } from "vite";

export default defineConfig({
  plugins: [
    sveltekit({
      // ...
      adapter: adapter(),
      experimental: {
        explicitEnvironmentVariables: true
      }
    })
  ]
});
3364
Antoine @antleth.fr · 02/06/2026
Oh wait, no! My bad Other languages do, but not JS/ESLint 😅
dummy method with a variable shadowed by another one in an inner block: no warning whatsoever
010
Antoine @antleth.fr · 01/06/2026
You can browse the list of releases of any package of Svelte Changelog by appending `/rss.xml` (or others) from a package’s page! Example: svelte-changelog.dev/package/@sve... Buttons are visible when clicking this icon \/
240
Antoine @antleth.fr · 31/05/2026
Svelte pro tip: I surprised myself writing this very cool pattern You can make a prop be either an attribute or a snippet: very handy when you want to provide two "size variants" of the same content!
The component implementing it:
1) a prop with a union type `string | Snippet` imported from "svelte" (can be anything else than a string btw
2) with an `{#if}` block, check whether the prop is `typeof prop === "string"` to use it as a regular string, or wrap it in a `{@render}` block in the `{:else}` branch otherwise: easy!On usage, it's type-safe and flexible: the prop stays mandatory (if you declare it so), but can be used either as an attribute (`prop="content"`) or as a snippet with whatever you want inside!
5264
Antoine @antleth.fr · 31/05/2026
Fixed
Moved to npmx.social PDS!
3120
Antoine @antleth.fr · 28/05/2026
Me in a very-not-official @npmx.dev Paris meeting with @jyc.dev & @graphieros.npmx.social!
Left to right: Alec, Jean-Yves & me
2312
Antoine @antleth.fr · 21/05/2026
Inspired by @npmx.dev’s OG images, I tweaked the ones for packages on Svelte Changelog to split org pkg on 2 lines It’s doesn’t look that better for short packages ("kit" is now alone on its own line for example), but I feel like it’s a good move still!
BeforeAfter
0130
Antoine @antleth.fr · 14/05/2026
Crazy timing to open GitHub
SvelteKit 2.60 being released "now" on the GitHub feed
1120
Antoine @antleth.fr · 09/05/2026
I absolutely *love* the timeline feature of @npmx.dev I realized in a new project that I didn't have the @types installed for eslint-config-prettier, despite having it in another project So I could verify in 2 clicks that this change actually happened and confidently remove a dependency!
The timeline for eslint-config-prettier in npmx
1795
Antoine @antleth.fr · 05/05/2026
It was time for the monthly Ladybird update video. So I launched it locally, and it's working impressively well for this early stage of development! Svelte Changelog struggles a bit, especially for rendering a ton of releases at once, but npmjs, @npmx.dev, or even Bluesky work super well!
0221
Antoine @antleth.fr · 18/04/2026
It’s getting out of hand, what should I do 😂
Spongebob meme with its eyes on two pages of a same book, choosing between npmx PDS or eurosky
7430
Antoine @antleth.fr · 05/04/2026
"Always has been" meme but the opposite, about React
010
Antoine @antleth.fr · 23/03/2026
When a caching bug unveils what’s under the mask of @npmx.dev
npmx page with the favicon of npmjs
100
Antoine @antleth.fr · 05/03/2026
Yeah I think so too Here are all the false positives I could find I just prepared a commit to disable irrelevant packages with a lot more of false positives (last pic)
@sveltejs/adapter-auto 7.0.1@sveltejs/vite-plugin-svelte 4.0.4 (and also 2 others)svelte-check 4.4.2@sveltejs/mcp, @sveltejs/opencode, acorn-typescript and eslint-config will be blacklisted from this feature

We can argue that acorn *might* be a candidate for an important fix someday, but it’s unlikely imo and I can tweak that list in the future
000
Antoine @antleth.fr · 03/03/2026
4/ Big change nº2: security fixes are now highlighted in Svelte Changelog! With the recent security fixes the team has been pushing, I think it's essential to draw attention to those. I detect this from the presence of commits in the release text; there might be false positives!
svelte@5.53.5, highlighted with a red border and a text above, encouraging to upgrade
220
Antoine @antleth.fr · 03/03/2026
3/ I added weeks as relative duration in releases' headers I'm not 100% convinced it's good as it "reduces precision", but it's still an existing unit 😅 Tell me what you think! I will continue to tweak the elapsed duration format to make it as natural as possible 🔥
The popup for "last week"
120
Antoine @antleth.fr · 03/03/2026
2/ Big change nº1: you can now use the `?reset` query parameter on any package page to reset your last view time! Convenient when you accidentally open a package and want to get the badge again, or when you present TWIS and still want to be able to browse the site from time to time!!
A showcase of the new query parameter with the value `4d1h` (the "hour" option seems broken in prod, will fix 😅)
120
Antoine @antleth.fr · 02/03/2026
To clarify: here’s what it looks like with PWAs, and viewport-fit=cover the only way to make safe-area-inset-* work in this environment
Fullscreen result (except the status bar) in a 26.3 PWA
100
Antoine @antleth.fr · 01/03/2026
Looks like we got a new guy in town!
@sveltejs/sv-utils was recently discovered, so it was added to the sidebar, and a "new!" badge is on it!
060
Antoine @antleth.fr · 25/02/2026
The new StackOverflow site (beta.stackoverflow.com) is (still) using Svelte 5! They seem to be using micro-frontend technologies
The console showing __svelte.v is 5The main content of the page being in a big div with an id of "sveltekit-micro"
2111
Antoine @antleth.fr · 24/02/2026
Always 😔
Meme meaning "I want a faster linter and formatting but everytime a new one is announced it doesn’t support Svelte (or only partially)"
1221
Antoine @antleth.fr · 23/02/2026
Mobile navigation:
110
Antoine @antleth.fr · 23/02/2026
10/ Best for last: the navigation items have been completely overhauled! 🤯 Now, there FINALLY is a drawer on mobile for navbar items, and the desktop version is now MUCH prettier, thanks to the bits-ui component
110
Antoine @antleth.fr · 23/02/2026
9/ You might've seen it recently when SvelteKit just added support for Vite 8: an experimental feature dropped, analyzing the contents of a release, and clearly showing the "added support milestones" 👀 As an image is worth a thousand words, here it is:
The bar showing up under SvelteKit 2.53.0
120
Antoine @antleth.fr · 23/02/2026
8/ Time for a bigger feature now: a new option is now in the sidebar, allowing you to change the initial state per-PR You can by default expand all, collapse all, or leave my algo show you only what you didn't see yet, as before Speaking of it, I slightly improved the expanding logic of the algo!
The options at the bottom of the sidebar
110
Antoine @antleth.fr · 23/02/2026
7/ Yet another QOL: the button to open a linked issue/PR on GitHub is now ALSO present inside the related accordions! It's better than having to scroll aaaaall the way down :D
The button at the bottom of the linked issue accordion
110
Antoine @antleth.fr · 23/02/2026
6/ For those who didn't know, you can use svcl[.]dev and prefix a GitHub release or issue/PR/discussion to display it on SC I added a little "pro tip" for that feature at the bottom of the details page for this :)
The hint at the bottom of the details page
110
Antoine @antleth.fr · 23/02/2026
5/ After the pinning icons, a new (pun intended) badge has been added to the sidebar! It shows up for packages that have recently been added to the scanned repos & never been visited: another better glimpse of what's new! (This one is only for showcase, there are currently none displayed live!)
A "new" badge
130
Antoine @antleth.fr · 23/02/2026
4/ QOL again, the tracker now shows if a feature is not available instead of simply showing "empty" For example, on repos with Discussions disabled, it will accurately show that!
Discussions not being available for Rich-Harris/magic-string, unlike PRs and Issues that show an empty state
120
Antoine @antleth.fr · 23/02/2026
3/ A little icon is now visible when hovering over a package name! As you might guess, it copies the package name, inspired by this npmx contributor A gorgeous Sonner banner by @robsoriano.com's Svelte port is confirming the action 👌 bsky.app/profile/wilc...
251
Antoine @antleth.fr · 23/02/2026
2/ @npmx.dev made its entrance into SC! Its icon is now displayed in all the compatible pages, leading you straight to their site! (I inverted the icon to fit the dark background; it doesn't look that great, but it's the best I can do 😅)
The npmx icon
1111
Antoine @antleth.fr · 23/02/2026
1/ Let's start small: relative dates in releases' headers are subtly more accurate, using more natural differences 🕰️ Instead of counting hours passed, it counts _days_, showing e.g. "3 days ago" instead of 2 between Jan 13 5 PM and Jan 16 11 AM Subtle QOL!
Illustration of the "days ago" in the headers
120
Antoine @antleth.fr · 20/02/2026
Huh oh
Free limit reached on Vercel
Svelte Changelog is down
220
Antoine @antleth.fr · 18/02/2026
Commits straight on master, bulk release, "update <specific dependency>" changes, deleted previous release... I can spot a security fix when I see one 👀
Svelte, SvelteKit, as well as Cloudflare, Netlify, and Vercel adapters all receiving an update at once
110
Antoine @antleth.fr · 06/02/2026
Damn, Svelte 5 dot FIFTY hits different, that's a LOT of releases! 🤯🚀
Header of the svelte@5.50.0 release from svelte-changelog.dev
070
Antoine @antleth.fr · 02/02/2026
I feel cool now @coolify.io
A meme joking about myself who’s proud of having successfully installed Coolify on my macOS server  in Docker behind a Linux VM, but that’s the daily job of actual sysadmins
010