Skip to main content
1.6.0
21-11-2025

1.6.0

Enhanced dropdown capabilities, improved field submission behavior, and streamlined sidebar state management. This release introduces multi-select dropdowns, automatic field submission on blur, and performance improvements to sidebar state handling.

BREAKING CHANGES ๐Ÿšจ

NeoDropdownField API Changes

  • The widget is now generic and uses selected instead of selectedId
  • Migration:
    • Change selectedId: String? to selected: String? (for single-select) or selected: Set<String> (for multi-select)
    • Change onChanged: ValueChanged<String?> to onChanged: ValueChanged<String?> (single-select) or ValueChanged<Set<String>> (multi-select)

NeoSidebarStates API Changes

  • The property activeItem and method setActiveItem(String item) have been removed from NeoSidebarStates and NeoCurrentSidebarStates notifier
  • Rationale: This property was not needed as you can determine the current path locally in your application code. Use the current path to decide which NeoSidebarButton should be active, rather than storing it in the sidebar state. Additionally, tracking the active path did not fit within the scope of sidebar states, which should focus on UI state (collapsed, hidden, etc.) rather than application routing state
  • Migration: Remove all references to activeItem and any calls to setActiveItem(). Instead, determine the active button based on your current route path locally

New ๐Ÿš€

NeoDropdownField Multi-Select Support

  • Added multi-select support to NeoDropdownField. When using Set<String> as the generic type, users can select multiple items
  • Selected items are displayed as comma-separated labels

Improvements ๐Ÿ’ช

Field Submission Behavior

  • Added submitOnBlur property to NeoTextField, NeoTextArea, NeoDateField, and NeoTimeField. When enabled (defaults to true), these fields will automatically call onSubmitted when the field loses focus, providing better form submission behavior

NeoModal Size Options

  • Added size parameter to NeoModal.show() method. The modal now supports three size options (NeoModalSize.small, NeoModalSize.medium, NeoModalSize.large) with corresponding max widths (400px, 500px, 600px respectively). Defaults to NeoModalSize.small for backward compatibility

NeoSidebarStates Performance

  • Improved sidebar state management performance. NeoSidebarStates provider now only initializes when actually using NeoSidebarLayout, preventing unnecessary provider initialization in apps that donโ€™t use the sidebar layout

Fixes ๐Ÿž

  • Fixed validation assert: maintainFocusOnSubmit and submitOnBlur cannot both be true in NeoTextField and NeoTextArea. An assert now prevents this invalid configuration
  • Fixed maintainFocusOnSubmit not working properly in NeoTextField. The field now correctly maintains focus when Enter is pressed and maintainFocusOnSubmit is true
  • Fixed duplicate submission bug where pressing Enter would trigger both Enter submission and blur submission. Fields now track submission source to prevent duplicate calls to onSubmitted
1.5.0
09-10-2025

1.5.0

Introducing Neoโ€™s time input capabilities! This release adds a time field widget with segmented input and intelligent navigation.

New ๐Ÿš€

NeoTimeField

  • Time input widget with segmented HH:MM format and advanced interaction features:
    • Smart segmented input: HH:MM format with intelligent auto-advance between segments
    • Keyboard navigation: Arrow keys for navigation between segments and value increment/decrement
    • Input validation: Real-time value capping for valid time ranges (00:00-23:59)
1.4.1
24-09-2025

1.4.1

Quick bug fix release addressing field widget issues within modals and text area resizing behavior.

Improvements ๐Ÿ’ช

  • Fixed NeoTextArea manual resize behavior by correcting height calculation

Fixes ๐Ÿž

1.4.0
18-09-2025

1.4.0

Major expansion of Neoโ€™s input capabilities! ๐Ÿš€ This release introduces the multi-line NeoTextArea widget, comprehensive date validation utilities, a clean card component, and significant improvements to date field functionality with a completely rewritten segmented input experience.

BREAKING CHANGES ๐Ÿšจ

NeoDateField API Changes:
  • Changed from DateTime? properties to string-based API for enhanced flexibility
  • dateString property replaces previous date properties
  • onSubmitted(String) callback replaces previous onSubmitted(DateTime?) callback
  • This enables custom validation flows, internationalized error messages, and auto-correction features

New ๐Ÿš€

NeoTextArea

  • Multi-line text input widget with advanced features:
    • Auto-resizing: Configurable min/max lines with automatic height adjustment
    • Manual resizing: Optional drag handle for user-controlled sizing
    • Keyboard shortcuts: Smart text submission (Enter vs Cmd/Ctrl+Enter based on submitOnEnter setting)
    • Comprehensive properties: Label, placeholder, description, error text, validation, and focus management

