Description
This issue is a hub for the various internal workstreams underway to bring the current "Paper" implementation of React Native on Windows (RNW) to be replaced with a Fabric implementation. For information for how to consume this, start here.
About Fabric
Fabric is Meta's new rendering system for React Native, designed to share more rendering logic cross-platform in C++. RNW's existing "Paper" renderer is built on XAML, with various parts dropping down into native Composition as need be; the new Fabric renderer targets Composition from the start, but with the ability to host XAML islands within.
Apps on this new architecture are Win32 by default (this is a change from the Paper architecture where apps were UWP by default). The move away from UWP was a decision made to stay in alignment with WinAppSDK and WinUI3 which support Win32 apps (See here for more information). For our customers with UWP RNW apps, we will help with migration instructions once we shift support to Fabric as the default experience.
Can I Try It?
Yes! Start here. Starting with version 0.76 we are ready for folks to preview Fabric on Windows, but we know it's not ready for everyone's needs. Be warned that there are still gaps in both the functionality and the developer experience. Soon we expect to switch Fabric to be the default experience for new apps (but Paper will remain available as a compatibility fallback for some time).
Sticking to finalized releases is the best plan for most, but if you are an early adopter who is comfortable with an unpolished experience and wants to try intermediate builds, you can try that out here. However, understand that documentation will be thin, and please consult the below lists for what is not yet implemented before making any bug reports.
Milestones
Milestone | Milestone Nickname | Milestone Description |
---|---|---|
☑️ M0 | Proof of Concept |
|
☑️ M1 | Experimental |
|
☑️ M2 | 80% Parity and Accessibility |
|
🔜 M3 | Ready for Modules |
|
🔜 M4 | New Default (Fabric now officially in support) |
|
⬜ M5 | Parity with Paper |
|
⬜ M6 | Deprecate Paper |
|
Host Component Parity
(this table last updated April 2025, more detail available through logged issues on GitHub)
Priority | Component | Available | Properties |
---|---|---|---|
0 | View | ✅ | 98% |
0 | Text | ✅ | 86% |
0 | Image | ✅ | 100% |
0 | TextInput | ✅ | 59% |
1 | ScrollView | ✅ | 44% |
1 | Modal | ✅ | 64% |
2 | ActivityIndicator | ✅ | 100% |
2 | Switch | ✅ | 100% |
2 | RefreshControl | 🟥 | 28% |
Overall, if you include inherited View props and everything, Fabric is currently at 77% parity relative to Paper.
Host Components are the core RN primitive components directly backed by native UI. This table tracks our progress to reach parity in Fabric (Composition) with our Paper (XAML) implementation. See the parity tracking issue here
Paper Parity
Note that Paper itself never reached 100% parity. So 100% completion in the table above represents reaching 100% of what Paper accomplished, which is represented here:
Component | Completed % |
---|---|
View | 79% (116/147) |
Text | 72% (111/155) |
Image | 77% (151/196) |
TextInput | 72% (165/230) |
ScrollView | 69% (143/208) |
Modal | 57% (41/72) |
ActivityIndicator | 78% (117/150) |
Switch | 79% (121/154) |
RefreshControl | 74% (116/156) |
Accessibility and Test Coverage
You can track the state of these important aspects here:
Other key issues
- Host Components in RNW have parity between Paper and Fabric renderers #11135
- Migrate from
react-native-windows-init
toreact-native init-windows
for new RNW projects #11920 - Enable creation of a new Fabric app from template via the CLI #11908
- Make Hermes the default JS engine #6136
- Ensure XAML controls can be hosted within a Fabric app's Composition tree #11907
- Modal component parity for Fabric #11157
- Migrate (or fork) samples from Paper to Fabric react-native-windows-samples#862
- Migrate Supported Community Modules to Fabric #12027
- New apps created against 0.77+ should default to the new architecture #13683
- Enable creation of a new Fabric app from template via the CLI #11908
- Gallery on Fabric react-native-gallery#384
Metadata
Metadata
Assignees
Labels
Type
Projects
Status