Looks nice!
@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
Looks nice!
I was ranting about skills on stream this morning, and @tanstack.com ships the solution a few hours later π
Skills shouldn't be copy-pasted, they should live alongside the code they describe. Pinned to the exact version.
tanstack.com/intent
π£ Live now!
Tomorrow on stream I'll be unveiling a new @nuqs.dev API.
Your URL state is about to become much cleaner, type-safe, and easier to scale.
10am CET.
twitch.tv/francoisbest
The big takeaway here is that people forget (or never learned) that the URL is the tier 1 state manager. @tanstack.com and @nuqs.dev are doing their best to re-educate the masses.
Rendering dynamic server components via searchparams feels like a cheat code, but itβs the way it was historically done
That looks super useful indeed. π
π¦ nuqs@2.8.9 is out! π
It fixes a warning in @nodejs.org 25 related to localStorage access on the server (TIL Node.js is adding this API π).
You can now enable debug logs server-side with the env var DEBUG="nuqs" (or any string that contains it).
Try it out: pnpm add nuqs@latest
Anatomy of an LLM connection string llm://app-name:password@api.openai.com/gpt-5.2?temp=0.7&max_tokens=1500 The scheme is llm://. The host is the providerβs API base URL. The path is the model name. And query parameters handle all the runtime options that usually clutter your code.
Being a bit of a URL nerd, I love this idea
danlevy.net/llm-connecti...
URL shortener for personal links?
pat.ak/gh for GitHub profile
pat.ak/$ for sponsors
pat.ak/bsky for @patak.cat
pat.ak/npmx for your @npmx.dev profile
β¦
Now Iβve got to stay up after midnight for the last achievement π
Trust is a good point. Also tests act as intent documentation.
However it leaves the question of: how can contributors know the quality of their contributions ahead of opening a PR?
Being able to run tests locally is invaluable for good contributions (whether written by humans or agents).
Not sure this moat idea works well for open-contribution models.
An interesting approach for commercial OSS projects:
- Keep the core OSS (free to learn from & vibe-fork)
- Keep the test suite closed source
Quality is the only differentiator when writing code is cheap, and so tests become more valuable than the source itself.
saewitz.com/tests-are-th...
Achievements: 4/13 unlocked Unlocked: Welcome (first visit), I'm back (came back), Explorer (visited every section), Reader (read a blog post to the end). Locked: Night owl (visit between midnight & 5am), audiophile (???)
I love the achievements section on @ntatoud.bsky.social's personal website π
noe.tatoud.com/achievements
I saw this pop in my notifications as they have a test for @nuqs.dev, very interesting π
The only common options between the two is the Options type (shallow, history, limitUrlUpdates etc), which isnβt generic.
What I started working on with the unified API might flip the problem on its head, but it needs a little more work before I can ship a preview that works with both hooks.
I had a similar experience with @nuqs.dev (albeit at a smaller scale), creating abstractions on top of useQueryState(s) can be rough in terms of DX.
It's very fast! β‘
The only snag I hit so far was trying to connect the VSCode extension through a devcontainer, but it might be a skill issue on my part.
The package.json sorting is π€€, this is such a good idea.
I gave both oxfmt & oxlint a try on a new project, looking forward to replacing Prettier in all other projects now (agents go brrrr)
Unfortunately unless they take over the registry API, @npmx.dev (or anyone in the community) can't do much about this.
API response for https://api.npmjs.org/downloads/range/2026-02-16:2026-02-20/vue, showing ~1.4M downloads on the 16th & 17th of February, but zero on the 18th and 19th.
Urgh the @npmjs.bsky.social download stats are down again.. π
Type-Safe URL State Management with @francoisbest.com! The URL is a powerful hidden state manager. Learn to use nuqs for type-safe URL state with teleportation and time travel capabilities.
Watch the talk: https://gitnation.com/contents/type-safe-url-state-management-in-react-with-nuqs
Both, and the quest for a local model that is good enough to serve as a replacement if/when the AI giantsβ bubble bursts. But thatβs more a prepperβs mindset than actually using it for serious work.
Iβve been using Kimi 2.5 via the OpenCode free preview, itβs not the smartest thing at solving problems, but it does a good job for planning & drafting docs that other models can then pick up on.
Briefly tried Qwen 3 coder via ollama locally, but itβs slow and often fails at tool calls.
Normalising taking breaks from time to time is the healthy behaviour I wasnβt expecting from a project that just exploded in popularity.
Maybe this is the takeaway: in an ever-accelerating world, itβs absolutely ok to pause. Itβs necessary.
The updated "other state management libraries", showing nuqs at 5%, between Redux & Zustand.
Thank you!!! @nuqs.dev is on the board now π
Quick nitpicks (sorry to be annoying):
- The URL is nuqs.dev (not nuqs.47ng.com, that's the old domain)
- Redux & Zustand are already part of the main graph for state management libs, why are there small numbers for them here too?
Comparison of fast-xml-parser and htmlparser, showing differences on package size, install size, deps, downloads, last published date, types, module format, license, vulnerabilities.
I just tried the package comparison in @npmx.dev to decide between two packages.
Where has this been all my life?! π
Can someone tell them about icon & text margins though π«
Thanks to the 9 people that mentioned @nuqs.dev in the "Other state management libraries" section π«Ά
A GraphiQL client showing results for the following query: query { surveys { state_of_react { react2025 { state_management { state_management_others { responses { rawData { answers { raw } } } } } } } } }
Ah, I found how to get them via the GraphQL API π