François Best
banner
francoisbest.com
François Best
@francoisbest.com
Freelance web developer, open-sourcerer, speaker.

Building `nuqs`, a type-safe search params state manager for React frameworks:
🔗 https://nuqs.dev
🦋 @nuqs.dev

🎥 youtube.com/@47ng-dev
🟣 twitch.tv/francoisbest
🏠 francoisbest.com
Pinned
So happy to be back at #ReactParis this year! 🙌

Talks are good to quickly introduce concepts, but workshops are a better format to go deep into architecture decisions, advanced patterns, and practical use-cases.

Looking forward to seeing y'all in Paris! 🇫🇷🥐
🟦 #WORKSHOP DAY - Just Confirmed 😉

👨🏻‍💻 Level Up Your URL State In Next.js With @nuqs.dev 👨🏻‍💻with @francoisbest.com

Learn More & Save Your Seat NOW!
⚠️Limited Seats
👉🏼 react.paris
Keeping track of my @github.com Copilot usage.

It also shows the progress in the current month so I know whether to prompt away or to go touch grass. 🤖🌿

Source: github.com/franky47/gh-...
February 11, 2026 at 7:16 PM
Ghostty for standalone (ssh-ing usually), VSCode's built-in for dev-related tasks.
February 11, 2026 at 10:15 AM
At this rate, @npmx.dev will have Stories by the end of February 🫠
February 10, 2026 at 6:38 AM
Very nice!

I have hope for a world where the agents can do work for us while we make art (and not the other way around).
February 9, 2026 at 4:15 PM
Tests. Large positive diffs are always tests for me.
February 9, 2026 at 3:52 PM
Long live @clever.cloud 🙌
February 6, 2026 at 7:49 PM
Thank you to whoever liked @nuqs.dev on @npmx.dev 🫶
February 4, 2026 at 3:00 PM
Yeah I’d need to refactor the e2e test fixtures to do that, they were not thought of with a11y in mind (since playwright is the only thing hitting them).

