Skip to main content

Platform support

react-native-gpui targets macOS, Windows and Linux. This page lists what each platform provides, and the known limitations of the current release.

Supported platforms and architectures​

PlatformArchitecturesRenderer backend
macOSarm64, x64Metal
Windowsx64, arm64DirectX
Linuxx64, arm64Vulkan, on Wayland and X11

Prebuilt copies of React Native's C++ runtime exist for every platform and architecture above, so a first build does not compile the runtime. See Prebuilt runtime. Pull-request CI covers macOS arm64, Windows x64 and Linux x64. The other architectures are built by the release workflows only.

Platform.OS is macos, windows or linux.

Desktop features​

Check these at run time with capabilities() instead of assuming them.

FeaturemacOSWindowsLinux
Application menuSystem menu barIn-window menu barIn-window menu bar
Context menusNative or customNative or customNative or custom
Keyboard trigger for context menuNoMenu key, Shift + F10Menu key, Shift + F10
TrayMenu bar, anchored popoverNotification area, popover at the clickMenu only on GNOME; popover elsewhere
Title bardefault, transparent, hiddendefault, transparent, hiddenClient-side decorations when the compositor allows them
Traffic lights positionYesNoNo
Always on top, window positionCheck capabilities()Check capabilities()Check capabilities(); depends on the compositor
AccessibilityVoiceOverNot yet validatedNot yet validated
Packages.app, .dmgNSIS installer.deb, .AppImage

Known limitations​

  • IME. Text composition with an input method has not been tested.
  • Screen readers. VoiceOver on macOS is the supported path. Accessibility on Windows and Linux has not been validated.
  • Offscreen effects. A view with opacity below 1, a blur or dropShadow filter, a mixBlendMode or isolation is painted into a picture of its own. The picture is as large as the part of the view that is inside the window, so a blur does not take in content outside it. A scroll view that holds such a view does not cache its content between scroll frames, so it repaints on each one. Native surfaces are not part of the picture. See filter and mixBlendMode.
  • 3D transforms. perspective, rotateX and rotateY are drawn flat. See Transforms.
  • Share. On Windows Share opens the system share window and resolves when Windows asks for the content. Linux has no system share UI, so a dialog offers Copy and Email.
  • Scroll momentum. On macOS the momentum of a trackpad flick comes from the system and decelerationRate has no effect. On Windows and Linux the scroll view carries a touchpad flick on itself, at decelerationRate; a mouse wheel has none.
  • Pull to refresh. RefreshControl shows progress but has no pull gesture.
  • Keyboard events. On Windows Keyboard sends show and hide events for the touch keyboard, which have not been tested on touch hardware. macOS and Linux send none, so KeyboardAvoidingView lays out as a plain View there.
  • Not implemented. The fontVariationSettings text style, which React Native 0.87 does not have.
  • Accessibility settings. On Windows and Linux AccessibilityInfo reads the screen reader, reduced motion and high contrast settings, but these have not been checked against a real screen reader.
  • Border rendering. The fidelity of some border styles against React Native on mobile has not been fully compared.
  • Intl. It needs the operating system's ICU: Windows 10 1903 or later on Windows, libicu 64 or later on Linux. Without one it falls back to plain formatting. See JavaScript environment.
  • WebGPU and WebViews. There is no WebGPU surface and no web view component yet.
  • Over-the-air updates. They are not supported.
  • Signing. Windows installers are unsigned unless you provide a certificate. See Publishing.
  • Engine binaries. The Hermes binaries that the engine package downloads are not checksum-verified.
  • Node addons. Only pure Node-API addons that do not need Node built-in modules load. See Node addons.

Compatibility​

Every React Native 0.87 component and API is listed. "Supported" means it behaves as the React Native documentation describes; a link goes to this site when desktop adds or changes something, and to the React Native documentation otherwise.

Components​

NameStatusNotes
ActivityIndicatorSupportedDrawn in the style of each operating system.
ButtonSupported
FlatListSupported
ImagePartialA few mobile-only props have no effect.
ImageBackgroundSupported
KeyboardAvoidingViewPartialResponds to the Windows touch keyboard only.
ModalSupportedEscape and the window close button call onRequestClose.
PressableSupportedHover and hitSlop follow the pointer.
RefreshControlPartialShows progress; no pull gesture.
SafeAreaViewSupportedInsets for a title bar the app draws.
ScrollViewSupportedMomentum on Windows and Linux is simulated at decelerationRate.
SectionListSupported
StatusBarPartialDesktop windows have no status bar: it renders nothing.
SwitchSupportedDrawn in the style of each operating system.
TextSupportedfontVariationSettings is not in React Native 0.87.
TextInputPartialIME composition is untested.
TouchableHighlightSupported
TouchableOpacitySupported
TouchableWithoutFeedbackSupported
ViewSupported3D transforms are drawn flat.
VirtualizedListSupported
VirtualViewSupportedModes follow the position in the scroll view.

Props​

NameStatusNotes
experimental_accessibilityOrderNot supportedAccepted but not applied; focus order follows the view tree.
onAccessibilityMagicTapNot supportedAccepted but never dispatched.

APIs and hooks​

NameStatusNotes
AccessibilityInfoPartialScreen reader settings on Windows and Linux are unvalidated.
AlertSupportedA sheet on macOS, a dialog window on Windows and Linux.
AnimatedSupported
AppearanceSupported
AppRegistrySupported
AppStateSupported
BackHandlerSupportedMouse back button and Escape in a modal.
DevSettingsSupportedaddMenuItem lists items in the Dev Menu.
DimensionsSupported
EasingSupported
I18nManagerSupported
KeyboardPartialShow and hide events on the Windows touch keyboard only.
LayoutAnimationPartialNot covered by the end-to-end suite.
LinkingSupportedCustom URL schemes through the installer.
PanResponderSupported
PixelRatioSupported
PlatformSupportedPlatform.OS is macos, windows or linux.
PlatformColorSupported
ReactNativeVersionSupported
RootTagSupported
SettingsSupported
SharePartialThe system share UI on macOS and Windows; a Copy and Email dialog on Linux.
StyleSheetSupported
TransformsPartialperspective, rotateX and rotateY are drawn flat.
VibrationPartialTaps a Force Touch trackpad on macOS only.
useColorSchemeSupported
useWindowDimensionsSupported

Not part of desktop​

React Native APIs for mobile hardware and services have no desktop meaning and are not provided: screen orientation, status bar and navigation bar control, brightness, sensors, NFC, health and wearables platforms, widgets, in-app purchases and background tasks. Gate them at run time with Platform.OS, or with isDesktopAvailable. A tray-resident app takes the place of background tasks.