Features
Dynamic UI
Build interfaces that adapt and evolve at runtime with declarative XML markup.
- XML-Based Markup Language — Define UIs declaratively using XML instead of imperative Dart code
- Reusable UI Fragments — Modular, composable components with nested inclusion and parameter passing
- Runtime Loading & Inflation — Parse and inflate XML fragments dynamically at runtime
- Powerful Expression Language — Evaluate expressions with operators, 60+ built-in functions, and custom logic
- Dynamic Flow Control — Conditionals, loops, and variable declarations directly in markup
- IDE Integration — Code completion, validation, and documentation tooltips via generated XML schema
State Management
Keep your UI in sync with your data through reactive patterns and clean architecture.
- Controller Architecture — Separate business logic from UI with lifecycle management and automatic dependency binding
- Reactive Components — Automatic UI updates via
ValueListenerandEventListener - Dependencies System — Flexible data storage with dot/bracket notation, global data sharing, and change listeners
- Dependency Scoping — Control data isolation with new, copy, inherit, or auto scoping strategies
- Event System — Loosely-coupled cross-component communication with typed events and payloads
Data Management
Transform, validate, and manage application data.
- Data Modeling — Structured models with property transformers and null safety
- Data Transformation — Map source structures to target models with
PropertyTranslation - Type Conversion — Extensible converters for primitives,
DateTime,Color,Duration, and custom types - Instance Management — Single and keyed instance patterns to prevent duplicate objects
Resource Management
Centralize and optimize your app's assets and resources.
- Fragment Caching — Automatic XML caching for improved performance
- Resource Externalization — Centralized strings, colors, integers, doubles, and booleans in XML value files
- Dynamic Routing — Map paths and route names to fragments, Navigator pages, or callback-driven views
Code Generation
Automate the tedious parts and focus on building great UIs.
- Auto-Generated Inflaters — Type-safe widget bindings from simple Dart specifications
- Schema Generation — XML schemas for IDE validation and completion
- Controller Registration — Automatic factory generation with auto-discovery
- Icon Registration — Generate icon lookups from specifications
Cloud Delivery
Push UI updates to your users without app store review cycles.
- Server-Driven UI — Load fragments and values from XWidget Cloud's content server at runtime
- Channel-Based Publishing — Deploy once, test on staging, publish the same revision to production; instant rollback
- Verified Caching — Immutable, SHA-256-verified bundles with automatic cache validation
- Key Rotation — Rotate project keys with configurable grace periods
- CLI Management — Manage workspaces, projects, channels, and deployments from the command line
Analytics
Understand how your UI performs in production. Analytics are tracked automatically — no code changes required.
- Automatic Tracking — Renders, downloads, errors, and navigation transitions tracked out of the box
- Navigation Flow Analysis — See how users navigate between pages with transition counts and timing
- Error Monitoring — Track fragment render failures and download errors with message details
- Multi-Dimensional Filtering — Slice data by channel, version, platform, locale, and country
- CLI Queries — Query analytics data with configurable time ranges and aggregation intervals
Flexibility
Use XWidget alongside any Flutter widget — built-in or third-party.
- Use Flutter Widgets — Full access to the entire Flutter widget catalog
- Use Third-Party Widgets — Include widgets from any Flutter package by adding them to your inflater spec
- Use Custom Widgets — Create and register your own components with
@InflaterDef - Mix and Match — Use XWidget for part of your app alongside traditional Flutter code