Another tricky thing was having to temporarily remove the `export const dynamic = ` declarations, to test both with & without cacheComponents:
test: test Next.js cacheComponents in CI by franky47 · Pull Request #1324 · 47ng/nuqs
It requires running a codemod to comment out the export const dynamic = 'force-dynamic' directives, and refactors e2e locators to account for Activity having both pages (source & destin...
github.com
February 4, 2026 at 6:49 AM
Thanks, I had this thread pinned to read it in depth, we had a brief look on stream yesterday.

The @nuqs.dev e2e test suite passes with cacheComponents (with locators tweaks and a top-level Suspense), but there is still an issue repro I need to integrate:

github.com/47ng/nuqs/is...
nuqs state not updating correctly when using Next.js `cacheComponents=true` · Issue #1273 · 47ng/nuqs
Discussed in #1272 Originally posted by rajput-hemant December 22, 2025 Hi 👋 I’m running into an issue with nuqs where the URL state seems to stay stale when cacheComponents: true is enabled in nex...
github.com
February 4, 2026 at 6:44 AM
- Testing time (timers, throttled/debounced behaviours, but also time zones, scheduling)
- Cryptography testing (static non-regression tests vs testing randomness distribution, constant-time properties)
- Keeping track of lib coverage across multiple test envs (several e2e + unit tests)
February 3, 2026 at 3:30 PM
🟣 I'm live on Twitch!

Looking at the Fastify vuln, working on nuqs & yapping about OSS, come say hi! 👋

twitch.tv/francoisbest
francoisbest - Twitch
Fastify vuln, working on nuqs & yapping about OSS
twitch.tv
February 3, 2026 at 12:59 PM
Congratulations! What a view!
February 3, 2026 at 11:55 AM
Read it yesterday (RSS FTW), it’s been twice I head of `stow` in a week, funny how old UNIX tech is having a massive comeback at the age of agents.

Also TIL about fish custom keybindings, very interesting 👀
February 3, 2026 at 7:51 AM
TIL about the .extend builder pattern to add context to test fixtures in @vitest.dev

Seems super handy for backend testing (setting up servers, database, mocked services etc).

And now with type safety? 😍
The next @vitest.dev version has a new `test.extend` syntax that supports type inference (including the correct scope)!

main.vitest.dev/guide/test-c...
February 3, 2026 at 6:59 AM
cc @thibaultleouay.dev who had similar issues 👀
February 2, 2026 at 7:34 PM
I need to dive deeper into the @react.dev Activity component (particularly the @nextjs.org cacheComponents implementation), having two routes mounted in the DOM on navigation is wreaking havoc in e2e locators and makes it hard to reason about URL state updates (which page sees what URL as the SoT).
February 2, 2026 at 4:53 PM
Reposted by François Best
📦 nuqs@2.8.8 is out! 🚀

🐞 It fixes a bug with @nextjs.org app router where URL state would leak during navigation (destination page pre-rendered with the source page's search params).

Try it out: pnpm add nuqs@latest
February 2, 2026 at 2:23 PM
Reposted by François Best
> If you work in OSS, consider adding your voice. The feedback period ends February 3, 2026

2 days left. Please take some time and provide feedback if you have opinions or ideas for the EU.

ec.europa.eu/info/law/bet...
Good read. A submission to the European Commission's call for evidence on Towards European Open Digital Ecosystems (importance of OSS for EU tech sovereignty, security and competitiveness). It ends with:
> If you work in OSS, consider adding your voice. The feedback period ends February 3, 2026.
> When governments buy Open Source services, the money rarely reaches the people who actually build and maintain it. Procurement rules favor large system integrators, not the maintainers of the software itself.
February 1, 2026 at 3:17 PM
Reposted by François Best
✍️ I wrote a short opinion piece about a pattern I keep seeing lately: switching to the smallest responsive layout too early.

I call it The Too-Early Breakpoint.

🔗 ishadeed.com/article/too-...
The Too Early Breakpoint
An opinion on why we shouldn't switch to the smallest design too early.
ishadeed.com
February 1, 2026 at 2:40 PM
Reposted by François Best
Show me your best ✂️ knip PR diffs and I might put them on a slide in my talk. The more 🔴 📉 the better!
January 31, 2026 at 8:20 AM
Reposted by François Best
📦 nuqs@2.8.7 is out! 🚀

🐞 It fixes a bug with @reactrouter.com 6/7 & @remix.run with Link & Back navigation, where the source page would briefly re-render with the destination URL state before unmounting.

Try it out: pnpm add nuqs@latest
January 30, 2026 at 3:53 PM
So happy to be back at #ReactParis this year! 🙌

Talks are good to quickly introduce concepts, but workshops are a better format to go deep into architecture decisions, advanced patterns, and practical use-cases.

Looking forward to seeing y'all in Paris! 🇫🇷🥐
🟦 #WORKSHOP DAY - Just Confirmed 😉

👨🏻‍💻 Level Up Your URL State In Next.js With @nuqs.dev 👨🏻‍💻with @francoisbest.com

Learn More & Save Your Seat NOW!
⚠️Limited Seats
👉🏼 react.paris
January 30, 2026 at 11:21 AM
1. Set up your CI/CD script in the package settings
2. Add the right permission id-token: write to the job
3. Use latest npm CLI
4. Pass GITHUB_TOKEN to the publish step

I do the last step via semantic release:

github.com/47ng/nuqs/bl...
github.com
January 29, 2026 at 6:21 AM
Thanks for these!

All the dates mention 2025.1.28, typo? Also, happy new year! 🎉
January 28, 2026 at 9:04 AM
"Choose your future", "We should all have a say"

→ No choice being given, no way to give feedback.

Looks like there is no future for @mozilla.org down that road.
The future of AI isn’t inevitable.
It’s a choice we should all have a say in making.

Our 2025 State of Mozilla report is live.
Choose your future: stateof.mozilla.org
January 27, 2026 at 10:19 PM