Sign in

François Best

@francoisbest.com
1.6K followers 474 following 1.6K posts

Freelance web developer, open-sourcerer, speaker. Building `nuqs`, a type-safe search params state manager for React frameworks: 🔗 nuqs.dev 🦋 @nuqs.dev 🎥 youtube.com/@47ng-dev 🟣 twitch.tv/francoisbest 🏠 francoisbest.com

PostsRepliesMedia
François Best @francoisbest.com · 25/09/2026
Yeah I was gonna say, the Three.js and Blender things Astra and Opus 5.5 are outputting are nuts. But you still need care and refinement, raw output is a different kind of slop. Everything becomes slop when everyone mass-produces the same thing, and we've been given weapons of mass production.
230
François Best @francoisbest.com · 25/09/2026
You should publish it, I liked (and related to) the first two chapters.
040
François Best @francoisbest.com · 25/09/2026
Uh I can’t message you either 😅 I opened my DMs, try giving it another go from your end.
@patak.cat can’t be messaged
130
François Best @francoisbest.com · 25/09/2026
Thank you 🫶
010
François Best @francoisbest.com · 25/09/2026
I'm trying to record my talk for React Advanced, about why OSS isn't dead, but the cognitive dissonance pushes back hard. It's definitely different. I miss the days when we could have discussions as humans on GitHub issues & PRs, now it's just agent-to-agent.
360
François Best @francoisbest.com · 25/09/2026
Haven't been active much here, sorry, AI-in-OSS burnout is real. How do you care when nobody else does? When nobody engages? When all the human connection is gone? When all you read is AI slop? I want to go back to coding for fun. Because whatever this is, it's very much _not_ fun.
1611111
Reposted by François Best
React Advanced London @reactadvanced.gitnation.org · 19/09/2026
"Maintaining Open-Source at the Age of AI." That's the talk @francoisbest.com is bringing to React Advanced, on what it takes to keep open-source projects healthy as AI reshapes how code gets written. Can't wait to see you 🎟️ reactadvanced.com
032
Reposted by François Best
nuqs @nuqs.dev · 20/08/2026
📦 nuqs@2.10.0 is out! 🚀 The React SPA adapter is now SSR-compatible for @astro.build, Inertia.js, @fastify.dev etc. Feed it the `serverSearch` prop to avoid a flash of defaults on island hydration. Changelog: nuqs.dev/changelog#v2... Try it out: pnpm add nuqs@latest
// search.astro
---
import { SearchIsland } from '../islands/SearchIsland'
---

<SearchIsland client:load serverSearch={Astro.url.search} />

// SearchIsland.tsx
import { NuqsAdapter } from 'nuqs/adapters/react'

