Skip to main content
1.5.0
Latest
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
Pre-release
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
Pre-release
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
Pre-release
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
Pre-release
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
Pre-release
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
Pre-release
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
I