Skip to content

Version Packages - #1375

Merged
tenphi merged 1 commit into
mainfrom
changeset-release/main
Aug 28, 2026
Merged

Version Packages#1375
tenphi merged 1 commit into
mainfrom
changeset-release/main

Conversation

@tenphi

@tenphi tenphi commented Aug 28, 2026

Copy link
Copy Markdown
Member

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@cube-dev/ui-kit@0.173.0

Minor Changes

  • #1374 9adb076f Thanks @tenphi! - Update Tasty to 3.5.0 (from 3.3.1). No changes were needed in the kit; two things matter to apps built on it.

    Injected CSS is garbage-collected again. Once Tasty's render path became hook-free it stopped disposing the classes it injected, so their reference counts never fell back to zero and gc(), cleanup() and tastyDebug.cleanup() all read a non-zero count as "still in use". Nothing was ever evicted, and a long-lived page accumulated injected rules for its entire lifetime — the failure mode is a session that gets slower the longer it stays open, worst in a UI that mounts many short-lived styled subtrees (dialogs, popovers, table cells). What a style is worth keeping is now decided by the DOM: a sweep scans for the classes actually on the page, and only classes that are both absent from it and cold for longer than gc.grace (new, default 10s) beyond gc.capacity are deleted. Nothing is tracked per class while rendering, so collection costs nothing on the render path. touch() and the StyleUsage type are deprecated — both still exported, and touch()'s class-name argument is now ignored — and tastyDebug no longer reports Unused: 0 classes for a page holding hundreds of stale rules.

    Local @keyframes are content-addressed and owned by the classes that use them. A @keyframes block written inside a styles object is emitted as fade-<hash of its steps> rather than fade, resolved identically by the client, the SSR collector and the RSC pass, and folded into the chunk's cache key. Two components that each author animation: fade 1s over different steps therefore get two rules and two classes instead of one definition silently winning — which previously also let the server and the client disagree about which class to use. If your own CSS or a test refers to a local keyframes name literally, it no longer resolves; keyframes()-registered global animations are unaffected and keep their authored names. holdKeyframes() and ownKeyframes() come with it, re-exported from @cube-dev/ui-kit.

    One 3.5.0 fix lands squarely on the kit as it now ships: since Root sets batchInjection: true and Root, Portal and Overlay each open a TastyBatchProvider window, a tastyDebug read taken inside one of those windows used to describe it as empty. Reads that reach into the registry rather than through an injector API now land the pending writes first, so debug output taken mid-commit is no longer blank.

    Also in: styling overhead drops (from 3.4.0) — LRU cache reads are 1.79x faster in their steady-state shape, and a repeat SSR render of one component is 1.8x faster end to end now that tasty() factories memoize their chunk cache keys. A custom property declared with a whitespace-only value (--brand-color: ;) is skipped rather than read as an empty value, so it no longer auto-registers an @property off the strength of its name. Bundle: +1.21 kB on both the full import and a { Button }-only import — matching deltas, which is what a change inside Tasty's always-included core looks like. Both stay inside budget, though All is now down to 1.40 kB of headroom, most of which the kit's own recent growth spent rather than this bump.


Note

Medium Risk
Minor version release pulls in Tasty runtime behavior changes (CSS GC, keyframes naming, deprecations) that can affect long-lived UIs and any code that referenced local keyframe names directly.

Overview
Release @cube-dev/ui-kit@0.173.0 via Changesets: bumps package.json from 0.172.0, copies the Tasty 3.5.0 notes into CHANGELOG.md, and removes the consumed .changeset/tasty-3-5-0.md.

The shipped behavior change is the dependency bump to @tenphi/tasty 3.5.0 (from 3.3.1); the kit itself needed no code changes. Downstream apps get DOM-driven GC for injected CSS (fixes unbounded rule growth on long sessions), content-hashed local @keyframes (possible breakage if CSS/tests reference local animation names literally), deprecated touch() / StyleUsage, re-exported holdKeyframes() / ownKeyframes(), faster LRU/SSR styling, and a small bundle increase (~1.21 kB).

Reviewed by Cursor Bugbot for commit d6cb1c7. Bugbot is set up for automated code reviews on this repo. Configure here.

@vercel

vercel Bot commented Aug 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cube-ui-kit Ready Ready Preview Aug 28, 2026 6:50pm

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

🏋️ Size limit report

Name Size Passed?
All 501.56 KB (0% 🟰) Yes 🎉
Tree shaking (just a Button) 120.13 KB (0% 🟰) Yes 🎉

Compared against main at 9adb076run 33200820105, 2026-08-28T18:46:24Z.

To see which modules changed, download the size-limit-statoscope-report artifact from this run and open report.html.

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Storybook is successfully deployed!

@tenphi
tenphi merged commit a5e2292 into main Aug 28, 2026
16 checks passed
@tenphi
tenphi deleted the changeset-release/main branch August 28, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant