Skip to content
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

Ensure XAML controls can be hosted within a Fabric app's Composition tree #11907

Closed
Tracked by #12042
chrisglein opened this issue Jul 18, 2023 · 1 comment
Closed
Tracked by #12042
Labels
Area: Fabric Support Facebook Fabric enhancement New Architecture Broad category for issues that apply to the RN "new" architecture of Turbo Modules + Fabric Workstream: Module Support Module developers have the requisite tooling and clear path for adding windows support to modules.
Milestone

Comments

@chrisglein
Copy link
Member

Summary

The core components for Windows' Fabric rendering are done with Composition elements (the layer underneath XAML). However, many more complicated controls (e.g. a DatePicker) would preferably bring forward the fully featured WinUI equivalents. XAML can be hosted in any app. We need to validate this mechanism works in a Fabric app, and what the implications are for module authorship. Furthermore we need to track whether HWND-hosted XAML islands are the best option here and whether more efficient ways to include the rich XAML controls are possible.

Motivation

There is substantial investment in the XAML control set with rich support for accessibility, respect for system themes, native performance, and they express the Fluent design language. Plus as any of these are improved in the future, we want the RNW versions to benefit automatically. As such, hosting XAML controls is very important to RNW having rich support on Fabric.

Basic Example

Some examples:

Doesn't need to map to a XAML element:

  • Pressable
  • Text
  • TextInput

Borderline could be a XAML element, could be replicated with primitives in JS or recreated with composition:

  • ActivityIndicator
  • CheckBox
  • ProgressView
  • Slider
  • Switch
  • WebView

Would strongly prefer as a XAML element:

  • DateTimePicker

A good measure here is: Does a Fluent JS control exist? If so, the native control may not be needed. If not, how complicated is the control to replicate?

Open Questions

No response

@chrisglein chrisglein added enhancement Area: Fabric Support Facebook Fabric labels Jul 18, 2023
@microsoft-github-policy-service microsoft-github-policy-service bot added the Needs: Triage 🔍 New issue that needs to be reviewed by the issue management team (label applied by bot) label Jul 18, 2023
@chrisglein chrisglein added this to the Backlog milestone Jul 31, 2023
@chrisglein chrisglein removed the Needs: Triage 🔍 New issue that needs to be reviewed by the issue management team (label applied by bot) label Jul 31, 2023
@marlenecota marlenecota modified the milestones: Backlog, Next Oct 24, 2023
@jonthysell jonthysell added the New Architecture Broad category for issues that apply to the RN "new" architecture of Turbo Modules + Fabric label Mar 7, 2024
@chrisglein chrisglein modified the milestones: Next, Backlog May 8, 2024
@chiaramooney chiaramooney added the Workstream: Module Support Module developers have the requisite tooling and clear path for adding windows support to modules. label Oct 4, 2024
@chrisglein
Copy link
Member Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: Fabric Support Facebook Fabric enhancement New Architecture Broad category for issues that apply to the RN "new" architecture of Turbo Modules + Fabric Workstream: Module Support Module developers have the requisite tooling and clear path for adding windows support to modules.
Projects
Status: Done
Development

No branches or pull requests

4 participants