trending

September 14, 2026 β€” The two gaps from last time are closed

Two weeks ago I ended our newsletter in a way that felt slightly uncomfortable: instead of listing what had shipped, it named two things that were missing from our own components. Four lifecycle callbacks that Window did not have, and an ActionBar demo that ListViewTable should have had the day Mantine 9.6 landed.

Both are now done, and the honest version of the story is that writing them down is what did it. A gap sitting in a public newsletter is much harder to keep postponing than a gap sitting in your own head.

The Window one is my favourite because the fix is unglamorous and the reasoning is not. The component already had onPositionChange and onSizeChange but those fire on every frame of a gesture. So anything you want to do exactly once (save a layout, pause an expensive child, record a single undo entry) meant debouncing by hand and guessing when the user had actually stopped dragging. Four new callbacks, onDragStart / onDragEnd / onResizeStart / onResizeEnd, and the guessing goes away. Try it: https://gfazioli.github.io/manti...

πŸ¦„ One callback per frame, when you needed one per gesture

A draggable window had a callback for "the position changed". Sounds like enough. It isn't, and it took someone else's release notes to make me see why.

πŸ¦„ The whole family is now on Mantine 9.6.0

Mantine 9.6.0 came out this morning, and by the afternoon the whole Mantine Extensions family was on it all 26 components plus the Nextra and Fumadocs starter templates.

The reason I chase these on release day isn't tidiness. It's that the gap between "upstream shipped" and "the extension you depend on tracks it" is where trust in a small library actually lives. Peer ranges here stay at >=9.0.0, so none of this forces anything on you bump when you want.

πŸ¦„ 3.4.0 β€” the JSON viewer you can type into

Hey everyone

JsonTree renders a JSON object as a collapsible tree. Until today it was strictly read-only. Now you can click a value and type into it.

πŸ¦„ mantine-json-tree 3.3.0 β€” the bug the feature request found

Hey makers

mantine-json-tree 3.3.0 is out, and the story behind it is better than the changelog.

Someone opened a feature request asking for in-place editing of JSON values. Before writing a line of it, I audited the component to see what an editor would have to stand on. I never got to the feature. The audit found three bugs first, and one of them was serious enough that shipping the feature on top would have been building on sand.

πŸ¦„ 3.0.0 β€” the border can measure something now

Hey everyone

BorderAnimate wraps any element and gives it an animated border. Version 3 adds two things it could not do before: measure a value, and wait for you.

What is new

πŸ¦„ Next.js 16.3 β€” the upgrade we took, and the one we didn't

Hey everyone

Both of our Mantine documentation starters are now on Next.js 16.3 the Nextra one and the Fumadocs one, shipped together today. Dependency-only patches, nothing to migrate.

What actually got better

mantine-audio 1.1.0 β€” captions on a player with no picture

Hey everyone

mantine-audio v1.1.0 is out the Mantine-native audio player with waveform and spectrum visualisers and it can do captions now.

mantine-video 1.2.0 β€” the CC button that could never appear

Hey everyone

New release for mantine-video (v1.2.0) the Mantine-native video player and it comes with a confession.

The unglamorous trick to shipping a whole catalog on release day

Mantine 9.5.0 came out this morning. By the afternoon every Mantine Extensions component was published on it, along with both starter templates and the docs hub.

I wish I could tell you that was skill. It's mostly one boring shell script and one rule I've learned the hard way.

The script does the whole dance per repo: branch, bump within semver, format, typecheck, lint, test, build the package, regenerate the API docs, build the docs site, test again, commit, PR, merge, publish, deploy. I run it in parallel batches and read the reports. The first repo is always done by hand though a pilot because the point of a pilot is to discover the surprise on one repo instead of on all of them.

123
Next