v4.1.11
[!IMPORTANT] Vuetify Needs Your Support! The OpenCollective funds are running low. The team needed to scale down and is barely able to compensate the contributors for their work on the framework and the ecosystem tools.
If Vuetify is part of your stack, please consider sponsoring the project so we can continue delivering updates and fixes.
Every contribution helps us keep Vuetify alive and signals to maintainers that their effort is appreciated.
Thank you.
v9.0.0
9.0.0 (2026-08-19)
Full Changelog: https://github.com/ionic-team/ionic-framework/compare/v8.8.19...v9.0.0
Migration guide: https://ionicframework.com/docs/updating/9-0
Breaking changes: https://github.com/ionic-team/ionic-framework/blob/main/BREAKING.md#version-9x
mobx-react-lite@5.0.3
6f002b8e543ca39d3ee23681e28848d7f1724fae#4696 Thanks @gesposito! - perf: add anodeexport condition that routes Node and Bun to the existingdist/index.jsentry, which picks the prebaked development or production CJS build once at require time.importing mobx in Node no longer executes the env-agnosticdist/mobx.mjswith per-callNODE_ENVchecks, and mixingimportandrequirein one Node app now yields a single mobx instance.
mobx-react@10.0.2
-
6f002b8e543ca39d3ee23681e28848d7f1724fae#4696 Thanks @gesposito! - perf: add anodeexport condition that routes Node and Bun to the existingdist/index.jsentry, which picks the prebaked development or production CJS build once at require time.importing mobx in Node no longer executes the env-agnosticdist/mobx.mjswith per-callNODE_ENVchecks, and mixingimportandrequirein one Node app now yields a single mobx instance. -
Updated dependencies [
6f002b8e543ca39d3ee23681e28848d7f1724fae]:- mobx-react-lite@5.0.3
mobx@7.0.3
6f002b8e543ca39d3ee23681e28848d7f1724fae#4696 Thanks @gesposito! - perf: add anodeexport condition that routes Node and Bun to the existingdist/index.jsentry, which picks the prebaked development or production CJS build once at require time.importing mobx in Node no longer executes the env-agnosticdist/mobx.mjswith per-callNODE_ENVchecks, and mixingimportandrequirein one Node app now yields a single mobx instance.
v0.4.5
Astryx 0.4.5 — all @astryxdesign/* packages ship at this version.
npx astryx upgrade --apply
-
BottomSheet:
snapPointsmakes the drag-to-resize stops the host's choice. A stop is the sheet's visible height, written as a viewport fraction (0.5), a percentage ('50%'), or a px length ('320px') — matchingheight, where a bare number is also px and a string carries its unit. Fractions and percentages re-resolve when the viewport changes, so a sheet keeps the stop the user chose across a rotation, and swapping the points under a resting sheet re-anchors it the same way. A stop of a quarter of the sheet or less is a peek: it slides away rather than reflowing into a sliver, and thins the scrim. Taller stops are working surfaces, so they lay their content out and keep the scrim full — previously the shortest stop was always a peek, which would have thinned the backdrop of a half-height sheet (#5203). Behavior change, deliberate and not breaking: every sheet used to carry three built-in stops (14%, 50% and 92% of the viewport), so a drag could leave it resting somewhere the host never asked for. A sheet now opens and closes unlesssnapPointssays otherwise; passsnapPoints={[0.14, 0.5, 0.92]}to keep the old stops. No prop, type, or DOM output was removed or renamed, and swipe-to-dismiss, the height budgets, and mobile-keyboard accommodation are untouched. -
Astryx ships translations for 28 more locales.
packages/core/locales/went fromenandfr-FRto 30 files — Arabic, Catalan, Chinese (Simplified and Traditional), Czech, Danish, Dutch, Finnish, German, Greek, Hebrew, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, Portuguese (Brazil and Portugal), Romanian, Russian, Serbian, Spanish, Swedish, Turkish, Ukrainian, Vietnamese and Afrikaans — covering every@astryx.*message the components announce or display (#5185). Nothing changes unless you ask for it:InternationalizationProviderstill defaults to English, and the catalogs are loaded through the existing./locales/*.jsonexport. An app that already passes alocalenow gets translated component strings where it previously fell back to English.The catalogs come from Crowdin and are refreshed nightly (#5186), so a translation landing upstream reaches a release without anyone opening a PR by hand.
-
DateRangeInput / Calendar: add
maxRangeSpanandminRangeSpanto constrain the size of a selected range. Once a start date is picked, days outside the allowed window are disabled — e.g.maxRangeSpan={7}keeps the range within a 7-day window of the start (#5145). -
FormLayout: add
defaultOptionality— set a form-wide default ('optional'or'required') so only the exception carries a visible indicator. Under'optional'onlyisRequiredfields show one; under'required'onlyisOptionalfields do; a field that restates the default shows nothing. Under'required'the unmarked fields also exposearia-requiredso screen readers match what sighted users see — resolved onaria-requiredonly, never the nativerequiredattribute. Unset keeps today's per-field behavior (#4791). -
Add
astryx-input-clear-buttontheme target on the shared clear button wrapper. Themes can now control the clear button's height and hover independently of other ghost buttons — for example suppressing the hover fill or matching a different element size scale (#5093).
- BottomSheet: a pull up from the scroll area now expands the sheet on iOS. Below the tallest detent, dragging up inside the content did nothing on a real device while the grab handle worked — the sheet took the gesture and then froze for the rest of the pull. iOS Safari raises PointerEvents for a finger under the same numeric id it puts in
Touch.identifier, so the drag the touch path started was keyed to a live pointer:beginDragcaptured that pointer, WebKit handed the capture straight back, and thelostpointercapturea millisecond later cancelled the drag. Touch-driven drags are now marked as such — they take no pointer capture, andlostpointercapture,pointercancelandpointermovefor that same finger no longer cancel, end or double-drive them. Browsers that keep the two id spaces apart were never affected, which is why this only showed up on device (#5178). - Calendar weekday headers now use compact CLDR stand-alone-short names for the selected locale, while preserving the existing
Su/Mo/TuEnglish labels. - Render generated id attributes on Markdown headings so Outline hash links scroll to their target. Heading slugs now come from parser helpers shared with parseOutlineFromMarkdown, and the components.heading override receives the generated id (#4765).
- StatusDot: pair each variant with a distinct built-in shape drawn from the system's semantic icon vocabulary — success a check, warning an exclamation, error a cross, neutral a ring, accent the plain filled dot — so status no longer relies on colour alone (WCAG 2.1 SC 1.4.1). The shapes mirror the marks
Banner/FieldStatusrender viadefaultIcons, a different axis of consistency fromAvatarStatusDot's presence shapes (the two share only the neutral ring, intentionally). The diagonal check and cross take a slightly heavier stroke so they stay crisp and distinct at 8px. Also adds aniconprop for API parity withAvatarStatusDot: a rendered icon replaces the built-in glyph, while booleans and empty renders are ignored socond && <Icon />stays safe. The built-in glyphs resolve through the icon registry under scopedstatusdot:<variant>keys (therichtext:*precedent), so themes can reshape a variant's mark everywhere viadefineTheme({icons})/registerIcons— including marks for augmented custom variants — while overrides of the standard 24px semantic icons deliberately do not leak into the 8px field. Themes can also target the new stableastryx-statusdot-glyphclass and itsdata-shapeattribute — a stroked inline<svg>painted from the dot'scurrentColor(#4373). Table's row-expansion chevron now mirrors correctly under RTL. It previously rotated on expand with no RTL handling at all, so the directional glyph pointed the same way regardless of text direction, matching the pattern already used byTreeListItem's chevron (#5153).
Thanks to everyone who contributed to this release:
@athz @bhamodi @cixzhang @freddymeta @HelloOjasMutreja @imdreamrunner @jiunshinn @nynexman4464
Full Changelog: https://github.com/facebook/astryx/compare/v0.4.4...v0.4.5