← BACK TO WEEKLY

shadcn Goes Meta, Mantine Goes Headless

shadcn/ui 4.5.0 & 4.6.0 — The Preset Wars Begin

Two releases this week and the trajectory is becoming clear: shadcn is no longer just a copy-paste component CLI. It's becoming a design system distribution layer.

4.5.0 (April 25) adds --pointer to init, which is a small quality-of-life win — buttons get cursor: pointer baked in automatically instead of requiring manual override or a CSS override. Underwhelming in isolation, but it signals a philosophy: shadcn is now in the business of opinionated defaults, not just components.

4.6.0 (April 28) is the bigger signal. The new preset commands let you define and distribute custom component presets — think of it as a theme + component bundle that can be published to npm and consumed via npx shadcn@latest add. The --preset flag turns the CLI into a distribution mechanism for locked design systems. This is the feature the enterprise shadcn users have been asking for: the ability to ship a constrained component set to a team without worrying about them mixing in raw shadcn components.

The implication: shadcn is positioning itself against component library vendors like MUI, Chakra, and Mantine. Instead of a library you import, it's a distribution mechanism with a preset ecosystem. The question is whether the preset authoring experience is good enough for non-CLI-power-users to adopt it.

GitHub
Release shadcn@4.6.0 · shadcn-ui/ui
Minor Changes #10530 ea6086cbcc33b359bb876651374e26f643ea85b1 Thanks @shadcn! - add shadcn preset commands #10516 c236d0c009b4ff87c77a04c618d2b348cac7cdcb Thanks @shadcn! - add preset info to n...

Mantine 9.1.0 — Style Deduplication Goes to 11

Mantine shipped two releases this week (9.1.0 and 9.1.1) and the headline feature is deduplicateInlineStyles on MantineProvider.

The pitch: when you render a list of components that share the same responsive style props, React 19 style tag deduplication kicks in and only one <style /> tag gets hoisted to <head /> instead of each component injecting its own. This is the kind of optimization that matters at scale — large data tables, virtualized lists, component libraries built on top of Mantine. It's not glamorous but it ships.

The second highlight is the new use-mask hook, which attaches real-time input masking to any <input> element via a ref callback. Built-in token patterns, custom masks, character transforms, optional segments, regex array format. This is solving a problem that most developers solve with a third-party library or a messy input handler.

9.1.1 is a pure patch release with fixes across Combobox, ScrollArea, Tree (now with drag-and-drop handle and lock support), and several hooks.

GitHub
Release 9.1.1 · mantinedev/mantine
What's Changed [@mantine/spotlight] Fix error thrown when listId is empty (#8863) [@mantine/schedule] Fix onEventClick not being passed down to MoreEvents in DayView and MonthView components (#886...

OxC v0.128.0 — The Rust-Powered JS Toolchain Accelerates

The OxC project (the Rust-based JavaScript tooling suite behind Oxlint and Oxfmt) dropped a significant release this week with crates v0.128.0 and apps v1.62.0.

On the minifier side: constant spread elements are now inlined directly into arrays, which eliminates intermediate allocations. The transformer now uses SPAN for synthesized helper calls to prevent comment misattribution — a subtle but important correctness fix for source maps. Dunqing's work on preserving raw CR in template literals is the kind of edge case that breaks production builds silently.

The allocator improvements are the most interesting read. overlookmotel has been on a sustained campaign to eliminate every unnecessary branch and check from the hot path. This release alone has 8 allocator-specific commits ranging from NonNull::offset_from_unsigned usage to cold-path code movement to unchecked size round-up where overflow is provably impossible. These are the optimizations that make the difference between a linter that feels fast and one that doesn't.

The linter side continues its Vue expansion with rules for deprecated events API and data object declarations. The Jest→Vitest migration continues: 11 more rules split from their Jest-specific ancestors into shared + Vitest-specific variants.

Oxc is quietly becoming the most credible Rust-powered replacement for Babel + ESLint in the JS ecosystem. Watch this closely if you're evaluating build toolchain performance.

