NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1367 most downloaded on pub.dev
shadcn/ui ported in Flutter. Awesome UI components for Flutter, fully customizable.
Last release 14 days ago
24 Sep 2026
Release timing varies
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
5 versions withdrawn
withdrawn after publishing
3 years old
239 releases · first in 2024
FIX : Form fields without an id could get the same generated id in large forms (the id came from a 20-bit hash), which seeded a field with another fie
id could get the same generated id in large forms (the id came from a 20-bit hash), which seeded a field with another field's value, dropped entries from ShadForm.value, or threw a TypeError when the fields had different types. Generated ids are now unique, and explicit ids starting with __shad_field_ are reserved for them (#707).FIX : ShadDialog no longer bakes unnecessary status bar/navigation bar padding into a centered dialog. SafeArea is now applied at the route level (mat
ShadDialog no longer bakes unnecessary status bar/navigation bar padding into a centered dialog. SafeArea is now applied at the route level (matching Material's Dialog) instead of inside the dialog card, fixing a large blank space above the title on Android (#681).ShadSheet no longer bakes unnecessary status bar/navigation bar padding into non-expandable sheets, matching the ShadDialog fix. Also fixes cross-axis safe-area insets (e.g. side gutters) leaking into narrower, constrained sheets that don't actually touch the screen edge (#685).ShadDialog with a non-centered alignment (e.g. Alignment.bottomCenter) no longer paints into the safe-area strip; the barrier colour now shows in the status-bar / gesture-bar region. Pass useSafeArea: false to restore the old behaviour.One column per month.
FIX : Hide a ShadTooltip shown by a tap when another page or dialog opens on top of it, so it is not shown again once that page or dialog is dismissed
ShadTooltip shown by a tap when another page or dialog opens on top of it, so it is not shown again once that page or dialog is dismissed.FIX : Guard ShadSelect 's animateToTop / animateToBottom against a detached ScrollController . The scroll-to-top/bottom buttons kick off an animation
ShadSelect's animateToTop/animateToBottom against a detached ScrollController. The scroll-to-top/bottom buttons kick off an animation on hover, but if the popover closed before or during it, reading scrollController.offset/.position threw Bad state: No element out of the async loop (the scroll listener already had this hasClients guard) (#686).FIX : Expose ShadInput.enabled in the semantics tree so assistive technologies and web tests can distinguish enabled and disabled inputs.
ShadInput.enabled in the semantics tree so assistive technologies and web tests can distinguish enabled and disabled inputs.fix(i18n): use slang's legacy builder to fix build_runner on fresh clones by @nank1ro in #677
Full Changelog: v0.55.1...v0.56.0
slang 4.18 renames the generated localization classes: ShadLocalizationsDataTimePickerEn, ShadLocalizationsDataDatePickerEn, ShadLocalizationsDataInputEn and ShadLocalizationsDataKeyboardToolbarEn are now ShadLocalizationsData$timePicker$en, ShadLocalizationsData$datePicker$en, ShadLocalizationsData$input$en and ShadLocalizationsData$keyboardToolbar$en.slang_build_runner's legacy builder. dart run build_runner build failed on a fresh checkout with InvalidOutputException: Asset already exists, because slang's default builder writes through build_runner's asset writer and cannot overwrite the committed strings*.g.dart. The slang header timestamp is also disabled, so regenerating produces identical output instead of a spurious diff on every run.fix: sheet opaque by @nank1ro in #676
ShadSheet's opaque parameter; default is back to false.FEAT : Add expandable/resizable ShadSheet ( #655 ): new expandable , initialSize , minSize , maxSize , snap , snapSizes , snapAnimationDuration , snap
ShadSheet (#655): new expandable, initialSize, minSize, maxSize, snap, snapSizes, snapAnimationDuration, snapAnimationCurve, snapFlingVelocity, dragHandle, dragHandleBuilder, showDragHandle, dragHandleExtent, onSizeChanged and controller parameters, a public ShadSheetController (animateTo/jumpTo), ShadSheetResizeHandle, and matching ShadSheetTheme fields.showShadDialog accepts opaque; showShadSheet now follows keyboard insets so sheets move with the keyboard.FEAT : ShadTextTheme.fromGoogleFont now accepts a custom parameter to include custom text styles in the Google Font text theme.
ShadTextTheme.fromGoogleFont now accepts a custom parameter to include custom text styles in the Google Font text theme..otf files to variable font .ttf files, reducing the number of bundled font assets from 18 to 2.3.41.0 (Dart 3.11.0) for variable font weight support.FIX : Add !hasSize check to MouseAreaSurfaceRenderBox.hitTest to prevent assertion failure during early pointer events on desktop.
!hasSize check to MouseAreaSurfaceRenderBox.hitTest to prevent assertion failure during early pointer events on desktop.FIX : ShadDatePicker now correctly falls back to datePickerTheme.buttonDecoration when no explicit buttonDecoration is provided.
ShadDatePicker now correctly falls back to datePickerTheme.buttonDecoration when no explicit buttonDecoration is provided.FEAT : Add per-tab maintainState support to ShadTab . Individual ShadTab widgets can now override the global ShadTabs.maintainState setting.
maintainState support to ShadTab. Individual ShadTab widgets can now override the global ShadTabs.maintainState setting.FIX : Keyboard navigation in ShadSlider now works correctly with the Shift and arrow keys. (thanks to @Isakdl )
ShadSlider now works correctly with the Shift and arrow keys. (thanks to @Isakdl)FIX : ShadInput context menu now stays open after tapping Select All , allowing the user to then tap Copy or Cut .
ShadInput context menu now stays open after tapping Select All, allowing the user to then tap Copy or Cut.FIX: ShadThemeData.merge now properly merges the ShadColorScheme instead of replacing it. The custom color maps are combined, with the overriding them
ShadThemeData.merge now properly merges the ShadColorScheme instead of replacing it. The custom color maps are combined, with the overriding theme's values taking precedence for duplicate keys.FEAT: Use native browser context menu on web and support onPasteFiles.
onPasteFiles.FIX: Add missing groupId to ShadSelectMultipleFormField constructors.
groupId to ShadSelectMultipleFormField constructors.FIX: Add uncheckedColor to ShadCheckbox to allow customizing the color of the checkbox when unchecked. (thanks to @Isakdl)
uncheckedColor to ShadCheckbox to allow customizing the color of the checkbox when unchecked. (thanks to @Isakdl)FIX: i18n localization for ShadInput.defaultContextMenuBuilder.
ShadInput.defaultContextMenuBuilder.FEAT: Add built-in i18n support with 70+ locales using slang. The GlobalShadLocalizations delegate is automatically included by ShadApp. Access transl
GlobalShadLocalizations delegate is automatically included by ShadApp. Access translations via ShadLocalizations.of(context).DEPRECATED: ShadTextSelectionToolbar and ShadToolbarButton — use ShadContextMenu with ShadContextMenuItem instead.
ShadInput.defaultContextMenuBuilder now uses ShadContextMenu with ShadContextMenuItem for consistent styling with the rest of the component library.onTapDown to ShadContextMenuItem for cases where the action must fire immediately on pointer down (e.g. text selection context menus).ShadInput now dismisses the context menu when the user types.ShadTextSelectionToolbar and ShadToolbarButton — use ShadContextMenu with ShadContextMenuItem instead.FIX: Cascade resize behavior in ShadResizable now properly propagates remaining drag delta when a panel collapses to minSize.
FIX: Add missing "Select All" button to ShadInput default context menu.
ShadInput default context menu.FIX: ShadDatePicker.didUpdateWidget ignored selected and selectedRange null values.
ShadDatePicker.didUpdateWidget ignored selected and selectedRange null values.GlobalKey in the rare case you need it.FEAT: Add fallback to ShadAnchorAuto to have another optimal position as fallback.
fallback to ShadAnchorAuto to have another optimal position as fallback.ShadMenubar now uses ShadAnchor instead of ShadAnchorAuto to always show the popover below the item.FEAT: ShadContextMenuRegion now automatically supports tap to open the context menu on Android and iOS. Added tapEnabled parameter to override the def
ShadContextMenuRegion now automatically supports tap to open the context menu on Android and iOS. Added tapEnabled parameter to override the default behavior on any platform.FEAT: Add defaultContextMenuBuilder implementation for ShadInput to show Cut/Copy and Paste buttons. This introduces the following new widgets: ShadTe
defaultContextMenuBuilder implementation for ShadInput to show Cut/Copy and Paste buttons. This introduces the following new widgets: ShadTextSelectionToolbar and ShadToolbarButton.FEAT: ShadAnchor and ShadAnchorAuto now accept AlignmentGeometry instead of Alignment.
ShadAnchor and ShadAnchorAuto now accept AlignmentGeometry instead of Alignment.FIX: ShadForm.onChanged now fires with the updated value already present in formKey.currentState!.value.
ShadForm.onChanged now fires with the updated value already present in formKey.currentState!.value.FIX: ShadSelectMultipleFormField onChanged not firing after first selection due to in-place Set mutation.
ShadSelectMultipleFormField onChanged not firing after first selection due to in-place Set mutation.FIX: ShadAnchorAuto with followerAnchor: bottomCenter breaks tooltip visibility #575
ShadAnchorAuto with followerAnchor: bottomCenter breaks tooltip visibility #575FIX: Add forceErrorText to ShadSelectMultipleFormField, ShadSelectFormField and ShadTimePickerFormField in constructors where it was missing.
forceErrorText to ShadSelectMultipleFormField, ShadSelectFormField and ShadTimePickerFormField in constructors where it was missing.FIX: Do not remove form field value when the form field is disabled.
readOnly parameter.FIX: Add missing readOnly parameter to form fields.
readOnly parameter to form fields.FEAT: Add rawValue method to ShadForm to get the raw form value without considering transformations.
rawValue method to ShadForm to get the raw form value without considering transformations.ShadForm as initial value.ShadForm now correctly resets to initialValues when calling reset().getInitialValue method into getFieldValue.FEAT: Add dot notation support for nested form values in ShadForm. Field IDs like user.email are automatically converted to nested maps like {'user':
ShadForm. Field IDs like user.email are automatically converted to nested maps like {'user': {'email': value}}. The initialValue should be provided as a nested map structure, and the form will automatically extract values based on field IDs.fieldIdSeparator parameter to ShadForm to customize the separator used for nested form values (defaults to .). You can use any string as a separator (e.g. /, :), or set it to null to disable dot notation support entirely.toNestedMap, getByPath and deepMerge extension methods on Map<String, dynamic>.deepCopy extension method to Map, List and Set to create deep copies of collections.FIX: ShadForm initial values were not considered when getting the form value for form fields that were not registered with the same id. Now, even cust
ShadForm initial values were not considered when getting the form value for form fields that were not registered with the same id. Now, even custom values are returned, even if there is no form field associated with that id.REFACTOR: Deprecated valueTransformer in favor of toValueTransformer.
valueTransformer in favor of toValueTransformer.fromValueTransformer to form fields to easily transform the form initial value to the field value.fromValueTransformer and toValueTransformer in form.FIX: ShadForm scroll to form fields without an associated id.
ShadForm scroll to form fields without an associated id.FIX: Add onPressed to ShadSelectMultipleFormField.
onPressed to ShadSelectMultipleFormField.FIX: Correctly disable back and forth buttons in ShadCalendar when reaching min/max date.
ShadCalendar when reaching min/max date.FIX: Improve ShadPortal scroll and resize handling.
ShadPortal scroll and resize handling.BREAKING CHANGE: Rename icon into leading in ShadDatePicker and ShadDatePickerFormField and add trailing.
icon into leading in ShadDatePicker and ShadDatePickerFormField and add trailing.CHORE: Add selectedIconColor to ShadOptionTheme to allow customizing the color of the selected icon.
selectedIconColor to ShadOptionTheme to allow customizing the color of the selected icon.BREAKING CHANGE: The old setValue has been renamed into setFieldValue to better reflect its purpose, and now accepts a notifyField boolean parameter (…
setValue has been renamed into setFieldValue to better reflect its purpose, and now accepts a notifyField boolean parameter (defaults to true) to control whether to notify the form field of the value change.ShadFormBuilderFieldState.setInternalError has been renamed into setError for consistency.ShadFormState.removeInternalFieldValue has been renamed into removeFieldValue for consistency.setValue takes a Map<String, dynamic> as value and updates the entire form value. It also accepts a notifyFields boolean parameter (defaults to true) to control whether to notify the changed form fields of the value changes.BREAKING CHANGE: The map stored by ShadForm now uses String as a key instead of Object. Every form field id must be a String now. This change was made…
setValue to ShadForm to manipulate the value of a form field programmatically.ShadForm now uses String as a key instead of Object. Every form field id must be a String now. This change was made for convenience with JSON serialization.FIX: Add maxLength parameter to ShadTextarea (thanks to @mickey35vn).
maxLength parameter to ShadTextarea (thanks to @mickey35vn).FIX: ShadSonner height normalization for stacked toasts with different heights.
ShadSonner height normalization for stacked toasts with different heights.FIX: ShadPopover dismissal animation when multiple popovers were opened quickly one after another. This affected components like ShadContextMenu and S
ShadPopover dismissal animation when multiple popovers were opened quickly one after another. This affected components like ShadContextMenu and ShadMenubar.ShadMenubar onPressed behavior, so mobile taps now open/close the menubar items correctly.FIX: ShadButton constraints regression when using a LayoutBuilder as child.
ShadButton constraints regression when using a LayoutBuilder as child.FIX: ShadSelectFormField onChanged callback being fired twice when changing the value.
ShadSelectFormField onChanged callback being fired twice when changing the value.FIX: ShadInput constraints are applied at the top of the widget and not to the inner editable text.
ShadInput constraints are applied at the top of the widget and not to the inner editable text.FEAT: Add new component ShadBreadcrumb and all of its related components (thanks to @MoazSalem).
ShadBreadcrumb and all of its related components (thanks to @MoazSalem).ShadButton to allow for more flexibility with height and width properties (thanks to @MoazSalem).closeIcon from theme in ShadTheme (thanks to @DMouayad).ShadDecoration in the component themes.CHORE: Downgrade Dart SDK constraint to 3.6.0 to temporarely fix the pub dev score issue about the Dart formatter (see #9091)
3.6.0 to temporarely fix the pub dev score issue about the Dart formatter (see #9091)FIX: Provide more fallback colors to ShadCalendar.
ShadCalendar.FIX: weekNumbersHeaderTextStyle in ShadCalendar not having a default color.
weekNumbersHeaderTextStyle in ShadCalendar not having a default color.FIX: ShadAvatar with null source.
ShadAvatar with null source.FIX: Update theme_extensions_builder and fix merge issues in themes.
theme_extensions_builder and fix merge issues in themes.FIX: Regression in ShadSelect where the dropdown no longer expanded to the intrinsic width of its options.
ShadSelect where the dropdown no longer expanded to the intrinsic width of its options.3.10.0.FIX: Autofocus search input in select dropdown (thanks @Isakdl).
Your coding agent can read these notes before it upgrades. Set up the MCP server →