export function SearchIsland({ serverSearch }: { serverSearch: string }) {
  return (
    <NuqsAdapter serverSearch={serverSearch}>
      {/* useQueryState works here, on the server & the client */}
    </NuqsAdapter>
  )
}
081
Reposted by François Best
nuqs @nuqs.dev · 17/08/2026
📦 nuqs@2.9.6 is out! 🚀 It fixes an issue with pending URL updates not resetting on Back navigation in Next.js pages router & TanStack Router, when no useQueryState(s) hooks were mounted. Also minor correctness fixes for parsers. nuqs.dev/docs/changel...
nuqs.dev
Changelog | nuqs
Type-safe search params state management for React. Like useState, but stored in the URL query string.
081
Reposted by François Best
nuqs @nuqs.dev · 05/08/2026
📦 nuqs@2.9.5 is out! 🚀 It adds SSR support to the community Inertia adapter, and fixes 6 minor edge-case bugs. Full changelog: nuqs.dev/changelog#v2... Try it out: pnpm add nuqs@latest
nuqs.dev
Changelog | nuqs
Type-safe search params state management for React. Like useState, but stored in the URL query string.
061
François Best @francoisbest.com · 30/07/2026
cc @jovidecroock.com
130
Reposted by François Best
nuqs @nuqs.dev · 29/07/2026
📦 nuqs@2.9.3 is out! 🚀 It fixes a bug where state updates would blink/replay when pending state updates done in startTransition were rebased on top of other priority updates. Concurrent React is fun. Try it out: pnpm add nuqs@latest
Install nuqs@latest using your favourite package manager.
083
François Best @francoisbest.com · 29/07/2026
If that applies to staged packages too, that would be a good time to kick off a review phase. But as others mentioned, "who watches the watchmen?" is the concern. I can see a lot of workflows that expect the package to be available after publish breaking on a delay (eg: for integration tests).
120
François Best @francoisbest.com · 24/07/2026
🗣️ I'll be speaking at @reactadvanced.gitnation.org London again this year! 🇬🇧 My "Maintaining open-source at the age of AI" talk is a fun one, with deep & important discussions about our OSS ecosystem. See you all on October 23rd/26th! Grab your ticket or register for the livestream via my badge:
gitnation.com
Check out my badge & claim your free React Advanced 2026 remote ticket!
Join 5k engineers worldwide at React Advanced 2026 and meet 40+ top speakers at October 23 - 26, 2026
080
Reposted by François Best
nuqs @nuqs.dev · 24/07/2026
📦 nuqs@2.9.2 is out! 🚀 It fixes a React concurrency issue where a discarded render could leave query state stuck out of sync with the URL. Try it out: pnpm add nuqs@latest
Install nuqs@latest using your favourite package manager
091
François Best @francoisbest.com · 21/07/2026
If Doom was made in the EU 🍪 The HTM-in-canvas API is really fun to play with. Play it here: doom-c15t.vercel.app
041
François Best @francoisbest.com · 19/07/2026
You can disable the verbs (but no luck bringing the details of what it's doing aside from ctrl+o to expand): github.com/franky47/dot...
github.com
120
Reposted by François Best
nuqs @nuqs.dev · 19/07/2026
📦 nuqs@2.9.1 is out! 🚀 It includes many bug fixes, a few found by @shadcn.com's /improve skill 🫶, and also: - Better monorepo & MFE compatibility - Fixed startTransition support in @reactrouter.com v7+ (while loaders run) Also, we have a changelog page now: nuqs.dev/changelog
nuqs.dev
Changelog | nuqs
Type-safe search params state management for React. Like useState, but stored in the URL query string.
091
François Best @francoisbest.com · 15/07/2026
You can apply it at either the job or the step level. If a job fails with it, it won’t fail the run (but will still mark the job red).
100
François Best @francoisbest.com · 15/07/2026
continue-on-error: true? docs.github.com/en/actions/r...
docs.github.com
Workflow syntax for GitHub Actions - GitHub Docs
A workflow is a configurable automated process made up of one or more jobs. You must create a YAML file to define your workflow configuration.
100
François Best @francoisbest.com · 09/07/2026
The replay of my @forkit.community talk is out: youtu.be/slbSwQo8Xqc?...
youtu.be
Maintaining open-source at the age of AI - François Best
YouTube video by Fork it! Community
1113
François Best @francoisbest.com · 08/07/2026
/goal go through all my repos and upgrade them to typescript@^7 Congrats to the team! 🎉
0160
Reposted by François Best
Neciu Dan @neciudan.dev · 06/07/2026
"The state of your application, instead of living in memory, lives in the URL." New Señors at Scale episode with @francoisbest.com, creator of nuqs: URL state internals, npm supply chain attacks, and AI agents in open source. 🎥 youtu.be/b3AYuuRdyf4 #React #nuqs
1155
François Best @francoisbest.com · 04/07/2026
Credit where it's due, it's from this library of components: ui.justinlevine.me/docs/compone...
ui.justinlevine.me
jal-co/ui
Open-source React component library. Polished, composable components for React and Tailwind CSS — distributed via a shadcn-compatible registry. Free forever, never paywalled.
020
François Best @francoisbest.com · 04/07/2026
✍️ New blog post: how I refactored the @nuqs.dev release pipeline for npm staged publishing. nuqs.dev/blog/staged-... Also some relevant supply-chain security advice for GitHub Actions & npm package consumers. (words written by hand, with some LLM assistance for supporting diagrams)
nuqs.dev
Staged publishing for supply-chain security | nuqs
How we hardened the nuqs release pipeline against supply-chain attacks.
2327
François Best @francoisbest.com · 02/07/2026
I'm live on Twitch for a couple of hours to talk about npm supply-chain security and GitHub Actions. But first, we gotta record some 8bit heavy metal 🤘😈 www.twitch.tv/francoisbest
twitch.tv
francoisbest - Twitch
Don't get pwned + it might get loud
052
François Best @francoisbest.com · 02/07/2026
When people say that "@nuqs.dev just works": this is why. app.principal-ade.com/47ng/nuqs
The nuqs codebase visualised as a tree map. The e2e test make up 60%, the docs 20%, and the core package only 10%.
2283
François Best @francoisbest.com · 01/07/2026
Not yet, my verification flow is based on reproducible builds, to match the integrity SHA512 computed at stage publish time (to detect tampering on the GitHub runner) If that fails, it shows me a diff of the tarball contents for review.
120
François Best @francoisbest.com · 30/06/2026
This is the first GA release that went through our new npm staged publishing pipeline 🙌 Blog post explaining how it works in progress ✍️
120
François Best @francoisbest.com · 29/06/2026
💯 I have the same problem with nuqs, unfortunately for some transforms that the type system cannot represent (eg: positive integers vs `number`), you need runtime verification for the codecs, with fuzzing or property testing (cc @nicolas.dubien.me).
220
François Best @francoisbest.com · 27/06/2026
I’d love your opinion on this once I have something to share.
100
François Best @francoisbest.com · 27/06/2026
Weekend project: drafting a spec RFC for StandardCodec, a StandardSchema inspired-and-compatible way to bidirectionally convert between two arbitrary data types in TypeScript. Zod codecs, Effect Schema, nuqs parsers, and now Waku codecs are all implementations of this. We need a standard.
4120
François Best @francoisbest.com · 27/06/2026
🫶
000
François Best @francoisbest.com · 26/06/2026
Your company should sponsor Artem if it mocks its HTTP/API layer with mswjs.io. (and if it does not yet, it should) $ npx cashcn npm://msw 100/m
mswjs.io
Mock Service Worker
API mocking library for browser and Node.js
170
François Best @francoisbest.com · 26/06/2026
And for those who have the chance of not being glued to a terminal: github.com/sponsors/fra...
github.com
Sponsor @franky47 on GitHub Sponsors
I build open-source TypeScript libraries for privacy-first, secure and accessible web apps.
040
François Best @francoisbest.com · 26/06/2026
A huge thank you to all my sponsors 💖 Y'all are the reason I can dedicate more time to open-source, my dream being able to do this full-time and still pay the bills and sustain my family while working in the open. Join these wonderful folks, it's one command away: $ npx cashcn franky47 100/m 🫶
You reached your goal of 20 monthly sponsors!
4181
François Best @francoisbest.com · 21/06/2026
New silly weekend project: `cashcn`, the fastest way to sponsor OSS maintainers. $ npx cashcn franky47 100 Supports: - GitHub repos: 47ng/nuqs - OpenCollective: oc://antfu - NPM packages: npm://msw - recurring: 100/m Redirects to GitHub sponsors pre-filled (URL state FTW) Go sponsor maintainers!
github.com
GitHub - franky47/cashcn: Sponsor OSS maintainers via the CLI
Sponsor OSS maintainers via the CLI. Contribute to franky47/cashcn development by creating an account on GitHub.
33411
François Best @francoisbest.com · 11/06/2026
I discovered it from @benv.ca passage in @syntax.fm, your blog post was very useful for adding it to lazygit, thanks! zander.wtf/blog/lazygit...
zander.wtf
Using hunk as a diff viewer in lazygit | Zander Martineau
A short guide to getting hunk rendering inside lazygit's diff panel on macOS
010
François Best @francoisbest.com · 09/06/2026
Pareil chez moi, et l’appli ne fonctionne plus. 🫠
An error has occurred 
We are doing our utmost to resolve the issue. Please try again later.
120
François Best @francoisbest.com · 07/06/2026
It gets better at the end:
OPEN SOURCE IS ABOUT PEOPLE
030
François Best @francoisbest.com · 07/06/2026
Thanks, it went well ☺️ knip.dev was also featured:
Four icons on a black background:
TypeScript (tsc), Vitest, Knip, oxlint/oxfmt
140
François Best @francoisbest.com · 07/06/2026
Shipping ship-tracking on a ship 🚢🚢🚢
120
François Best @francoisbest.com · 05/06/2026
It was Claude with the NPM package in the GitHub Actions. 🔪
020
François Best @francoisbest.com · 05/06/2026
I could submit it but there’s a 100% chance that the content will be 90% different 😅
110
François Best @francoisbest.com · 05/06/2026
Yes that’s the “how to capture the audience in the first 10s” intro 😅
140
François Best @francoisbest.com · 05/06/2026
At @forkit.community Rouen: www.forkit.community/events/2026-...
forkit.community
Maintaining open-source at the age of AI | Rouen, France, 2026
Come meet more than 200 people sharing their real professional lives and feedback. No nonsense, no divas, just genuine individuals discussing real problems and solutions. From students eager to learn ...
021
François Best @francoisbest.com · 05/06/2026
Talk prep is going well 🙈💀
MacBook on a table, Keynote slide reads: OPEN SOURCE IS DEAD.
7341
François Best @francoisbest.com · 04/06/2026
I would argue the SHA1 is the lockfile, but the discovery system to map it to version bumps (including breaking changes indeed) is what's missing as a first-party (pinact & zizmor have both a way to resolve/verify the SHA1 against a tag). Making tags immutable by default (after a delay) might help.
100
François Best @francoisbest.com · 04/06/2026
Yes that becomes the problem. Currently trying this out on a personal action that nobody else uses, so less of an issue, but having to commit the previous SHA1 (because ouroboros) is annoying indeed. bsky.app/profile/fran...
100
François Best @francoisbest.com · 04/06/2026
Stong Jurassic Park vibes
static.klipy.com
Shocked: It's a UNIX System! I Know This!
ALT: Shocked: It's a UNIX System! I Know This!
150