Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v1.0 #2233

Open
wants to merge 116 commits into
base: main
Choose a base branch
from
Open

v1.0 #2233

wants to merge 116 commits into from

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 🛑 Canceled (Inspect) Feb 21, 2025 6:00pm
zag-solid 🛑 Canceled (Inspect) Feb 21, 2025 6:00pm
zag-svelte ✅ Ready (Inspect) Visit Preview Feb 21, 2025 6:00pm
zag-vue 🛑 Canceled (Inspect) Feb 21, 2025 6:00pm
zag-website ✅ Ready (Inspect) Visit Preview Feb 21, 2025 6:00pm

Copy link

changeset-bot bot commented Feb 11, 2025

🦋 Changeset detected

Latest commit: de5b868

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment