sukka's Avatar

sukka

@skk.moe

zh-CN & en-US / Gen Z / http://git.io/sukkaw / http://skk.moe / https://blog.skk.moe / Vibe Code Cleanup Specialist / Senior FE dev / Contributing to OSS and creating PRs for fun / All opinions are my own, literally all of them.

538
Followers
51
Following
39
Posts
30.07.2023
Joined
Posts Following

Latest posts by sukka @skk.moe

Post image

Here is why you SHOULD NOT use Vercel's `ai-element` library in production AT ALL: it is violating basically every rule of React.

05.02.2026 04:07 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

It really shocks me that @vercel.com 's `ai-elements` library violates so many Rules of React:

- Read and write ref during render.
- Calling setState directly inside useEffect.

And this is a company who claims they write the best React.

04.02.2026 09:33 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Here is the speed you get from the $299 priced #UniFi flagship Wi-Fi AP: only 324 Mbps down, while 1012 Mbps up.

Here is the speed you get from the $299 priced #UniFi flagship Wi-Fi AP: only 324 Mbps down, while 1012 Mbps up.

The UniFi support engineer agrees that my test methods are legit, but can't give any help on improving the Wireless performance.

The UniFi support engineer agrees that my test methods are legit, but can't give any help on improving the Wireless performance.

Here is what @ubiquiti.bsky.social $299 #UniFi Flagship Wireless AP can get you: only 324 Mbps down and 1012 Mbps up. Their support engineer can't give any help. DO NOT BUY anything from #BugFi, they can't even beat $20 Wireless Routers. They really do help you #RethinkingIT.

