You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make @fluentui-react-native/design the single modern theming contract for
agentic Fluent UI React Native components. Themes should be authored from Flex
tokens or legacy Fluent values, resolve appearance consistently across
platforms, preserve compatibility without forcing legacy code into modern
bundles, and have generated, reviewable defaults.
Status
In progress. Four of twelve direct work items are closed; eight remain open.
PR #4295
completed the central theme-source and appearance architecture:
Added FlexThemeReference, structured requested/resolved appearance axes, and
stable theme-state/token identity keyed by source revision and appearance.
Reworked ThemeProvider around one external-store source contract for nested
Flex and legacy themes without mutating author-owned values.
Made useThemeState().tokens the sole modern consumption path and removed the
temporary useFlexTokens API.
Kept legacy ThemeReference, ThemeProvider, ThemeContext, and useTheme
behavior compatible through lazy conversion boundaries.
Added schema-v2 forward and reverse token mappings with explicit collisions,
fallbacks, transforms, and omissions.
Migrated default, Android, Apple, Windows, macOS, iOS, and Win32 theme handling
to the structured appearance model.
Added macOS, Windows, and Win32 bundle scenarios proving that modern Flex and
modern legacy-source paths exclude reverse compatibility payloads.
This closes dynamic theme building
(#4264).
Package consolidation
(#4267),
high-contrast source consolidation
(#4265), and
mapping drift enforcement
(#4266,
PR #4287)
are also closed.
PR #4295 partially completes system appearance handling
(#4270).
The remaining Win32 Office native contract has no synchronous current-state
getter, so an appearance change while no consumer is subscribed cannot be
recovered until another native event. Host-theme string inference remains a
transitional fallback.
What is left
Generate Flex defaults from token sources, including reviewed
cross-appearance de-duplication
(#4263).
Document modern authoring, compatibility, migration, appearance, and update workflows.
Beta exit criteria
@fluentui-react-native/design owns the modern theme construction,
appearance, Flex-token, and styling contract.
A theme can be authored directly from Flex tokens and consumed without
first constructing a legacy Fluent Theme.
useThemeState().tokens is the sole modern token path; legacy theme
construction and reverse conversion are lazy compatibility capabilities.
Mapping consistency is CI-enforced and the x3 source revision has an
offline-safe pin, drift report, and update workflow.
High-contrast source processing is consolidated without changing
Windows/Win32 native color naming.
Flex default values are generated rather than maintained as color literal
tables.
Structured light, dark, and high-contrast resolution is complete on every
supported platform, including current-state recovery on Win32 Office.
Every supported resolved appearance has a reviewed token snapshot.
Storybook follows system appearance and renders a Flex-authored theme.
The design package and theming guides document the approved modern,
compatibility, and migration paths.
Production exit criteria
Runtime color derivation is an optional submodule verified against x3 and
absent unless imported.
Generated defaults de-duplicate shared values across appearances and
platforms, with measured bundle evidence.
Legacy Fluent token construction runs only when a legacy consumer requests
it; modern bundle scenarios enforce the boundary.
The Apple/macOS Flex theme matches an owner-approved specification.
The optional contrast submodule audits approved pairings, reports
unresolvable native colors explicitly, and remains tree-shakeable.
Deprecation and migration guidance exists for every compatibility layer.
Cross-platform package-cost budgets are promoted from warning/advisory
comparison to required reviewed gates.
Agent context
Public contract
Modern consumers use useThemeState() and read ThemeState.tokens.
Theme authors may supply an appearance-aware Flex source or a legacy Fluent
source through the unified provider boundary.
Legacy-to-Flex conversion is loaded only when modern consumers receive a
legacy source.
Flex-to-legacy conversion and complete legacy defaults are loaded only when a
legacy useTheme consumer requests them.
Compatibility modules must remain thin and must not become alternate sources
of theme truth.
Appearance caveats
Requested appearance and resolved appearance are distinct axes.
Structured colorScheme and isHighContrast values are preferred whenever a
native source supplies them.
Win32 Office currently exposes initial constants and events but no synchronous
current-state query. Preserve event-maintained state across subscribers until
that native contract changes.
x3 Flex themes define light/dark web behavior but no forced-colors or
high-contrast source. FURN therefore owns its native high-contrast adaptation
and must document that divergence.
Sequencing
Generated defaults and final Win32 appearance state unblock reviewed snapshot
parity.
Stable snapshots and source APIs unblock Storybook appearance coverage and
documentation.
Runtime color utilities establish the optional color-math boundary reused by
contrast auditing.
The Apple theme depends on stable dynamic sources, generated defaults, and
the Storybook macOS validation surface.
Package-cost enforcement is shared with #4275;
component adoption evidence is shared with #4274.
Goal
Make
@fluentui-react-native/designthe single modern theming contract foragentic Fluent UI React Native components. Themes should be authored from Flex
tokens or legacy Fluent values, resolve appearance consistently across
platforms, preserve compatibility without forcing legacy code into modern
bundles, and have generated, reviewable defaults.
Status
In progress. Four of twelve direct work items are closed; eight remain open.
PR #4295
completed the central theme-source and appearance architecture:
FlexThemeReference, structured requested/resolved appearance axes, andstable theme-state/token identity keyed by source revision and appearance.
ThemeProvideraround one external-store source contract for nestedFlex and legacy themes without mutating author-owned values.
useThemeState().tokensthe sole modern consumption path and removed thetemporary
useFlexTokensAPI.ThemeReference,ThemeProvider,ThemeContext, anduseThemebehavior compatible through lazy conversion boundaries.
fallbacks, transforms, and omissions.
to the structured appearance model.
modern legacy-source paths exclude reverse compatibility payloads.
This closes dynamic theme building
(#4264).
Package consolidation
(#4267),
high-contrast source consolidation
(#4265), and
mapping drift enforcement
(#4266,
PR #4287)
are also closed.
PR #4295 partially completes system appearance handling
(#4270).
The remaining Win32 Office native contract has no synchronous current-state
getter, so an appearance change while no consumer is subscribed cannot be
recovered until another native event. Host-theme string inference remains a
transitional fallback.
What is left
cross-appearance de-duplication
(#4263).
transitional inference when structured native state is reliable.
appearance (#4271).
(#4269).
compatibility paths
(#4272).
(#4261).
(#4268,
#4262).
Work items
Beta exit criteria
@fluentui-react-native/designowns the modern theme construction,appearance, Flex-token, and styling contract.
first constructing a legacy Fluent
Theme.useThemeState().tokensis the sole modern token path; legacy themeconstruction and reverse conversion are lazy compatibility capabilities.
offline-safe pin, drift report, and update workflow.
Windows/Win32 native color naming.
tables.
supported platform, including current-state recovery on Win32 Office.
compatibility, and migration paths.
Production exit criteria
absent unless imported.
platforms, with measured bundle evidence.
it; modern bundle scenarios enforce the boundary.
unresolvable native colors explicitly, and remains tree-shakeable.
comparison to required reviewed gates.
Agent context
Public contract
useThemeState()and readThemeState.tokens.source through the unified provider boundary.
legacy source.
legacy
useThemeconsumer requests them.of theme truth.
Appearance caveats
colorSchemeandisHighContrastvalues are preferred whenever anative source supplies them.
current-state query. Preserve event-maintained state across subscribers until
that native contract changes.
high-contrast source. FURN therefore owns its native high-contrast adaptation
and must document that divergence.
Sequencing
parity.
documentation.
contrast auditing.
the Storybook macOS validation surface.
#4275;
component adoption evidence is shared with
#4274.
Merged evidence
packages/agentic/design/src/theming/packages/agentic/design/src/tokens/mappings/apps/bundle-size