Components / Unstyled components across frameworks
Ark UI
Use shared interaction patterns when several front-end frameworks need a consistent foundation.
Understand the resource
What it is.
Ark UI offers unstyled components for React, Vue, Solid and Svelte, built around Zag.js state-machine behavior. Teams supply appearance and compose the parts they need. A common behavior foundation can reduce duplication, but framework adapters still have different integration details.
When it is useful
Consider it for a design-system team supporting more than one framework, or for an application needing composed controls without a prescribed theme. Start with a small pattern and check the adapter you actually intend to ship.
A proposed application
Put it to work.
This example illustrates a possible use. The proposed workflow and expected result are separate from the bounded checks recorded below.
Try this
Proposed workflow: define an expandable policy-reference pattern for both a React editor and a Vue viewer. Agree on heading structure, whether multiple panels may stay open and the keyboard sequence, then implement each adapter with shared tokens. The executed evaluation covered only the React documentation accordion; cross-framework parity remains a proposed test.
Result to aim for
A documented interaction contract and matching visual tokens, with adapter-specific regression cases before rollout.
Before you start
What you need.
- Install the adapter for your chosen framework. The captured @ark-ui/react 5.39.3 manifest requires React and React DOM 18 or later and pins its Zag.js dependencies to 1.45.0.
- Your own styles, labels and framework integration tests. The inspected React package is MIT licensed; paid Plus resources were not accessed.
The practical boundaries
What to watch for.
- A multi-framework offering does not prove every adapter behaves identically in your app.
- Single-open and collapsible accordion settings change what Enter does. Match the configuration to the intended task.
- State-machine transitions organize UI behavior; they do not provide backend authorization or sanitize untrusted content.
Review record
What we could establish.
- Why included (2026-10-19): Adds a smaller but active cross-framework foundation with a distinct state-machine approach, rather than another styled React-only kit. GitHub reported 5,425 stars for the upstream repository (chakra-ui/ark); the sampled default-branch commit is dated 2026-10-16. This is a dated popularity/activity snapshot, not a measured growth rate or safety ranking.
- Public official documentation and declared package requirements reviewed. The example above is a proposed workflow; executed checks are listed separately below.
- Earlier selector, focus-timing and setup probes remain in the retained evidence. Final conclusions use the corrected bounded tests and keep unmet coverage explicit.
The source-review notes describe documentation and identity. The account-free evaluation below records exactly which public interaction or local fixture was checked, what happened, and what remains untested.
Check current access, terms, licensing and data handling before using a resource with your own material.
Runtime and security evaluation
What the evaluation covers.
In the official React accordion, Enter switched the open panel and restored it, ArrowDown moved focus, and the visible panel's label/control references matched. The first single-panel collapse probe was corrected after inspecting the sample's single-open behavior.
Methods: Public HTTP response · Public browser sample. A completed check covers the stated sample; it is not a safety certification.
- Target
- https://ark-ui.com/docs/components/accordion
- Version or capture
- Unversioned public demo observed 2026-10-19; registry snapshot @ark-ui/react 5.39.3 was not locally executed.
- Integrity scope
- Public document SHA-256 94585a0dbf699c72341b2cff348a0b4814c4fe99d88e22d3b2a9377473a909fd; initial response only, not complete application integrity. Source snapshot 300f6f39e9ec97a5924b5f816ac73aa484dd196d does not identify the hosted deployment.
Test conditions
- Chrome 155.0.8059.82, 1280 x 900 desktop viewport; UTC browser context.
- Fresh temporary browser profile and context; no inherited account storage. Child environment allowed only runtime paths, with credential variables omitted.
- Public HTTPS GET/HEAD only; form submission, non-read methods, WebSockets, service workers and downloads blocked. Selected telemetry requests were blocked.
Individual checks and observations
Public sample response
passPublic HTTP response: Anonymous public GET; capture status, response-body hash and selected headers.
Observed: HTTP 200; https://ark-ui.com/docs/components/accordion. Reachability only.
Accordion keyboard expansion
passPublic browser sample: Use Enter to change the documented accordion state and restore it; single-open samples switch between two panels.
Observed: Exclusive selection states ["false","true"] then ["true","false"]; this sample does not collapse the only open panel.
Accordion arrow-key navigation
passPublic browser sample: Focus the first trigger, press ArrowDown and inspect whether focus moves to the next trigger.
Observed: Focus moved to second trigger=true. Only this adjacent navigation step was exercised.
Accordion panel association
passPublic browser sample: Open the first trigger and verify its aria-controls target is visible with matching label reference.
Observed: {"expanded":"true","panelExists":true,"panelVisible":true,"labelMatches":true}
Security findings and boundaries
Passive inspection of official public response headers and request hosts, declared package metadata, and the exact local fixture where stated. No exploitation, authentication, private input or backend writes.
Observed · caution
Accordion configuration changes the contract
The first accordion kept its only open panel expanded when Enter was pressed again. Selecting another item changed the open panel as expected. Choose and test single-open, multiple-open and collapsible behavior explicitly.
Observed · info
Sampled response and request surface
The anonymous HTTPS demo response included strict-transport-security. Requests attempted 1 additional host(s), including plausible.io. The guard blocked 1 request(s). Host attempts include blocked requests; this does not establish retained data or exploit resistance.
Practical advice · caution
Check the installed dependency graph separately
The registry snapshot identifies @ark-ui/react 5.39.3, but this review did not install or audit it. Lock and review the versions that actually enter your application; the hosted demo's success is not a dependency audit.
Practical caveats
- A multi-framework offering does not prove every adapter behaves identically in your app.
- Single-open and collapsible accordion settings change what Enter does. Match the configuration to the intended task.
- State-machine transitions organize UI behavior; they do not provide backend authorization or sanitize untrusted content.
What remains untested
- Only the public React accordion was exercised. No local adapter was installed and no Vue, Solid or Svelte parity claim was tested.
- Collections, file uploads, floating panels, SSR, performance and assistive technologies were outside the sample scope.
Security limits
- No authentication, authorization, tenant isolation, retention or backend processing was tested.
- No comprehensive source/dependency audit, vulnerability scan or security certification. Header presence or absence describes one response, not the safety of a product.
- Request guards can alter normal page behavior. Full browser, mobile, assistive-technology and performance coverage is outside this evaluation.
Evaluation sources
- Official documentation
- Official evaluated sample
- Upstream repository
- GitHub repository snapshot endpoint
Star count and repository identity observed 2026-10-19.
- Sampled source revision
Default branch snapshot; not a claim that the hosted demo deploys this exact commit.
- Package manifest snapshot
Exact registry version and dependency/license declaration; installed only where the evaluation says so.
- Framework and state-machine overview
Follow the evidence
Sources and further reading.
- Official documentation
- Official evaluated sample
- Upstream repository
- GitHub repository snapshot endpoint
Star count and repository identity observed 2026-10-19.
- Sampled source revision
Default branch snapshot; not a claim that the hosted demo deploys this exact commit.
- Package manifest snapshot
Exact registry version and dependency/license declaration; installed only where the evaluation says so.
- Framework and state-machine overview
Keep exploring