NeoCard

  • Clean card component with configurable padding (defaults to theme.spacings.large)
  • Perfect for grouping content with consistent styling and subtle shadows

NeoDateValidator

  • Comprehensive date validation utility with 7 validation methods:
    • validate(String) - Parses and validates DD-MM-YYYY format with detailed error messages
    • validateIsBefore(DateTime, DateTime) - Validates date is before another date
    • validateIsAfter(DateTime, DateTime) - Validates date is after another date
    • validateIsInRange(DateTime, DateTime, DateTime) - Validates date is within range (inclusive)
    • validateIsNotFuture(DateTime) - Validates date is today or earlier
    • validateIsNotPast(DateTime) - Validates date is today or later
    • format(DateTime) - Formats DateTime objects to DD-MM-YYYY string

Other New Features

  • NeoApp: Added optional wrapper parameter for custom root-level widget wrapping

Improvements ๐Ÿ’ช

NeoDateField - Complete Rewrite

  • Smart segmented input: DD-MM-YYYY format with intelligent auto-advance between segments
  • Keyboard navigation: Arrow keys for navigation between segments and value increment/decrement
  • Focus management: Proper tab order integration with automatic segment selection
  • Input validation: Real-time value capping and context-aware month day limits
  • Enhanced UX: Tap-to-select segments, automatic padding, and seamless interaction flow
  • Flexible error handling: Allows invalid dates in field state, moving validation to end-user side for custom UX flows

NeoTextField Improvements

  • Enhanced platform consistency: Replaced EditableText with CupertinoTextField for better native behavior
  • Improved error handling: Fixed error text display to only show when error text is not empty, preventing layout jumps

NeoModal Enhancement

  • Enhanced backdrop: Added gradient effect for smoother visual transition

Fixes ๐Ÿž

  • NeoTextField: Fixed error text layout jumps from empty error messages
1.3.0
14-08-2025

1.3.0

API standardization and UX polish across the board. This release finalizes the Date Field, unifies disabled/error states, and introduces a few small but meaningful visual improvements and fixes.

BREAKING CHANGES ๐Ÿšจ

These rename-only changes standardize content and boolean property names. Behavior is unchanged.
WidgetOld PropertyNew Property
NeoButtontextlabel
NeoSidebarButtontextlabel
NeoSidebarButtoncarethasCaret
NeoBadgetextlabel
NeoTableselectableisSelectable
NeoTooltiptextlabel
NeoTooltiptriggerchild
NeoTabBarexpandedisExpanded
NeoTabtextlabel
NeoDropdownMenuItemdangerisDanger

New ๐Ÿš€

  • NeoDateField: finalized segmented DD-MM-YYYY input
    • Keyboard navigation and smart selection handling
    • Normalizes input and supports disabled state
    • New onSubmitted(DateTime? value) callback
  • Added autofocusSearchOnOpen property to NeoDropdownField. When true, the search field will be focused when the dropdown is opened
  • Added isEnabled property to NeoTextField, NeoDropdownField and NeoToggleSwitch for consistent disabled-state visuals and behavior

Improvements ๐Ÿ’ช

Fixes ๐Ÿž

1.2.0
07-08-2025

1.2.0

Major improvements across the framework! ๐Ÿš€ This release introduces a new Modal widget and brings significant enhancements to buttons, toasts, themingโ€”plus important API improvements and some breaking changes to be aware of.

BREAKING CHANGES ๐Ÿšจ

  • NeoButton: Removed NeoButtonSize.expanded from the size property enumโ€”use the new isExpanded boolean property instead
  • NeoTabBar: activeTabId and onChange properties are now required (changed from nullable)
  • Field widgets height change: NeoTextField, NeoDropdownField, and NeoDateField changed from flexible height to fixed height (44.0) - may affect layouts relying on flexible field height

New ๐Ÿš€

NeoModal

  • A new overlay widget for creating modals, dialogs, confirmations, and custom popups
  • Features builder-based API with contentBuilder and actionsBuilder for flexible layouts

Theming System Additions

  • Added NeoShadowTokens with small and medium shadow definitions
  • Added semantic color tokens: success/onSuccess, warning/onWarning, danger/dangerHover/dangerPressed/onDanger
  • Added button-specific tokens: buttonBg, buttonBgHover, buttonBgPressed, buttonFg
  • Added contrast tokens: fgOnContrast and bgContrast
  • Added green color to NeoPalette with fgSuccess and fgOnSuccess tokens

