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

@rn-nui/switch

v0.1.6

Published

Native switches for React Native

Readme

@rn-nui/switch

Native switches for React Native with enhanced functionality. This component provides Material 3 switches on Android and uses the switch component provided by React Native for iOS.

Installation

npm install @rn-nui/switch

or

yarn add @rn-nui/switch

iOS Setup

No additional setup required for iOS. The component uses native iOS switches.

Android Setup

You'll need to override the theme of your app under /android/app/src/main/res/values/styles.xml to inherit from Material3.

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
      <!-- Customize your theme here -->
    </style>
</resources>

Expo Setup

There is no plugin for Expo yet. You'll need to manually edit the native files as described above.

Usage

import { Switch } from '@rn-nui/switch';

// Basic switch
<Switch value={isEnabled} onValueChange={setIsEnabled} />

// Customized switch with icon (Android only)
<Switch
  value={isEnabled}
  onValueChange={setIsEnabled}
  icon="outline_check_24"
  thumbColor={{
    false: '#f4f3f4',
    true: '#52796f'
  }}
  trackColor={{
    false: '#767577',
    true: '#81b0ff'
  }}
  iconColor={{
    false: '#6b7280',
    true: '#ffffff'
  }}
/>

API Reference

Properties

| Prop | Type | Platform | Default | Description | | --------------- | --------------------------------------------------------- | -------- | ----------- | ------------------------------------------------------------ | | value | boolean | Both | false | The value of the switch | | onValueChange | (value: boolean) => void | Both | undefined | Callback that is called when the user toggles the switch | | onChange | (event: SwitchChangeEvent) => void | Both | undefined | Callback that is called with the change event | | disabled | boolean | Both | false | If true, the user won't be able to toggle the switch | | thumbColor | { false: ColorValue \| null; true: ColorValue \| null } | Both | undefined | Color of the grip/thumb | | trackColor | { false: ColorValue \| null; true: ColorValue \| null } | Both | undefined | Color of the track when the switch is off/on | | icon | string \| undefined | Android | undefined | The Android drawable resource name for the icon on the thumb | | iconSize | number \| undefined | Android | undefined | Size of the icon | | iconColor | { false: ColorValue \| null; true: ColorValue \| null } | Android | undefined | Color of the icon when the switch is off/on | | outlineColor | { false: ColorValue \| null; true: ColorValue \| null } | Android | undefined | Color of the outline when the switch is off/on |

Events

onChange

Called when the user toggles the switch. The event object contains:

type SwitchChangeEvent = NativeSyntheticEvent<{
  target: number;
  value: boolean;
}>;
onValueChange

Called when the user toggles the switch with just the new boolean value.

Color Configuration

All color properties accept an object with false and true keys to specify colors for the respective switch states:

thumbColor={{
  false: '#f4f3f4',  // Color when switch is off
  true: '#52796f'    // Color when switch is on
}}

Note: The Switch provided by React Native only accepts a single color value for the thumb. You were required to change the thumb color based on the value of the switch. This library allows you to specify different colors for the thumb and track in both states and the library will handle switching between the two based on the value.

Android Icons

On Android, you can specify an icon to display on the switch thumb using the icon prop. The icon should be the name of a drawable resource in your Android project:

<Switch
  icon="outline_check_24"
  iconSize={24}
  iconColor={{
    false: '#6b7280',
    true: '#ffffff'
  }}
/>

Screenshots

| Android with icon | Android without icon | iOS | | ------------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------- | | | | |