GitHub
Release oxc crates_v0.128.0 · oxc-project/oxc
💥 BREAKING CHANGES 502e804 ast: [BREAKING] Reduce size of TSTypePredicateName (#21711) (overlookmotel) 5651539 ast: [BREAKING] Reduce size of JSXExpression (#21710) (overlookmotel) c44e280 ast: [B...

Chakra UI 3.35.0 — Ark Upgrade, Combobox Improvements

Chakra's release cadence remains steady. v3.35.0 this week brings a bump to @ark-ui/react v5.36.0, which gives Chakra users the new DateInput component (keyboard-driven date entry), improved ColorPicker format handling, and Popover focus control via finalFocusEl and restoreFocus props.

The Ark bump also brings the Field.Item export fix — the component was previously only accessible via the Field.Item namespace, now exported at the top level. Small but resolves the import awkwardness.

Combobox voiceover support on Apple devices via live region is the accessibility highlight.

GitHub
Release @chakra-ui/react@3.35.0 · chakra-ui/chakra-ui
Minor Changes 1b1f545 Thanks @segunadebayo! - Pagination: Allow format prop in Pagination.PageText to accept a function for i18n support. <Pagination.PageText format={({ page, totalPages }) => ...

Next.js v16.3.0-canary — Turbopack Stability Push

This week's canary builds on Next.js are almost entirely stability and performance work:

  • prefetchInlining enabled by default (April 16 backport)
  • Devtools now preserve full code frames in browser overlay
  • Deprecated moduleResolution: "node" replaced with modern resolution
  • Turbopack: reduced EffectStateStorage memory via u128 content hashes
  • Turbopack: optimized SelfTimeTree performance and memory, fixed range query boundaries
  • Fixed Google Fonts + Turbopack on Windows ARM64

The devtools code frame preservation is the one that matters for design engineers — production CSS/JSX errors in your browser overlay are now actually readable.

GitHub
Release v16.3.0-canary.7 · vercel/next.js
Misc Changes [test] Preserve Playwright traces on every failure: #93366 [ci] Add support for private preview builds: #93375 Fix deploy tests crashing under AI coding assistants: #93394 Remove left...

Tailwind v4.2.3 & v4.2.4 — Canonicalization Lands

Two patch releases this week with the headline being a wave of canonicalization improvements. The Tailwind team is systematically collapsing directional variants into their shorthand equivalents: border-{t,b}-*border-y-*, scroll-m{t,b}-*scroll-my-*, overflow-{x,y}-*overflow-*. This means fewer generated CSS classes, smaller stylesheets, and more consistent class names across projects.

Also fixed: placeholder color now reads from --placeholder-color instead of --background-color — a subtle but correctness-affecting bug that would have surprised anyone using a custom color scheme.

v4.2.4 is a one-line fix for Vite alias resolution in @tailwindcss/vite.

GitHub
Release v4.2.4 · tailwindlabs/tailwindcss
Fixed Ensure imports in @import and @plugin still resolve correctly when using Vite aliases in @tailwindcss/vite (#19947)

Resources

oxc-project/oxc — Rust-powered JavaScript linter, formatter, minifier, and transformer. The allocator performance work in this release is a masterclass in writing allocation code that doesn't branch on the hot path.

GitHub
GitHub - oxc-project/oxc: ⚓ A collection of high-performance JavaScript tools.
⚓ A collection of high-performance JavaScript tools. - oxc-project/oxc

ark-ui/ark — Headless, accessible component library powering Chakra UI. v5.36.2 this week fixes RSC compatibility issues and adds Field.Item export. The DateInput component is worth a look if you need keyboard-driven date entry without a full UI library.

GitHub
GitHub - chakra-ui/ark: Unstyled, accessible UI components for your design System. Works in React, Vue, Solid, and Svelte.
Unstyled, accessible UI components for your design System. Works in React, Vue, Solid, and Svelte. - chakra-ui/ark

Glyph Protocol — Terminal glyph protocol that lets applications register custom glyphs at runtime via APC. No more Nerd Font megabyte bundles; your app ships the outline and reuses a shared codepoint. Smart infrastructure play.

GitHub
Build software better, together
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.

More Resources

  • mantine use-mask hook — Real-time input masking via ref callback with built-in and custom token support. useMask({ mask: '(999) 999-9999' }) and you're done. https://mantine.dev/hooks/use-mask
  • shadcn preset commandsnpx shadcn init --preset and npx shadcn add --preset now let you distribute locked component sets as npm packages. The design system distribution model is changing. https://github.com/shadcn-ui/ui/pull/10530
  • deduplicateInlineStyles — React 19 style deduplication prop on MantineProvider for hoisting shared responsive style tags to <head />. Significant for large lists. https://mantine.dev/theming/mantine-provider

Cases

Worldmonitor — Real-time global intelligence dashboard. Bloomberg-terminal-level information architecture, open sourced. The kind of data visualization that used to require six figures and a terminal lease.

GitHub
GitHub - koala73/worldmonitor: Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface - koala73/worldmonitor

Honker — Durable queues, streams, pub/sub, and cron scheduler in a single SQLite file. Not a design tool, but the kind of infrastructure that enables local-first application architectures that design engineers care about.

Honker
Honker
Durable queues, streams, pub/sub, and time-trigger scheduling on SQLite. One file, zero servers.

Cursor Camp — Interactive cursor sharing for remote pairing sessions. No install required, runs in the browser. Showed up on HN front page this week with an interesting UX for collaborative terminal work.

neal.fun
Just a moment...
https://neal.fun/cursor-camp/