NeoButton Additions

  • Added new states: isLoading, isDanger, isEnabled properties for loading, danger, and disabled states
  • Added a new variant: NeoButtonVariant.link, for underlined link-style buttons
  • Added isExpanded property for expanded buttons (replaces NeoButtonSize.expanded)
  • Added isCaretRotated property for animated dropdown-style carets
  • Added enhanced color customization: bgColor, bgHoverColor, bgPressedColor, and fgColor properties

NeoToast Additions

  • Added NeoToastType enum with preset configurations (info, loading, success, warning, danger)
  • Added NeoToast.update() method for dynamically updating existing toasts
  • Added toast descriptions with optional description parameter
  • Added sophisticated toast stacking system with dynamic height calculation

Other Widget Additions

  • Added label property to NeoDivider for labeled dividers
  • Added errorText and allowDeselect properties to NeoDropdownField
  • Added fixedRowHeight property to NeoTable for consistent row heights
  • Added optional focusNode property to NeoTextField for better focus management
  • Added smart log filtering to NeoLogger with automatic build mode detection
    • Debug builds show all log levels (trace, debug, info, warning, error, fatal) for comprehensive debugging
    • Release builds only show info level and above to reduce noise and improve performance
    • This means you can safely leave trace and debug calls throughout your codebase during development - they wonโ€™t clutter the user experience in production builds

Improvements ๐Ÿ’ช

NeoButton Improvements

  • Better interaction feedback with refined animations and shadows
  • More sophisticated color calculations for different variants and states

NeoToast Improvements

  • Complete visual redesign with modern card-based styling and enhanced shadows
  • Intelligent preset system with automatic icon/color configuration and auto-dismiss behavior
  • Advanced animation system with staggered entrance, elastic positioning, and smooth dismissal

Theming & Widget Improvements

  • Restructured color palette with semantic naming (e.g., green500, red500, red600)
  • NeoDropdownField: Improved search bar implementation
  • Standardized logging format across all Neo widgets with consistent [Neo] [WidgetName] prefixes for easier debugging and filtering

Fixes ๐Ÿž

  • Fixed toast positioning, stacking, memory leaks, and race conditions
  • Fixed isDismissable bug in dropdown widgets
  • Updated deprecated withOpacity() calls to use withValues(alpha:) for Flutter compatibility
1.1.0
10-07-2025

1.1.0

A new widget has landed! ๐Ÿ™Œ (Plus a few improvements)

New ๐Ÿš€

  • Added NeoTabBar. Itโ€™s a barโ€ฆ of tabs! Useful for content switching.
  • Added NeoTab. This is used within NeoTabBar to pass data like text and icon.

Improvements ๐Ÿ’ช

  • Added the enabled property to NeoCheckbox. If it is false, it is not clickable and has a visual disabled state
  • Added onRowHover property to NeoTable. This is a callback that can be used, for example, to show action buttons only on hover over a single row, giving your overall screen a cleaner look
  • Removed the scaling animation from both NeoButton and NeoSidebarButton
  • Removed the border from the filled variant of the NeoButton; this gives it a cleaner look
1.0.1
09-05-2025

1.0.1

Hey there! ๐Ÿ‘‹ Hereโ€™s a quick improvement and fix for you!

Improvements ๐Ÿ’ช

  • Added defaultLightTheme and defaultDarkTheme properties to NeoApp. This will now allow you to set default themes at startup. When not provided, NeoApp will use the default NeoThemeLight and NeoThemeDark

Fixes ๐Ÿž

  • We forgot to add the new NeoSidebarLayout to neo.dart, so you had to import this separately to use it. This is fixed!
1.0.0
08-05-2025

1.0.0

The official 1.0.0 release of Neo! ๐ŸŽ‰ This is a major milestone in our journey to empower developers to create stunning, responsive apps with ease. From the first pre-release almost exactly one year ago to now, weโ€™ve been building a robust foundation, and this release brings powerful new features and polished improvements to make your development experience smoother and more delightful. Now letโ€™s craft beautiful apps together! ๐Ÿš€

New ๐Ÿš€

  • Added the NeoTable widget. We finally got tables now! ๐ŸŽ‰ More features to come in the future.
  • Added the NeoSidebarLayout assembly (weโ€™re still deciding on the naming of these big โ€œwidgetsโ€). It manages the layout of a NeoSidebar and main content, providing the ability to collapse or completely hide the sidebar. Hiding the sidebar will now also completely hide the padding around the main area, giving a more fullscreen feel. This change animates so everything feels fluent! The NeoSidebarLayout also supports mobile platforms, and there the sidebar pushes the main content to the side instead of scaling it

