Skip to main content
← Blog
The number 164 above a lime green progress bar between 0 and 1 on a dark background.

Foldkit 0.164.0

September 30, 2026 · Devin Jameson

Foldkit 0.164.0 is out. This release adds two UI primitives, simplifies DevTools MCP and server rendering setup, and improves Scene queries and UI behavior.

Meter and Progress

Foldkit UI now includes Meter for displaying a value within a known range, and Progress for showing progress through a task, such as uploading a file or loading a page.

Both are headless: your Model supplies the value, and you control the markup and styling. Foldkit connects your labels to the controls and provides the range attributes and fill sizing.

Thank you to @elianiva for contributing both components, and to @filipfalcon for proposing them!

Automatic DevTools MCP discovery

DevTools MCP now finds the development server for your project automatically and reconnects when it restarts. You no longer need to keep port settings in sync, and separate projects can run without competing for a relay port.

The discovered connection uses a token to protect Model inspection and Message dispatch. Existing fixed-port configurations still work, and Windows still requires a fixed port. The DevTools MCP guide covers setup.

Thank you to @filipfalcon for contributing automatic discovery!

Simpler hydration setup

When one Vite build produces the client and server artifacts, the Foldkit plugin now generates their shared build id. Applications no longer need to pass it through their rendering and hydration entries by hand.

If the artifacts build in separate jobs, keep supplying the same explicit id to both. The server rendering guide covers that setup.

Thank you to @filipfalcon for proposing automatic build ids and for the Scene, Subscription, build tooling, and server-rendering work in this release!

More in this release

  • Slider supports vertical layouts and an option to keep the entire handle within the track. Thank you to @elianiva for contributing these options!

  • Scene text locators accept regular expressions. Selectors support quoted attribute values containing spaces and :not(), while role locators gain aria-current filtering and more implicit HTML roles.

  • Subscription.fromMediaQuery reports a media query's current value when it starts, then emits changes. For example, use it for reduced motion, system color scheme, or viewport breakpoints.

  • Anchored panels inside a Dialog stay visible and interactive, including in scrolling dialogs. Interrupted enter and leave animations also wait for the current transition before removing an element.

  • Fixed DOM ownership when lazy views share a constant root, and event listener updates when views reuse the same handlers.

  • Server rendering handles deeply nested views without overflowing the call stack and reports the documented depth-limit error when a view exceeds the limit.

  • Union matchers infer their result from every handler. Thank you to @armancharan for the fix!

  • Deployment integrations can read completed build metadata directly from the Vite plugin.

Thank you to @wmaurer for the Animation fixes and for reporting and fixing the Dialog overlay issue, and to @artile for the Popover reproduction!

Upgrading

Pin your Effect packages to 4.0.0-rc.117. The new Vite plugin requires Foldkit 0.164.0 or newer.

Custom Animation integrations and tests must carry the transition generation in their result Messages. Dialog overlays need a positioned trigger wrapper. If a custom overlay inside a Dialog uses portalToContainingRoot for its backdrop, switch to portalBackdrop. See the Animation and Dialog guides for the current APIs and setup.

The full 0.164.0 release notes cover every package and migration detail.

Thanks to everyone building with Foldkit!

Devin