-
Notifications
You must be signed in to change notification settings - Fork 203
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prepare for soft-launch of new architecture #988
Changes from 2 commits
dda1325
ccc3244
283fa76
a97d5c2
47a3392
d7b10f3
17e40aa
2864c7b
8cce356
20f2cf9
235582f
07d9467
7b987d3
2ecb869
fb5a599
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,69 @@ | ||||||
--- | ||||||
id: new-arch | ||||||
TatianaKapos marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
title: New vs. Old Architecture | ||||||
--- | ||||||
|
||||||
React Native's [new architecture](https://reactnative.dev/docs/0.75/the-new-architecture/landing-page) has become the default with [version 0.76](https://reactnative.dev/blog/2024/10/23/the-new-architecture-is-here), bringing many framework improvements including the advanced rendering system [Fabric](https://reactnative.dev/architecture/fabric-renderer). While React Native for Windows isn't quite yet ready to make the new architecture the default on Windows, we're excited to offer a sneak peek of the hard work that’s gone into supporting it and allow developers to create applications using the new architecture. | ||||||
TatianaKapos marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
||||||
On Windows, the implementation of the previous "Paper" rendering architecture was based on UWP and WinUI/XAML. To meet the requirements of the new "Fabric" rendering architecture the Windows implementation now uses a direct WinAppSDK Scene Graph approach that can also host WinUI/XAML islands as needed. This evolution aims to unify rendering logic cross-platform in C++, aligning more closely with WinAppSDK and WinUI3 that favor Win32 applications. This means that apps built with the new architecture will default to Win32 rather than UWP, a change made to enhance compatibility with Windows’ latest frameworks. | ||||||
TatianaKapos marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
||||||
For developers using UWP with RNW, **UWP Paper applications remain fully supported**—there are no immediate plans to remove support. However, **UWP and Fabric together are currently not supported**. We will provide clear migration guidance for UWP Paper apps once Fabric support is fully established. At this stage, Fabric on Windows is best suited for early adopters comfortable with a work-in-progress experience, and the documentation may not yet be as comprehensive. For those willing to dive in, the new architecture offers a glimpse into the future of React Native Windows development. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
This is a good opportunity to include a list of things that work vs. things that don't. I covered this at React Universe, we can recycle some content (or create a new page that we keep up to date). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you have link to your talk in React Universe? I can go ahead and add some of the content to this page! |
||||||
|
||||||
## Creating a new Architecture Application | ||||||
|
||||||
1. Create a new React Native Application. | ||||||
TatianaKapos marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
||||||
```bat | ||||||
npx --yes @react-native-community/cli@latest init MyApp --version "latest" | ||||||
``` | ||||||
|
||||||
2. Add React Native Windows as a dependency. | ||||||
|
||||||
```bat | ||||||
yarn add react-native-windows@latest | ||||||
``` | ||||||
|
||||||
3. Add the New Architecture Template to your project. (Other templates can be found in [init-windows-cli](init-windows-cli.md#templates)) | ||||||
|
||||||
```bat | ||||||
yarn react-native init-windows --template cpp-app --overwrite --logging | ||||||
``` | ||||||
|
||||||
4. Run your App. | ||||||
|
||||||
```bat | ||||||
yarn react-native run-windows --logging | ||||||
``` | ||||||
|
||||||
## Development Progress | ||||||
|
||||||
Our work on React Native Windows' new architecture follows a series of milestones designed to guide our development priorities. Currently, our focus is on achieving full API parity and improving accessibility features. **Community modules are not yet fully supported in this soft launch phase**, so most, if not all, modules will not be compatible with new architecture applications at this stage. | ||||||
|
||||||
To track real-time progress and specific milestones, visit our [Fabric for React Native for Windows Issue](https://github.com/microsoft/react-native-windows/issues/12042). This page is regularly updated with our latest development goals, roadmap items, and areas we’re actively working on. We encourage developers to check there for the latest on what’s available, what’s in progress, and what’s coming next. | ||||||
|
||||||
## Work in Progress | ||||||
|
||||||
As this is a soft launch of our new architecture, you may encounter some bumps and challenges along the way. We've already logged many issues tracking properties and features that are on our to-do list, but if you come across significant concerns that aren’t yet covered, feel free to open an issue in our [repo](https://github.com/microsoft/react-native-windows/issues). You can also leave comments on existing issues to help us prioritize what to tackle first! | ||||||
TatianaKapos marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
||||||
## Components | ||||||
|
||||||
The new architecture introduces significant updates. By moving away from XAML, we gain the flexibility to incorporate components that weren’t previously available and reduce technical debt from legacy XAML components. Below is a list of components we plan to support in the new architecture, as well as those we are looking to deprecate. For developers currently using Flyout or Popup, we hope they’ll find Modal a suitable alternative. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we have a guide that helps with the migration from Flyout/Popup to Modal? Is it truly a 1:1 drop-in replacement? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think we are in a spot where we have a migration plan for Flyout/Popup, there's still a lot of properties/events missing on Modal and discussions on windows-specific properties that should be included. It won't be a 1:1 replacement though as the properties are different. Will add that for future-work though!
TatianaKapos marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
||||||
### Supported Components | ||||||
|
||||||
Each component below links to the corresponding issue label in our GitHub repo that tracks the progress of its parity with the new architecture | ||||||
|
||||||
- [View](https://github.com/microsoft/react-native-windows/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Area%3A%20View%22%20%20label%3A%22Workstream%3A%20Component%20Parity%22%20label%3A%22Area%3A%20Fabric%22%20) | ||||||
- [Text](https://github.com/microsoft/react-native-windows/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Area%3A%20Text%22%20%20label%3A%22Workstream%3A%20Component%20Parity%22%20label%3A%22Area%3A%20Fabric%22%20) | ||||||
- [Image](https://github.com/microsoft/react-native-windows/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Area%3A%20Image%22%20%20label%3A%22Workstream%3A%20Component%20Parity%22%20label%3A%22Area%3A%20Fabric%22%20) | ||||||
- [TextInput](https://github.com/microsoft/react-native-windows/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Area%3A%20TextInput%22%20%20label%3A%22Workstream%3A%20Component%20Parity%22%20label%3A%22Area%3A%20Fabric%22%20) | ||||||
- [ScrollView](https://github.com/microsoft/react-native-windows/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Area%3A%20ScrollView%22%20%20label%3A%22Workstream%3A%20Component%20Parity%22%20label%3A%22Area%3A%20Fabric%22%20) | ||||||
- [Modal](https://github.com/microsoft/react-native-windows/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Area%3A%20Modal%22%20%20label%3A%22Workstream%3A%20Component%20Parity%22%20label%3A%22Area%3A%20Fabric%22&page=1) | ||||||
- [ActivityIndicator](https://github.com/microsoft/react-native-windows/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Area%3A%20ActivityIndicator%22%20%20label%3A%22Workstream%3A%20Component%20Parity%22%20label%3A%22Area%3A%20Fabric%22%20) | ||||||
- [Switch](https://github.com/microsoft/react-native-windows/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Area%3A%20Switch%22%20%20label%3A%22Workstream%3A%20Component%20Parity%22%20label%3A%22Area%3A%20Fabric%22%20) | ||||||
- [RefreshControl](https://github.com/microsoft/react-native-windows/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22Area%3A%20RefreshControl%22%20%20label%3A%22Workstream%3A%20Component%20Parity%22%20label%3A%22Area%3A%20Fabric%22%20) | ||||||
|
||||||
### Deprecated Components | ||||||
TatianaKapos marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
||||||
TatianaKapos marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
- [Flyout](https://github.com/microsoft/react-native-windows/issues/11921) | ||||||
- [Popup](https://github.com/microsoft/react-native-windows/issues/11921) |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -9,6 +9,8 @@ Make sure you have installed all of the [development dependencies](rnw-dependenc | |||||
|
||||||
For information around how to set up React Native, see the [React Native Getting Started Guide](https://reactnative.dev/docs/getting-started). | ||||||
|
||||||
> **Interested in exploring the new architecture?** We are "soft-launching" our implementation of the new architecture. If you’d like to be an early adopter, check out the instructions in the [New Architecture Guide](NewArch.md) and discover new templates available in [init-windows-cli](init-windows-cli.md#templates). | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think "soft-launch" is purely internal, and perhaps "preview" is better? Checking with others.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. changed to preview in documentation! |
||||||
|
||||||
## Create a new React Native project | ||||||
|
||||||
Remember to call `@react-native-community/cli init` from the place you want your project directory to live. | ||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you rename to
new-architecture.md
to align with other file naming?