28.01.2026 19:23 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Magic Portal | foxact - Made by Sukka React Hooks/Utils done right. For browser, SSR, and React Server Components. Made by Sukka (https://skk.moe)

You may already know that, in React, updating what the parent (e.g. global layout) should render from child components (e.g. page) is bad, because it breaks one-way data flow.

But do you know React Portal is the rescue? There is a ready-to-use utility now: foxact.skk.moe/magic-portal/

06.01.2026 17:39 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
164193 โ€“ Implement requestIdleCallback

Why is Safari the modern IE? This is discovered by @rschristian.dev , and here I am quoting again:

> for us to continue to develop WebKit we now need to use Firefox or another non-WebKit browser to land pull requests.

bugs.webkit.org/show_bug.cgi...

BTW, `requestIdleCallback` is still missing.

28.10.2025 20:16 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
# The Frustration of Developing a Plugin for Next.js

Developing a Next.js plugin can be and will be an absolute nightmare, thanks to Vercel's complex and opaque nature of the framework's internals, unorthodox conventions, and lack of documentation/communication/explanation of the framework's convoluted infrastructures, leaving developers like me to reverse-engineer spaghetti code without any support.

As a former Next.js enthusiast, top 47# contributor of Next.js with over 80 merged PRs, was featured in Next.js Conf 2024 as a distinguished contributor, was invited to Vercel's `#external-next-contributor` Slack channel, I still got zero useful responses from the Next.js team or Vercel when I desperately sought answers.

Now, imagine the hell for average users who aren't insiders: they could be doomed to endless frustration, hacks, and broken features. Vercel's opacity and silence have crushed my passion for Next.js, turning what should be an empowering open-source tool into a betrayal of its community, especially those of us who poured our hearts into it. This isn't just about complexityโ€”it's neglect that sabotages innovation and leaves contributors feeling utterly abandoned.

# The Frustration of Developing a Plugin for Next.js Developing a Next.js plugin can be and will be an absolute nightmare, thanks to Vercel's complex and opaque nature of the framework's internals, unorthodox conventions, and lack of documentation/communication/explanation of the framework's convoluted infrastructures, leaving developers like me to reverse-engineer spaghetti code without any support. As a former Next.js enthusiast, top 47# contributor of Next.js with over 80 merged PRs, was featured in Next.js Conf 2024 as a distinguished contributor, was invited to Vercel's `#external-next-contributor` Slack channel, I still got zero useful responses from the Next.js team or Vercel when I desperately sought answers. Now, imagine the hell for average users who aren't insiders: they could be doomed to endless frustration, hacks, and broken features. Vercel's opacity and silence have crushed my passion for Next.js, turning what should be an empowering open-source tool into a betrayal of its community, especially those of us who poured our hearts into it. This isn't just about complexityโ€”it's neglect that sabotages innovation and leaves contributors feeling utterly abandoned.

I have spent the past months developing a plugin for @nextjs.org and App Router. It is an absolute nightmare.

The image contains all the bullet points. But if you are interested, here is the link to the article containing the full story behind the struggle: github.com/SukkaW/style...

12.10.2025 17:51 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

That's only 3 weeks. Look at my dead simple PR toward @nextjs.org , took them 3 months to merge: github.com/vercel/next....

10.10.2025 17:58 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
perf(fnv1a): adopt a way faster fnv1a impl (up to 110% faster on large input) by SukkaW ยท Pull Request #152 ยท fastify/fastify-etag Checklist run npm run test && npm run benchmark --if-present tests and/or benchmarks are included documentation is changed or added commit message and code follows the Developer's ...

#TodayMyPullRequest

Make @fastify.dev's etag 70% to 110% faster on medium (2 KiB) to large (2 MiB) inputs:

github.com/fastify/fast...

08.10.2025 19:05 ๐Ÿ‘ 1 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

As I said, @pypi.org already supports setting up a trusted publisher while creating a new package. It demonstrates it is doable.

The real problem is why @npmjs.bsky.social / @github.com not implementing the same.

03.10.2025 09:24 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Why is @github.com and @npmjs.bsky.social 's the trusted publisher feature stupid? The simplest thing: how do I set up the trusted publisher if I am creating a brand new package?

In the meantime, @pypi.org allows you to set up the trusted publisher before/while creating a new package.

27.09.2025 20:00 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Announcing v2.0.0 | ESLint React A major release embracing modern JavaScript standards with powerful new rules and DX improvements

Announcing eslint-react.xyz v2.0.0: Now ESM-Only
eslint-react.xyz/docs/release...

27.09.2025 19:02 ๐Ÿ‘ 16 ๐Ÿ” 2 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Every element on the Wi-Fi setting page of macOS 26 is misaligned.

Every element on the Wi-Fi setting page of macOS 26 is misaligned.

I already know macOS 26's new design is suck, I didn't know it would end up this kind of suck.

16.09.2025 14:16 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

But what happens if you opt in for a package because of its needs, and then it gets compromised after you trusted it?

07.09.2025 13:35 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Once again, my proposed github.com/pnpm/pnpm/is... would protect the community against such attacks. Yet @pnpm.io refuses to implement this.

28.08.2025 18:28 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Multi-threaded linting creates extra challenges (and overheads) for many popular ESLint plugins: typescript-eslint, eslint-plugin-import(-x), etc.

See github.com/un-ts/eslint... as an example.

16.08.2025 15:29 ๐Ÿ‘ 5 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Tracking Issue: Concurrent Downloads ยท Issue #18278 ยท Homebrew/brew Concurrent Downloads Implement MVP of concurrent downloads for brew fetch. Implemented in #17756. Improve output logic. For simplicity, the output currently only uses at most terminal height - 1 li...

#TIL It finally happens! @MacHomebrew's Parallel downloading feature has already landed and can be enabled right now with the environment variable "HOMEBREW_DOWNLOAD_CONCURRENCY={int}". This will be enabled by default in the future.

See GitHub Issue github.com/Homebrew/bre... for more.

16.08.2025 13:14 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

ๅœจ Fediverse ๅˆ†่บซ่ฟ่กŒ็บฆไธ‰ๅนดๅŠๅŽ๏ผŒๆˆ‘ๅฐๅœจ Bluesky ไธŠ็š„ๅˆ†่บซๅผ€ๅง‹ๆต‹่ฏ•่ฟ่กŒใ€‚ๅ„ไฝ Bluesky ็คพไบคๅนณๅฐ็š„็”จๆˆทๅฐ†ๅฏไปฅๅœจๅนณๅฐไธŠ็›ดๆŽฅ่ฎข้˜…ๆœฌๅฐๆ›ดๆ–ฐใ€‚

ๆˆ‘ไปฌ็š„ๅธๅทๆ˜ฏ๏ผš @thecascading.bsky.social
ๆฌข่ฟŽๅ้ฆˆ้‡ๅˆฐ็š„้—ฎ้ข˜ๅŠๅฏน้ข‘้“็š„ๅปบ่ฎฎใ€‚

#today

08.08.2025 15:20 ๐Ÿ‘ 4 ๐Ÿ” 4 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1

fxtwitter.com/tencentcloud...

15.03.2025 15:49 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

The notorious copypastor Tencent Cloud grabs all articles from my blog and posts them on their website without my permission, yet they want me to promote their tools in my blog.

Go to hell, Tencent and Tencent Cloud.

13.03.2025 07:32 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 1
Preview
ไธบ Proxmox VE ๅฎšๅˆถ Debian Cloud ็ณป็ปŸ้•œๅƒไธŽๅˆ›ๅปบ่™šๆ‹Ÿๆœบๆจกๆฟ | Sukka's Blog ๆœ€่ฟ‘ๅœจใ€Œๅฎถ้‡Œไบ‘ใ€้‡Œๆžไบ†ไธช Proxmox VE 8.3๏ผŒๆ‰“็ฎ—ๅœจไธŠ้ข่ท‘ๅ‡ ไธช VM ็Žฉ็Žฉใ€‚่€Œไฝœไธบไธ€ๅๅฟ ๅฎž็š„ Debian ็ณป็”จๆˆท ๆˆ‘ๆ‰ไธไผšๅ‘Š่ฏ‰ไฝ ๆˆ‘ๆ—ฅ็”จ็š„ Linux ็ณป็ปŸๆ˜ฏๆญ่ฝฝ GNOME ็š„ Fedora ็š„๏ผŒๆ‰€ๆœ‰็š„ VM ่‡ช็„ถ่ฆ็”จ Debian ไบ†ใ€‚ๅ€Ÿ็€ๅˆถไฝœ่‡ชๅทฑ็š„ๅฎšๅˆถๅŒ– Debian Cloud Image ็š„ๆœบไผš๏ผŒ้กบไพฟๅ†™ไธ€็ฏ‡ๆ–‡็ซ ๅ‡บๆฅๅ’Œๅคงๅฎถๅˆ†ไบซไธ€ไธ‹๏ผŒๅนถ็บ ๆญฃใ€่พŸ่ฐฃไธ€ไธ‹็ฝ‘ไธŠ็Žฐๆœ‰็š„ๆœ‰ๅ…ณๆ•™็จ‹็š„ไธ€ไบ›้”™่ฏฏใ€‚

[zh-Hand] blog.skk.moe/post/proxmox...

22.02.2025 13:40 ๐Ÿ‘ 4 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1
Post image

Now, who needs to be sacked for the cost efficiency of all~

14.02.2025 10:18 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

It still shocks me that no one has #RIIR the homebrew yet. The slowest package/dependency manager/tool these days (no parallel casks downloading, no multi-threads downloading, and no parallel attestation verification).

13.02.2025 15:19 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

So @pnpm.io's onlyBuiltDependencies feature is flawed by default: you don't re-approve to update dependencies.

Let's say you use @rspack.dev and add "rspack/core" to the list, what happens if rspack is compromised and releases a malicious version? It is still "trusted" by pnpm.

08.02.2025 09:47 ๐Ÿ‘ 6 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
Oracle justified its JavaScript trademark with Node.jsโ€”now it wants that ignored Oracle filed a motion to dismiss in response to Denoโ€™s petition to cancel its โ€œJavaScriptโ€ trademark. But instead of addressing the real issueโ€”that JavaScript is an open standard with multiple indepen...

Oracle justified its JavaScript trademark by claiming Node.js โ€” now it wants that ignored
#FreeJavaScript

deno.com/blog/deno-v-...

04.02.2025 22:14 ๐Ÿ‘ 311 ๐Ÿ” 123 ๐Ÿ’ฌ 16 ๐Ÿ“Œ 9
Speeding up spread elements ยท V8 V8 v7.2 / significantly speeds up Array.from(array) as well as [...spread] for arrays, strings, sets, and maps.

v8.dev/blog/spread-...
I am pretty sure this is "against" spec anyway.

24.01.2025 05:23 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

Others' vacation plans: traveling, eating, meeting friends...
My vacation plan:

22.01.2025 04:42 ๐Ÿ‘ 6 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I don't care about ops or percent. As long as destructure is consistently slower, it is slower.

It makes sense why array index access is way faster: destructure requires extra overhead from the iterator protocol, while array index access doesn't.

22.01.2025 01:17 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

ๆ‹ทๆ‰“ v8 ๆฒก็”จ๏ผŒ่€Œ SpiderMonkey ๆ—ฉๅฐฑๆ‘†็ƒ‚ไบ†ใ€‚ๆ‰€ไปฅๅช่ƒฝๆ‹ทๆ‰“ React Compiler ไบ†ใ€‚

21.01.2025 13:08 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Optimization `useState` and `useReducer` returned tuple ยท reactwg react-compiler ยท Discussion #54 v8 (and many other javascript runtimes) never optimizes the array destructure access as fast as array index access. So code block A is always faster than code block B: // A const tuple = useState('...

It still shocks me that JavaScript runtime nowadays still does not optimize array destructure access.

This means `let [v, setV] = useState('')` is way slower than `let t = useState['']; let b = t[0]; let setV = t[1]`).

So it's React Compiler's turn: github.com/reactwg/reac...

21.01.2025 10:09 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0
Preview
[ubuntu-24.04-arm] Tons of EACCES ยท Issue #29 ยท actions/partner-runner-images There is a ton of EACCES when CI is attempting to run a command. The shell appears to be searching in $PATH but failed to access many files. Here is some example logs: actions/checkout@v4 Unexpecte...

I must admit, GitHub Actions's new hosted arm64 runner (currently in public beta) is FAST, about 100% faster than the amd64 ones. Though there are some issues, one of them is EACCES: github.com/actions/part...

17.01.2025 13:34 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0