Improvements ๐Ÿ’ช

  • Made the NeoBadge stable. It now always scales correctly to its contents; this was a bit wonky before, but not anymore!
  • Improve the look of the NeoBadge; itโ€™s now a lot more visible in different theming scenarios.
  • Made the NeoSidebarButton work with the improved NeoBadge, it now correctly animated into an indicator when collapsing the sidebar
  • Added isIndeterminate property to NeoCheckbox which will show a dash inside of the checkbox for indeterminate states like a select/deselect all box in a table when some but not all rows are selected
0.4.1
21-02-2025

0.4.1

New ๐Ÿš€

  • Added haptic feedback support for MacOS trackpads
  • Added new NeoHaptics.error() haptic

Improvements ๐Ÿ’ช

  • Added optional MacOS support toggle for haptic feedback methods (disabled by default since trackpads already provide native feedback for clicks - enable with enableMacOS: true when additional feedback is desired, e.g., during drag operations)
  • Updated documentation to align with all the recent changes and the Neo CLI
0.4.0
11-02-2025

0.4.0

Here we go againโ€ฆ We forgot to keep track of changes again so this is a bit rough. ๐Ÿ˜ตโ€๐Ÿ’ซ Butโ€ฆ weโ€™ve implemented a new system for creating release notes so from now on it should be a lot better! ๐ŸŽ‰There are a lot more small improvements and fixes but here are the most notable ones:

New ๐Ÿš€

Improvements ๐Ÿ’ช

  • Added search functionality to NeoDropdownField (Including an empty state)
  • Added sticky header functionality to NeoDropdown
  • Added icon and suffix support to NeoTextField
  • Improved animation curves of NeoToggleSwitch
  • Added keyboardType, inputFormatters, errorText, autofillHints, onSubmitted and maintainFocusOnSubmit properties to NeoTextField
  • Weโ€™ve completely overhauled the way overlays work
  • Improved the docs
0.3.0
22-09-2024

0.3.0

This is a big pre-release with a lot of changes. We kind of forgot to keep track of changes so this is a bit rough. ๐Ÿ˜ตโ€๐Ÿ’ซ

New ๐Ÿš€

  • NeoSidebarButton A button widget specifically designed for the use in sidebars
  • NeoHaptics A system that provides haptic feedback on iOS (Also works with Apple Pencil!)
  • NeoSidebar
  • NeoSafeArea A widget that ensures content is not obstructed by system UI
  • NeoToggleSwitch
  • NeoCheckbox
  • NeoLogger A system that provides a better debugging experience
  • NeoBadge A widget designed to display status information or tags, for instance
  • NeoDivider A widget that can be used to separate content
  • NeoTooltip A widget that can be used to display information on hover over a trigger
  • NeoTextField A widget that can be used to input text
  • NeoDropdownSectionPrimitive
  • NeoFieldPrimitive
  • NeoListItemPrimitive
  • NeoDropdown
  • NeoDropdownMenuSection A section of a dropdown menu
  • NeoDropdownMenuItem A single item in a dropdown menu (Used in NeoDropdownMenuSection)
  • NeoDropdownFieldSection A section of a dropdown field
  • NeoDropdownFieldItem A single item in a dropdown field (Used in NeoDropdownFieldSection)

Improvements ๐Ÿ’ช

  • Improved the theming system
  • Improved NeoButton
0.2.0
28-05-2024

0.2.0

New ๐Ÿš€

  • Added primary, filled, outline and ghost variants for the NeoButton
  • Replaced the font Geist with Inter. This is now the default font for Neo
  • Added more (and renamed some) colors, textstyles, radii, spacings and durations

Improvements ๐Ÿ’ช

  • Made the default text blue and strikethrough so itโ€™s obvious where a textstyle should be added
0.1.0
25-04-2024

0.1.0

New ๐Ÿš€

  • Added NeoInitializer widget. A utility widget designed to streamline the initialization process of the Neo framework. This widget manages crucial startup tasks, ensuring that the environment is properly set up before any UI components are loaded
  • Added Geist and Geist Mono fonts. These are now the default fonts for Neo
0.0.1
25-04-2024

0.0.1

The first pre-release of Neo is here! ๐ŸŽ‰ This is just the beginningโ€”our starting line. With this release, we lay the groundwork for a future where our developers can build beautiful apps incredibly fast. Hereโ€™s to the journey ahead! ๐Ÿป

New ๐Ÿš€

  • NeoApp widget. This will act as the root of the app and manage everything
  • NeoButton widget
  • Initial release of the Neo theming system, including:
    • Basic light and dark theme support
    • Dynamic theme switching based on system settings and user preferences
    • Basic color, radii and spacing settings in NeoTheme class
Last modified on November 21, 2025