Skip to content

Conversation

segunadebayo
Copy link
Member

@segunadebayo segunadebayo commented Feb 11, 2025

Closes #2226
Closes #2214
Closes #2179
Closes #2238
Closes #2223
Closes #2235
Closes #2252
Closes #2213

📝 Description

Over the years, we've nailed down the correct Zag APIs that work across frameworks. We're shifting focus to runtime and rendering performance to make it blazing fast.

Based on preliminary measurements of testing 10k instances of the same components.

The results show roughly 1.5x - 4x performance improvements across components. Here are the results

Avatar

Before

{phase: 'mount', duration: 1007.3000000119209}
{phase: 'update', duration: 890.4000000357628}

After

{phase: 'mount', duration: 736.9999999403954}
{phase: 'update', duration: 1.899999976158142}

Accordion

Before

{phase: 'mount', duration: 2778.4999997913837}
{phase: 'update', duration: 2.3000000715255737}

After

{phase: 'mount', duration: 1079.0000001490116}

Collapsible

Before

{phase: 'mount', duration: 834.4000000357628}
{phase: 'update', duration: 2.1999999284744263}

After

{phase: 'mount', duration: 290.3000001013279}

Dialog

Before

{phase: 'mount', duration: 688.9000000357628}
{phase: 'update', duration: 2.0000000298023224}

After

{phase: 'mount', duration: 135.50000008940697}

Editable

Before

{phase: 'mount', duration: 1679.500000089407}
{phase: 'update', duration: 2.0000000298023224}

After

{phase: 'mount', duration: 737.5999999940395}

Tooltip

Before

{phase: 'mount', duration: 797.7999999821186}
{phase: 'update', duration: 2.5999999940395355}

After

{phase: 'mount', duration: 139.9000000357628}

Presence

Before

{ phase: "mount", duration: 1414 }
{ phase: "update", duration: 0 }

After

{ phase: "mount", duration: 502 }

Tabs

Before

{ phase: "mount", duration: 4120 }
{ phase: "update", duration: 2014 }

After

{ phase: "mount", duration: 3880 }
{ phase: "nested-update", duration: 3179 }

💣 Is this a breaking change (Yes/No):

Just a slight change in syntax. Nothing major

Copy link

vercel bot commented Feb 11, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
zag-nextjs ✅ Ready (Inspect) Visit Preview Feb 22, 2025 6:00pm
zag-solid ✅ Ready (Inspect) Visit Preview Feb 22, 2025 6:00pm
zag-svelte ✅ Ready (Inspect) Visit Preview Feb 22, 2025 6:00pm
zag-vue ✅ Ready (Inspect) Visit Preview Feb 22, 2025 6:00pm
zag-website ✅ Ready (Inspect) Visit Preview Feb 22, 2025 6:00pm

Copy link

changeset-bot bot commented Feb 11, 2025

🦋 Changeset detected

Latest commit: fe5964b

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 73 packages
Name Type
@zag-js/core Major
@zag-js/preact Major
@zag-js/react Major
@zag-js/solid Major
@zag-js/svelte Major
@zag-js/vue Major
@zag-js/accordion Major
@zag-js/angle-slider Major
@zag-js/avatar Major
@zag-js/carousel Major
@zag-js/checkbox Major
@zag-js/clipboard Major
@zag-js/collapsible Major
@zag-js/color-picker Major
@zag-js/combobox Major
@zag-js/date-picker Major
@zag-js/dialog Major
@zag-js/editable Major
@zag-js/file-upload Major
@zag-js/floating-panel Major
@zag-js/hover-card Major
@zag-js/menu Major
@zag-js/number-input Major
@zag-js/pagination Major
@zag-js/pin-input Major
@zag-js/popover Major
@zag-js/presence Major
@zag-js/progress Major
@zag-js/qr-code Major
@zag-js/radio-group Major
@zag-js/rating-group Major
@zag-js/select Major
@zag-js/signature-pad Major
@zag-js/slider Major
@zag-js/splitter Major
@zag-js/steps Major
@zag-js/switch Major
@zag-js/tabs Major
@zag-js/tags-input Major
@zag-js/time-picker Major
@zag-js/timer Major
@zag-js/toast Major
@zag-js/toggle-group Major
@zag-js/tooltip Major
@zag-js/tour Major
@zag-js/tree-view Major
@zag-js/anatomy-icons Major
@zag-js/anatomy Major
@zag-js/docs Major
@zag-js/store Major
@zag-js/types Major
@zag-js/aria-hidden Major
@zag-js/auto-resize Major
@zag-js/collection Major
@zag-js/color-utils Major
@zag-js/utils Major
@zag-js/date-utils Major
@zag-js/dismissable Major
@zag-js/dom-query Major
@zag-js/element-rect Major
@zag-js/element-size Major
@zag-js/file-utils Major
@zag-js/focus-trap Major
@zag-js/focus-visible Major
@zag-js/highlight-word Major
@zag-js/i18n-utils Major
@zag-js/interact-outside Major
@zag-js/live-region Major
@zag-js/popper Major
@zag-js/rect-utils Major
@zag-js/remove-scroll Major
@zag-js/scroll-snap Major
@zag-js/stringify-state Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@veloware
Copy link

@segunadebayo will this negate this issue - #2232 ? I see the deep-merge function is being removed in this PR

@segunadebayo
Copy link
Member Author

@veloware Yes, it will. We're simplifying pretty much everything

@Hugos68
Copy link
Contributor

Hugos68 commented Feb 22, 2025

@Hugos68 I've no insight how you integrated Zag in Skeleton, but for Ark UI it is a non breaking change sofar.

We are aware it won't be a breaking change but we're doing an internal rewrite so we're waiting for Zag 1.0 so we don't have to change components twice. So I was wondering when Zag 1.0 is planned to release.

@gperdomor
Copy link
Contributor

:o congrats for v1... Buy why lit examples was deleted? 😕

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
6 participants