npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

react-native-platform-components

v1.5.0

Published

Native UI components for React Native, the real platform widgets on both iOS and Android: TextField, DatePicker, ContextMenu, SelectionMenu, SegmentedControl, TabBar, NavigationRail, Button, ButtonGroup, FloatingActionButton, FloatingToolbar and LiquidGla

Downloads

5,872

Readme

react-native-platform-components

npm version npm downloads CI license

Native TextField, DatePicker, ContextMenu, SelectionMenu, SegmentedControl, TabBar, NavigationRail, Button, ButtonGroup, FloatingActionButton, FloatingToolbar and LiquidGlass for React Native. Every component is the real platform widget on both iOS and Android (UIKit on iOS, Material 3 Expressive on Android), behind one typed, declarative API. No JavaScript re-implementations.

npm install react-native-platform-components
import { SegmentedControl } from 'react-native-platform-components';

<SegmentedControl
  segments={[
    { label: 'Day', value: 'day' },
    { label: 'Week', value: 'week' },
  ]}
  selectedValue={range}
  onSelect={setRange}
/>;

That renders UISegmentedControl on iOS and Material 3 segmented buttons (MaterialButtonToggleGroup) on Android. The library needs the New Architecture: React Native 0.81+, or Expo SDK 54+ with a dev client (not Expo Go). See Installation and the documentation site.

Components

| Component | iOS | Android | Instead of | | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | | TextField | UITextField / UITextView, with Writing Tools and the iOS 17–18 text traits | Material 3 TextInputLayout: outlined or filled, floating label, supporting text, counter | TextInput (a bare EditText on Android); react-native-paper (drawn in JavaScript) | | DatePicker | UIDatePicker, modal or embedded | MaterialDatePicker / MaterialTimePicker, or the AppCompat dialogs | @react-native-community/datetimepicker (no Material 3 pickers) | | SelectionMenu | System menus | Material exposed dropdown or Spinner | @react-native-picker/picker (wheel or dialog, no menu) | | ContextMenu | UIContextMenuInteraction | PopupMenu | zeego (through two more native packages) | | SegmentedControl | UISegmentedControl | Material 3 Expressive connected buttons, or classic segmented buttons | @react-native-segmented-control/segmented-control (JavaScript on Android) | | TabBar | UITabBar, the floating Liquid Glass bar on iOS 26 | Material 3 navigation bar | React Navigation's bottom tabs (JavaScript); react-native-bottom-tabs (tied to its navigator) | | NavigationRail | A column of tab-style UIButtons (iOS has no rail; use TabBar on iPhone) | Material 3 Expressive NavigationRailView: header, badges, menu gravity, expanded rail | React Navigation's drawer or a custom view (JavaScript) | | Button | UIButton configurations, Liquid Glass variants on iOS 26 | Material 3 Expressive MaterialButton: five sizes, shape morph | react-native-paper (Material 3, not Expressive, in JavaScript) | | ButtonGroup | A row of UIButtons with a "…" overflow menu; SplitButton: a button and a chevron UIMenu button | Material 3 Expressive button groups, single or multiple selection, overflow menu; MaterialSplitButton | react-native-paper segmented buttons (JavaScript) | | FloatingActionButton | A round prominent UIButton, Liquid Glass on iOS 26 (iOS has no FAB) | Material FloatingActionButton / ExtendedFloatingActionButton: four sizes, shrink on scroll | react-native-paper FAB (drawn in JavaScript) | | FloatingToolbar | Liquid Glass capsule on iOS 26, blur before | Material 3 Expressive FloatingToolbarLayout | A custom view | | LiquidGlass | UIGlassEffect on iOS 26+; LiquidGlassContainer merges and morphs it (UIGlassContainerEffect) | A fallback View | @callstack/liquid-glass, expo-glass-effect |

One package and one API shape: platform-only props go under ios={{ }} and android={{ }}, with Fabric + Codegen typed bindings, an Expo config plugin and TypeScript, instead of four or five packages with their own conventions, install steps and upgrade cadences.

Have a component request? If there's a native UI component you'd like to see added, open an issue describing the component and its native APIs on iOS and Android.

Using it in a shipped app? Open a PR to list it here.


Web

Connect your existing web UI through PlatformComponentsProvider: register typed web adapters once, then keep the same component imports, props and callbacks in shared screens. Override only the controls you need; the others keep the existing web fallbacks. iOS and Android continue using their native widgets.

See the web integration guide for setup, adapter examples, field refs and current fallback limitations.

Installation

npm install react-native-platform-components
# or
yarn add react-native-platform-components

iOS: cd ios && pod install. Nothing else to configure.

Android: nothing to configure. The components work with the default AppCompat app theme; give the app a Material 3 theme to have SegmentedControl and the Material pickers use your colors. See Android Theme Configuration.

Expo: needs a dev client or EAS Build (native code, so not Expo Go). The config plugin sets up the Material 3 theme for you:

{
  "expo": {
    "plugins": [
      [
        "react-native-platform-components/app.plugin",
        { "android": { "theme": "material3" } }
      ]
    ]
  }
}

Either form of the reference works: react-native-platform-components/app.plugin as above, or the bare package name.

npx expo install react-native-platform-components
npx expo prebuild
npx expo run:ios   # or run:android

The library is built for the New Architecture (Fabric + Codegen) and does not support the old architecture.

Compatibility:

| Platform | Minimum | | ------------ | --------------------------------------------------------- | | React Native | 0.81 with the New Architecture enabled | | Expo SDK | 54, with a dev client or EAS Build (not Expo Go) | | React | 19 | | iOS | 15.1 (LiquidGlass needs iOS 26) | | Android | API 24 (Android 7.0); Material Components 1.14 is bundled |

React Native 0.81 / Expo SDK 54 is the supported minimum. CI builds that combination with both Xcode 26 and Xcode 16.4; Liquid Glass is compiled out when the iOS 26 SDK is unavailable. Android is also built against React Native 0.76 in CI to check native compatibility below the supported minimum.

Full details: Installation.

Documentation

Everything else lives on the documentation site:

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT


Author

Andrew Tosh — Santa Barbara, California

Full-stack developer with deep experience across entertainment and defense industries, specializing in simulation, visualization, and cross-platform mobile development. Technical focus areas include React Native, Rust, C++, real-time 3D visualization, and game engine technologies.

Available for contract work — Always interested in connecting with new clients for mobile development, visualization systems, and related projects. Hit me up at [email protected].

LinkedIn · JarX Concepts