Sign in

Lars

@webpro.nl
2.8K followers 288 following 1.8K posts

Independent developer/architect. JavaScript/TS, DX, automation, tooling, performance & OSS. 🏡 webpro.nl 🦋 webpro.blue 🧑‍💻 github.com/webpro ✂️ knip.dev

PostsRepliesMedia
Lars @webpro.nl · 25/09/2026
sobtember
030
Lars @webpro.nl · 23/09/2026
10 months in at www.summation.com. Working on our AI Analyst, but you know I always bet on great DX & tooling. So it's dang cool we're building AX, in the open. It's like pair programming with a group of models in a shared session. Supports Claude, Codex, Grok, OpenCode & Pi. Try it out! useax.dev
Illustrative exchange of Codex communicating with Claude in an AX session.
000
Lars @webpro.nl · 16/09/2026
Mixed feelings. Still proud! ✌️
Logos of projects and companies using Knip, including Adobe, Anthropic, AWS, Cloudflare, Google, Microsoft, Nvidia, SAP and Shopify.
010
Lars @webpro.nl · 08/09/2026
Just wonderful to get so much help from the community. Look at all those PRs merged. Thanks y'all! 🫶 Bumped all packages (language server, mcp, create-config) and editor extensions.
release-it output showing it lots of fixed issues and merged pull requests are in this release.
060
Lars @webpro.nl · 28/08/2026
I don't know who needs to hear this, but the @npmx.dev dependencies list is simply 🧑‍🍳's 💋 Example: npmx.dev/package/knip
List of dependencies for Knip package, highlighting those that have a new version available.
27310
Lars @webpro.nl · 30/07/2026
☕ git hash humor now?
Screenshot of git log: commit sha is "cafe172" and timestamp is 7:21AM.
1240
Lars @webpro.nl · 24/06/2026
✂️ Playing a bit with a new "cycles" reporter in Knip to show circular dependencies. The data is available in the module graph already anyway 😎 Feel free to take a look and give it a 🌀 if you're interested: github.com/webpro-nl/kn...
Terminal displaying output of running knip with experimental "cycles" reporter. In this case there are two circular dependencies in the prettier repository.
2344
Lars @webpro.nl · 21/04/2026
✂️ Knip v6.6.0 is out A few neat feats and another 8 dependencies removed. Along with v6.5.0 introducing tinyglobby, this tidy graph wouldn't have happened without the @e18e.dev community ❤️ Changelog: github.com/webpro-nl/kn... Knip: knip.dev
dependency graph of knip v6.6.0 showing only 18 dependencies in total (i.e. including transitive dependencies)
1687
Lars @webpro.nl · 03/04/2026
🔖 Raycast Bookmarks Extension Simple text file. Focus on existing tab if already open. Using this for over a year now, so I figured might be useful for someone else as well. → github.com/webpro/rayca... Not in the @raycast.com Store either. Maybe one day..
Screenshot of my personal Raycast bookmarks extension: open bookmark.Screenshot of my personal Raycast bookmarks extension: open bookmark in another installed browser.Screenshot of my personal Raycast bookmarks extension: add bookmark.Screenshot of my personal Raycast bookmarks extension: export bookmarks.
180
Lars @webpro.nl · 21/03/2026
knip can't really just skip files :)
screenshot of a knip run in the typescript repo, after deleting the checker.ts file. resulting in unresolved import and unused exports.
031
Lars @webpro.nl · 09/03/2026
btw love this @bsky.app welcome screen
Bluesky app opening screen, a drawing of happy and playful people being together in small groups in a large green park under a... 🥁... blue sky.
5861
Lars @webpro.nl · 04/03/2026
0190
Lars @webpro.nl · 02/03/2026
If there's interest I could publish this @raycast.com extension to the Store, it's fuzzy search for your github repos to open in your default browser. Simple and effective, using this all the time.
Screenshot of Raycast extension, showing a filtered list of repositories matching a fuzzy "unb" search. The actions panel with a list of sub paths for selected repository is open.
6201
Lars @webpro.nl · 02/03/2026
Triggered by weekly downloads being equal to 3 months ago: www.npmjs.com/package/knip
000
Lars @webpro.nl · 27/02/2026
Post a pic you took, without context, to bring some zen to this space
Image of water, grass, trees and blue sky
050
Lars @webpro.nl · 18/02/2026
no thanks i'm good
4250
Lars @webpro.nl · 16/02/2026
✂️ Going to stop ignoring the ignores Knip will start chasing unused ignore/ignoreFiles patterns more Dreaming if the day you(r code generator) will get what `ignore` is for.. 😅 ..or put differently: how & why knip is different from the linters you're already familiar with knip.dev/guides/confi...
Screenshot of Knip printing configuration hints for unused ignore patterns in knip.json. For instance, because they're already covered by .gitignore entries.
1130
Lars @webpro.nl · 12/02/2026
Current session Resets in 1 hr 53 min
Sad Escobar
371
Lars @webpro.nl · 09/02/2026
If only there was a better way..
Screenshot from someone on Twitter saying:

"I'd love tips on how you all handle code complexity when AI coding the same project for months. I end up spending like 7-80%% of the time just cleaning up and refactoring and deleting things. 

There has to be a better way."
3171
Lars @webpro.nl · 08/02/2026
welp that's a first 😃
Reproduction url:

not needed, just gonna tell you how to fix it
2210
Lars @webpro.nl · 04/02/2026
this is my jam 😍 so hooked on @npmx.dev
Screenshot of a package on npmx.dev, highlighting this text card:

1 deprecated dependency

@types/parse-path@7.1.0

This is a stub types definition. parse-path provides its own type definitions, so you do not need this installed.
2665
Lars @webpro.nl · 30/01/2026
✂️ Pouring myself a nice hot beverage to celebrate >10K stars for Knip and a new "Integrations" page I'm proud of ☕ → knip.dev/reference/in... Btw next release might appeal to some of you.. ❤️ Now please go have an awesome day ☀️
Chart of "star history" for the Knip repo (from 0 to over 10K in 39 months)
3507
Lars @webpro.nl · 20/01/2026
✂️ because why not 😎 (if you don't explicitly import css from js/ts)
Snippet of knip config:

{
	"$schema": "https://unpkg.com/knip@5/schema.json",
	"entry": ["src/router.tsx"],
	"tailwind": { "entry": ["src/styles.css"] },
	"project": ["src/**/*.{js,jsx,ts,tsx,mdx,css}"]
}
070
Lars @webpro.nl · 07/01/2026
This list is nothing short of amazing projects. Last year, Knip would've probably ended up even higher than this year. What other tooling is missing here?
2121
Lars @webpro.nl · 11/12/2025
So... how's your day going? 😂 Anyway, release-it v19.1.0 has improved support for local `npm publish` workflows with 2FA/OTP/whatever npm throws at us 🚀 github.com/release-it/r... (btw `pnpm run` is fine, but single-workspace only and still uses `npm publish`)
Not everything needs an alt text, does it 😅
180
Lars @webpro.nl · 07/12/2025
✂️ You Don't Know Your Exports But Knip does! The goal is to serve power features like this at your disposal in your editor. However, not before there have been more eyes on the preview: github.com/webpro-nl/kn... - please check it out & provide feedback ❤️
Screenshot of `knip --trace-file string.ts` in the terminalScreenshot of `knip --trace-export mapIterator` in the terminal
0201
Lars @webpro.nl · 28/11/2025
🆕 Knip for Editors Trust me, I've poured in A Ton of Love ✂️ This isn't just a plugin to show unused exports. It offers a unique way to view & navigate your code and connect the dots. Feels like there's so much potential here. Excited for you to try out the preview! 🙏 → github.com/webpro-nl/kn...
Screenshot of the Knip extension in VS Code showing the "problem" tab with a list of issues reported by KnipScreenshot of the Knip extension in VS Code showing the "imports" and "exports" tree views for navigation, as well as a hover window above an export showing import and usage locations
28013
Lars @webpro.nl · 25/11/2025
✂️ superposition 🤪
Ha! That's meta as hell — developing Knip while using Knip's own VS Code extension to help you develop it. 🔄

The ultimate dogfooding setup. If you find issues with the extension while working on the codebase, you can fix them in real-time since it's symlinked.
080
Lars @webpro.nl · 21/11/2025
gm bluesky going into the season like
150
Lars @webpro.nl · 18/11/2025
"No where in here does it say 'Thou shall not fart.'"
010
Lars @webpro.nl · 18/11/2025
We've talked about this before: `gh pr co` is nice but doesn't add the remote. So here's a little script to check out someone's PR and push your changes to it: ``` gh-pr-co <pr-id> ...git wild & commit... gh push pr<pr-id> ``` Or is there a better way? Gist: gist.github.com/webpro/7d49e...
Screenshot of terminal to demonstrate the commands from the post:

gh-pr-co 1
echo "make a change" >> README.md
git commit -am "fixes"
git push pr1 --no-follow-tags
220
Lars @webpro.nl · 16/11/2025
You can't make this up. Like, literally.
Photo of a newspaper article. The last, highlighted paragraph reads:

"If you want, I can also create an even snappier "front-page style" version with punchy one-line stats and a bold, info-graphic-ready layout — perfect for maximum reader impact. Do you want me to do that next?"
1321950
Lars @webpro.nl · 14/11/2025
Error severity is taken from Knip config. There is a setting to show diagnostics for the active file only:
Show Active File Only
110
Lars @webpro.nl · 14/11/2025
✂️ Sneak peek 👀 There's just too much to unpack here, just let me cook for a bit please! Hopefully you'll enjoy using it as much as I do building it rn 😃
Like I said, too much to unpack! Rest assured it will happen.
4441
Lars @webpro.nl · 14/11/2025
Interestingly, Array.from(set) with mapper arg is twice as slow (compared to spread/Array.from().map) in Node. In Bun it's faster. Passing in an [] is much faster than a set (but each item still has to be copied over). Here, Node is faster. Only in rare cases should you worry about this, I'd say.
const largeSet = new Set();

[...largeSet].map(mapFn);

Array.from(largeSet).map(mapFn);

Array.from(largeSet, mapFn);Benchmark results showing that in Node.js v24.11.1, "Array.from with mapper argument" is twice as slow compared to both "spread + map" and "Array.from + map".

In Bun v1.3.2, the results aren't as varying, while Array.from with mapper argument is the fastest.

Set size is 1_000_000

Overall, Bun is slightly faster than Node.Benchmark results showing array spread and Array.from with a large array is roughly 30% faster than in Bun's array spread.

Array.from in Bun is 5 times slower than spread.

Array length is 1_000_000
0100
Lars @webpro.nl · 11/11/2025
Changelog: github.com/webpro-nl/kn... 🎉 This release in celebration of 4M downloads/week 🙏
Chart showing 4142496 weekly dowmloads
3130
Lars @webpro.nl · 09/11/2025
🇧🇷 🏎️
Hoping for rain
150
Lars @webpro.nl · 09/11/2025
When authoring MD/X, so many things are powered by the unified ecosystem. In this tiny example: → Link path completion → Convert regular links to reference links → Sort & dedupe link definitions ...inside directives and JSX. Go nuts 😃 Thank you @wooorm.com & @remcohaszing.nl CS for empowering us!
1101
Lars @webpro.nl · 08/11/2025
Real-world example output:
020
Lars @webpro.nl · 02/11/2025
knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip knip
2261
Lars @webpro.nl · 24/10/2025
✂️ This is "Find All References" on steroi.. hover Knip 🤝 TS
Screenshot of a Knip plugin idea: showing basically the same as you would get for a manual "Find All References", but directly on hover of an exported value or type
1272
Lars @webpro.nl · 23/10/2025
✂️ A picture might capture it better A Knip plugin could have links to the import locations on hover of an export Overview scrolls along in the sidebar to jump back & forth Made the vid in the typescript repo as it's not small and has lots of re-exports, good exercise & perf test
Screenshot with ideas for Knip plugin that shows links to import locations of an export in the code, and a sidebar panel with all imports and exports
2140
Lars @webpro.nl · 22/10/2025
Or the same in the panel (x = unused)
000
Lars @webpro.nl · 22/10/2025
Not sure if a plugin can tell the built-in file explorer to do that with files Currently there's the regular red squigglies:
100
Lars @webpro.nl · 22/10/2025
Spot issues and fix them right away 🔧 So many ways to extend this and improve your DX ❤️
140
Lars @webpro.nl · 22/10/2025
✂️ 👀 Playing a bit wit import-export hopping, through re-exports & workspaces. Powered by Knip & new language server. Would you use this? What else do you think should it do? Another raw vid with ideas in first comment 👇
6122
Lars @webpro.nl · 16/10/2025
✂️ Knip v5.66.0 is out Comes with a neat little feat: ignoreIssues (don't try this at home!) → knip.dev/reference/co... → knip.dev
ignoreIssues: Ignore specific issue types for specific file patterns. Keys are glob patterns and values are arrays of issue types to ignore for matching files. This allows ignoring specific issues (like unused exports) in generated files while still reporting other issues in those same files.
170
Lars @webpro.nl · 04/10/2025
✂️ Knip has the machinery in place to nail all of this the solution is usually to improve or add a plugin (or a tiny bit of user config if not following conventions) 💯 so please file issues or open pull requests and have knip nail more cases for y'all from: johnjames.blog/posts/cleani...
excerpt from the linked article, it reads:

what knip nailed, and where it didn’t

Good at common React and server app entry points, and lots of config conventions. Not great when usage is indirect or only happens in scripts or CI. That’s fine. Humans still have jobs.
0160
Lars @webpro.nl · 15/09/2025
Nice! Just had to dig up the old logo, could clutter up a tee nicely 😎
Old Knip "logo": an orange cow with scissors, Van Gogh style
030
Lars @webpro.nl · 28/08/2025
is it that time of the year already?
final part of npm weekly downloads chart, crashing down as numbers for last few days haven't been accumulated
020