March 2, 2026
Giggles or grumbles?
Show HN: Giggles – A batteries-included React framework for TUIs
Giggles hits the command line — cheers, side‑eye at Ink, and “no tests?!” energy
TLDR: Giggles is a new all‑in‑one React toolkit for terminal apps, promising easy navigation, shortcuts, and built‑in widgets. The crowd’s split: some welcome the convenience, others question Ink’s stability and call out missing tests, while a side thread roasts the sudden fad of saying “batteries‑included,” making this a buzzy but bumpy launch.
“Giggles” just crash‑landed on Hacker News promising an all‑in‑one way to build command‑line apps using React. It’s built on Ink (a toolkit for making terminal UIs) and packs a lot: focus handling, simple screen navigation, a key‑help popup, ready‑made widgets, markdown with code highlighting, and even the ability to hand the screen to tools like Vim and jump back. That’s the pitch — but the comments? Spicy.
One camp loves the idea of a true toolkit, with a top‑voted take saying a good Ink helper has been overdue — while immediately throwing shade: “Ink itself leaves something to be desired,” and pointing at opentui as a slick alternative (though it runs on Bun, a newer JavaScript engine). There’s also a full‑blown vibe check on the buzzword “batteries‑included,” with one user wondering if they woke up in a new timeline where that phrase suddenly became everywhere.
Then came the deal‑breaker: a commenter called out no tests in the repo, declaring it a hard pass and adding that AI can write tests now, so there’s “no excuse.” Cue the split — some hyped by the smooth “just works” promise, others wary of Ink’s quirks and quality control. The name says Giggles, but the thread is half giggles, half side‑eye.
Key Points
- •Giggles is a React-based framework for terminal UIs, built on Ink and inspired by the Charmbracelet ecosystem.
- •It provides built-in focus management, input routing, navigation with focus restoration, and theming.
- •Components own their key handling with natural bubbling, eliminating global input handlers and coordination code.
- •A rich component and hook set (e.g., useFocusScope, FocusTrap, useNavigation) plus a keybinding registry support complex interactions.
- •Terminal utilities (useShellOut, useSpawn, useTerminalSize, useTerminalFocus) enable process control, streaming output, and environment awareness; starter command and docs are provided.