microsoft / microsoft/fluentui-react-native
Components workstream
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1.4k
- Forks
- 179
- Avg merge
- 16h 17m
- Merged PRs (30d)
- 30
Description
Goal
Make packages/agentic/components trustworthy for beta adoption and eventually
production use. A consumer should be able to tell which components are ready,
every component should follow the same React Native contract and test model, and
the remaining Fluent catalog should be delivered in dependency order with real
macOS and Windows evidence.
Status
In progress. Three of nine direct work items are closed; six remain open.
PR #4296
completed the spec-system foundation and a substantial implementation-alignment
pass:
- Replaced copied web-oriented source specs with independently authored React
Native contracts backed by a pinned Flex Marketplace release, immutable x3
provenance, source locks, local contract validation, and authenticated drift
reporting. This closes #4252. - Added
TabListwith controlled and uncontrolled selection, roving focus,
orientation-aware keyboard navigation, disabled-item skipping, and native set
metadata. There are now 19 reviewed local component contracts. - Fixed ten component-local defects and four shared or parent-infrastructure
gaps, including focus modality and phase-locked shared animation behavior. - Preserved repaired divergence IDs as resolved history. Ten reviewed
divergences remain deferred: four need platform or interaction validation and
six need separately reviewed public API decisions. - Passed the complete uncached repository graph after merging current
main
(165 Lage tasks).
The FURN-only primitive boundary
(#4250) and
Callout platform inconsistencies
(#4291) are
also closed.
What is left
- Define and publish the component readiness model and initial assessment
(#4251). - Finish the uniform component-test contract and accessibility conformance
registry (#4216,
#4214). - Resolve Button versus ToggleButton API ownership before generating
ToggleButton (#4215). - Complete Fabric FocusZone for macOS and React Native Windows while
preserving Win32 Paper behavior
(#4217). - Reconcile the missing-component catalog with the pinned 49-component release,
the current 52-entry candidate catalog, and the newly implemented TabList,
then deliver the remaining waves
(#4273). - Record real macOS and React Native Windows Fabric keyboard, focus, and
screen-reader evidence for every component promoted to beta.
Work items
| Status | Issue | Outcome or remaining work |
|---|---|---|
| Open | #4214 - Accessibility conformance suite | Add the typed applicability registry and shared conformance runner across exported components. |
| Open | #4215 - Button and ToggleButton alignment | Decide selected state, shape, icon placement, and ownership of toggle behavior. |
| Open | #4216 - Component tests | Define and enforce uniform type, behavior, snapshot, and platform coverage. |
| Open | #4217 - Fabric FocusZone | Complete macOS and Windows Fabric support and preserve the Win32 Paper path. |
| Done | #4250 - Primitive boundary | FURN-only primitive ownership and publication boundary settled. |
| Open | #4251 - Readiness model | Persist objective readiness levels and prevent promotion above available evidence. |
| Done | #4252 - Spec patterns | Plugin-first React Native contract workflow merged in PR #4296. |
| Open | #4273 - Missing components | Refresh the rollup and deliver the remaining catalog in dependency order. |
| Done | #4291 - Callout platform inconsistencies | Platform inconsistency work completed. |
Beta exit criteria
- The component contract source is pinned, provenance is recorded, and
fork-safe validation plus authenticated drift reporting are available. - All currently implemented components have reviewed local React Native
contracts, usage guidance, and explicit web divergences. - Every exported primitive has an explicit ownership and contract policy.
- Every exported component and primitive satisfies one enforced test
coverage contract on the supported test platforms. - Every exported higher-order component passes the shared accessibility
conformance suite. - Every exported component carries a consumer-visible readiness level
computed from objective evidence. - Button and ToggleButton have non-overlapping approved contracts.
- FocusZone works on macOS Fabric and React Native Windows Fabric, and its
Win32 Paper coverage remains green. - The refreshed wave 1 and wave 2 catalog is implemented at beta readiness
or has an evidence-backed blocker. - Every beta-marked component has documented macOS and React Native Windows
Fabric validation.
Production exit criteria
- Every component in the approved catalog is production-ready or explicitly
declined with rationale. - Readiness is CI-gated so a component cannot be marked above its evidence.
- Keyboard, focus, and screen-reader behavior is validated on every
supported desktop endpoint. - Local contract integrity fails CI; authorized source drift is reviewed
against the immutable pin without requiring private source access in
public or fork CI. - Every replacement for a legacy component has migration guidance and an
explicit legacy-package disposition.
Agent context
Contract authority
Use this order of authority:
- The pinned Flex Marketplace payload is the exact authoring input.
- The pinned x3 commit provides immutable design lineage.
- The reviewed local React Native
SPEC.mdis authoritative for FURN behavior,
usage, accessibility, and intentional web divergence. - Mutable Marketplace or x3 HEAD is candidate drift for review, not an
automatic contract update.
The merged source lock uses Marketplace commit
206c4996205b027f4d806ac4ac7366f1f0ab0d5a and x3 commit
334d3b82a08b610b0002fe922ce9b4dac4db64f2. Public and fork CI validate
committed contract metadata without reading private sources; authorized
maintainers run source refresh and candidate-drift discovery.
Remaining reviewed divergences
Platform or interaction validation is still required for Input whole-field
hover/focus treatment, ProgressBar determinate animation, and Switch keyboard
activation. Separately reviewed API decisions remain for Avatar and Skeleton
focusability, Checkbox-owned native props, Button/ToggleButton separation,
Button icon positions, and Divider sizing.
Dependencies and sequencing
- Readiness depends on the enforced component-test and accessibility evidence.
- ToggleButton depends on the Button contract decision.
- Focus-orchestrated components depend on FocusZone or an explicitly approved
component-owned navigation model. - Overlay components should establish Popover, anchoring, light-dismiss, and
focus-trap foundations before dependent menus, dialogs, tooltips, and
teaching surfaces. - Platform readiness depends on the desktop-driver and Storybook work in
#4275. - Component styling depends on the unified theme contract tracked by
#4276.
Merged evidence
- PR #4296 - Pivot agentic component specs and align implementations
- PR #4295 - Add appearance-aware Flex theme sources
- PR #4294 - Infrastructure: land the public desktop driver
packages/agentic/components/SPEC-SOURCE.mdpackages/agentic/components/SPEC-MIGRATION.mdpackages/agentic/components/spec-source-lock.jsonpackages/agentic/components/scripts/spec-contracts/
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
This is an umbrella workstream covering the open issues #4214, #4215, #4216, #4217, #4251, and #4273 rather than one isolated change. Start by reading the relevant work item and the contract references in packages/agentic/components/SPEC-SOURCE.md, SPEC-MIGRATION.md, spec-source-lock.json, and scripts/spec-contracts/. Done means the selected work item is completed with the required evidence and the applicable beta or production exit criterion is satisfied.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react-native, typescript
- Domain
- desktop, frontend, mobile, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100