Wynter
Tech Report Every Monday

Tailwind joins Shopify, and Rails' schema cache gets 22x faster

By Wynter Jones 4 mins read

In short

Tailwind CSS finds a corporate home, shadcn deletes its own utils.ts boilerplate, Rails ships a faster schema cache, and CSS gets a native replacement for the nth-child stagger hack.

Tailwind CSS is joining Shopify

Adam Wathan announced it in five words on X: "Tailwind is joining Shopify." The Tailwind Labs blog post frames it as finding "a stable long-term home" for a project that millions of sites depend on but that a small independent team was funding largely through Tailwind UI and Tailwind Plus sales. Shopify has form here — it already employs maintainers on other widely-used open source projects — and the framing from both sides is that development continues as-is, just with a bigger balance sheet behind it. The announcement cleared a million views in a day, and the internet spent the rest of the week doing the thing it always does after an acquisition: relitigating whether "nothing changes" ever actually means nothing changes.

Why it matters: Tailwind isn't a niche dependency anymore — it's default-on in nearly every new frontend scaffold, including shadcn/ui. A funding model that depends on selling templates to indie developers was never going to scale with that footprint. This is Tailwind trading founder-led pace for institutional runway.

shadcn/ui deletes its own utils.ts boilerplate

Every shadcn project has started the same way since 2023: five lines in lib/utils.ts importing clsx, importing tailwind-merge, wrapping one in the other, exporting it as cn. shadcn's September changelog retires that ritual — every registry component now imports cn straight from a new standalone cn package instead. Existing projects aren't broken; your hand-rolled lib/utils.ts keeps working, and new components install cn alongside it. There's a CLI migration for teams that want to drop clsx and tailwind-merge as direct dependencies entirely and consolidate on the one package.

It's a small change, but it's consistent with the direction shadcn has been moving all year — July's changelog made Base UI the default component library over Radix, and this keeps trimming the code every new project used to have to paste in by hand.

Rails' schema cache learns JSON, and gets 22x faster

This week's This Week in Rails roundup is a list of things that should have already worked, quietly fixed: a JSON-based schema cache that loads up to 22x faster on large databases, PostgreSQL identifier resolution that now reliably points at one table instead of guessing across schemas, Active Storage that no longer refuses to boot when libvips is missing or an old version, and Live streaming responses that finally carry the same default headers as everything else.

None of these are headline features — there's no new DSL, no new generator. They're the kind of fixes that only show up as an entry in a changelog and a slightly shorter deploy log, which is exactly the profile of most useful Rails work these days.

CSS ships sibling-index() and sibling-count()

Chrome and Edge (since 138) and Safari (since 26.2) now support two new CSS functions that return real numbers: sibling-index() gives an element's 1-based position among its siblings, sibling-count() gives the total. Both work inside calc(), so staggered animation delays, grid track counts, and index-based color shifts that used to require a Sass loop, an nth-child wall, or a DOM-walking JS script now collapse into one line:

.card {
  animation-delay: calc(sibling-index() * 100ms);
}

Firefox has the functions behind a flag as a formal Interop 2026 commitment, so it's a matter of when, not if, on baseline. The recommended fallback until then is a @supports (top: calc(sibling-index() * 1px)) check paired with a script that sets --sibling-index custom properties only where the native function isn't available.

Why it matters: this is the same shape as :has() and container queries — CSS quietly absorbing a category of problem that used to require JavaScript just to compute a number the browser already knew.

Worth a glance

  • TypeScript 7.0 is now GA — the Go-native compiler port Microsoft has been building for over a year, roughly 10x faster type-checking on large codebases. React and Node tooling have already moved; Vue, Svelte, Astro and Angular are waiting on 7.1 for full compatibility.
  • Go 1.26 shipped in February and is still working through the ecosystem — Green Tea GC is now the default collector, cgo overhead is down about 30%, and go fix was rebuilt from scratch with over 20 new automated code modernizers.

Past editions of the Tech Report

  1. Tailwind joins Shopify, and shadcn deletes one of its own files
  2. Four changelogs, and the theme is stop maintaining this yourself
  3. Half of this week's new tooling exists to check code an agent wrote