Releases: conceptadev/mix
1.0.0-beta.1
1.0.0 Beta is here!
Hello everyone! Today, I am thrilled to announce the deployment of the beta version of Mix, along with a brand-new website: https://www.fluttermix.com.
But first, let's delve into the journey behind this release, our key decisions, and why we are so excited about it.
Why Mix
Mix emerged from a clear challenge I encountered while building apps in Flutter. Using Material, you could create beautiful and impressive widgets. However, customizing these widgets to move away from the Material look or to gain more control over their styling introduced significant hurdles, especially when developing a component or UI library.
The challenge extended beyond mere code boilerplate. It encompassed several aspects:
- Separation of Visual Semantics and Business Logic: Achieving a clear distinction between these two was crucial.
- Widget Composition and Subclassing: This became complex when making minor visual semantic changes.
- Maintaining Styling Consistency:
MaterialTheme
is fantastic but lacks definitions for common style primitives essential for a design system, like spacing, radii, breakpoints, etc. This gap is evident in concepts like Theme UI and Styled System. - Style Composability: We aimed for a system where visual semantics are not just flexible and easily composable but also extendable. This includes APIs supporting styling variations and context "reactive" styles implemented without intertwining with business logic.
Initial Feedback of Mix
Mix started as a solution to a personal challenge but soon saw adoption among companies and developers needing robust, customized widgets as part of a consistent design system.
However, at version 0.0.7, Mix had some incomplete concepts, particularly in supporting the Flutter ecosystem, like third-party widgets and advanced animations. The API also fell short of Flutter developers' expectations of semantic consistency.
What's New?
We've deprecated many utilities and APIs, a testament to Mix's effectiveness in solving key issues. This allowed us to retire certain utilities seamlessly, letting the community step in with custom solutions.
- Consistent APIs: They align more closely with Flutter semantics. While not always a direct match, the APIs are intuitive for those familiar with Flutter.
- Rewritten Utility API: We're especially proud of this overhaul. The styling API is now more user-friendly, with nested methods offering enhanced control, including extensions for custom use.
- Support for Existing Widgets: Integrating Mix with existing widgets is now easier, thanks to the revamped Decorators API and the introduction of custom styling through Recipes or Specs.
- Improved Test Coverage: We've significantly enhanced test coverage and API stability (though we're still in Beta).
- Performance Enhancements: While Mix was already efficient, we've made further improvements. Excitingly, we plan to eliminate "all" runtime overhead with upcoming Dart features like macros.
Using Mix in Production?
If you're using Mix in production and need help with migration, or if you have specific challenges you wish Mix could address, please reach out via DM on Twitter @leoafarias.
I also want to thank the numerous contributors for their invaluable feedback, ideas, suggestions, and input that have shaped Mix.
We have also created a simple Migration Guide, however you should just follow the deprecation notices.
Contributors
Full Changelog: Mix v1.0.0-beta.1