react-native-windows-samples icon indicating copy to clipboard operation
react-native-windows-samples copied to clipboard

Add "API Parity" page equivalent for macOS

Open AgneLukoseviciute opened this issue 2 years ago • 4 comments

Suggestion

The page currently* titled "API Parity" is the only page that really discusses the components/APIs we support & how we're working to stay up to date with RN Core. This page is linked under "The Basics (Windows)" and links to the rnw repo for milestones, open issues etc., it would make sense to have something similar listed under the same section for macOS.

Location

The Basics (macOS)

AgneLukoseviciute avatar Dec 08 '21 20:12 AgneLukoseviciute

Many of our core contributors are taking some much needed vacation throughout December 2021. Thank you for being patient while we relax, recharge, and return to a normal responsiveness in January 2022. In the meantime feel free to continue to pose questions, open issues, and make feature requests - you just may not get a response right away.

ghost avatar Dec 08 '21 20:12 ghost

@HeyImChris How much difference is there from iOS to macOS as far as API implementation parity? What common questions and content would you want to feature here on the website?

chrisglein avatar Jan 06 '22 19:01 chrisglein

@HeyImChris How much difference is there from iOS to macOS as far as API implementation parity? What common questions and content would you want to feature here on the website?

At a high level, we try and keep macOS and iOS in as much parity as possible. If I were to try and categorize the issues, I'd start with the buckets of differences below. Views have the most differences by far, but various controls throughout the codebase may have an extra API here or there as we saw fit to add support for something.

As for common questions and content to feature here, could you provide a bit more context on what other platforms are providing? Or maybe we can sync up on Teams to review this. I do know that one of the most common issues I see people file is they're not aware that macOS operates nearly identically to iOS (e.g. you built an iOS control? you can just as easily build a macOS control). Maybe we could link the React-Native Build talks we gave that walk through some of the basics that I see get asked a lot.

Accessibility

  • RCTAccessibilityManager doesn't exist for macOS

Notifications

  • RCTPushNotificationManager

System Settings

  • macOS monitors changes to NSUserDefaults

iOS or macOS specific concepts

  • Device Orientation (iOS)
  • Vibration (iOS)
  • StatusBar (iOS)
  • Switches (iOS has tint color)
  • Menus (macOS)
    • RCTActionSheetManager
    • RCTDevMenu

Views (a lot of differences)

  • Accessibility (e.g. keyboarding through controls, key view loop management) (macOS)
  • Mouse interactions (clicking, hover, dragging, etc.) (macOS)
  • Rasterization (iOS)
  • General keyboard interactions/focus (macOS)
  • Tooltips (macOS)

HeyImChris avatar Jan 06 '22 20:01 HeyImChris

For context, here's the page for Windows (which I believe has some pending changes from the last month, but you get the gist): https://microsoft.github.io/react-native-windows/docs/next/parity-status

At times we've talked about documenting in detail the status of individual APIs. It was... a lot of work. Now the policy is more "if you find it doesn't work, open an issue", and the complete/incomplete status is represented as a category of labeled github issues. Less good for the website, but easier to keep up to date.

chrisglein avatar Jan 06 '22 23:01 chrisglein