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

@rabbitohs/amity-react-native-social-ui-kit

v4.0.0

Published

Social UIKit

Readme

Getting started

Our AmityUIKit include user interfaces to enable fast integration of standard Amity Social features into new or existing applications. Furthermore, our React Native UIKit supports integration with React Native CLI, providing you with a flexible experience to seamlessly integrate social features into your existing React Native application.

#Minimum Requirements

  • node 16
  • JDK 17.0.10
  • ruby 3.2.0
  • XCode 15

Try Sample app

This repository also includes a built-in sample app which you can use to test your code while customizing it, or even explore our UIKit features with just a few installations!

Run sample app with Native module

Use yarn

  1. Install packages
cd example
yarn
  1. Sample app is using firebase push notification. you need to setup firebase project by your own firebase project to get credentials.
  • Setup firebase project: https://console.firebase.google.com/ for react native android and ios.
  • Download google-services.json and GoogleService-Info.plist.
  • Copy and paste to /example/android/app/google-services.json and /example/ios/GoogleService-Info.plist.
  • More detail about push notification - https://docs.amity.co/amity-uikit/uikit-v4-beta/installation-guide/react-native#push-notification
  1. Configure your apiKey,apiRegion,apiEndpoint,userId,displayName,fcmToken in /example/src/App.tsx file(https://github.com/AmityCo/Amity-Social-UIKit-React-Native-CLI-OpenSource/blob/main/example/src/App.tsx) first before run the sample app.

  2. Go back to your root folder (cd ..) and Choose to run between iOS or Android

  3. Install modules and sync file

yarn
  1. Run sample app
yarn example ios

or

yarn example android

Installation

Here are the steps to install ui-kit together with another React Native project.

1. git clone https://github.com/AmityCo/Amity-Social-UIKit-React-Native-CLI-OpenSource.git
2. cd Amity-Social-Cloud-UIKit-React-Native-OpenSource
3. yarn or npm install
4. npm pack

This step will build the app and return amityco-asc-react-native-ui-kit-x.x.x.tgz file in inside the folder

Then, inside another project, Copy tgz file to your application folder where you need to use ui-kit:

1. yarn add ./amity-react-native-social-ui-kit-x.x.x.tgz
2. yarn add react-native-safe-area-context react-native-image-picker @react-native-async-storage/async-storage react-native-svg react-native-gesture-handler react-native-screens [email protected] react-native-create-thumbnail @react-native-community/netinfo @react-navigation/native \@react-navigation/native-stack @react-navigation/stack react-native-vision-camera react-native-push-notification \@api.video/[email protected] react-native-get-random-values react-native-rsa-native react-native-vlc-media-player [email protected] @react-native-community/[email protected]

iOS Configuration

In Pod file, add these lines under your target,

  pod 'SPTPersistentCache', :modular_headers => true
  pod 'DVAssetLoaderDelegate', :modular_headers => true
  $RNVideoUseVideoCaching = true

In XCode,

Set Minimum Deployments at least iOS 12.0

npx pod-install

Android Configuration

Build project gradle with your Android Studio

In android/build.gradle, add belows in in buildscript > ext

kotlinVersion = 1.7.0 and above compileSdkVersion = 34 buildToolsVersion = "34.0.0"

Add Camera permission (iOS)

Add following permissions to info.plist file (ios/{YourAppName}/Info.plist)

 <key>NSCameraUsageDescription</key>
 <string>App needs access to the camera to take photos.</string>
 <key>NSMicrophoneUsageDescription</key>
 <string>App needs access to the microphone to record audio.</string>
 <key>NSPhotoLibraryUsageDescription</key>
 <string>App needs access to the gallery to select photos.</string>

Add Camera permission (Android)

Add following permissions to AndroidManifest.xml file (android/app/src/main/AndroidManifest.xml)

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

Usage

import * as React from 'react';

import {
  AmityUiKitSocial,
  AmityUiKitProvider,
} from 'amity-react-native-social-ui-kit';

export default function App() {
  return (
    <AmityUiKitProvider
      apiKey="API_KEY"
      apiRegion="API_REGION"
      userId="userId"
      displayName="displayName"
      apiEndpoint="https://api.{API_REGION}.amity.co"
    >
      <AmityUiKitSocial />
    </AmityUiKitProvider>
  );
}

Using Specific Screens from UIKit

UIKit now supports importing and rendering individual screens. This gives you more control over how each screen is used in your app, making it easier to customize user flows and place screens exactly where you need them.

📦 Supported Screens

You can now import and use the following screens individually:

✅ Make sure your screen component is wrapped with AmityPageRenderer at the root level.

AmityPageRenderer is only required when using screen components. It is not needed for the AmityUiKitSocial component.

Usage

import * as React from 'react';
import config from './uikit.config.json';
import {
  AmityUiKitProvider,
  AmityUiKitSocial,
  AmityPageRenderer,
  AmityExploreComponent,
  PostDetail,
  CommunityHome,
} from 'amity-react-native-social-ui-kit';

export default function App() {
  return (
    <AmityUiKitProvider
      configs={config}
      apiKey="API_KEY"
      apiRegion="API_REGION"
      userId="userId"
      displayName="displayName"
    >
      <AmityPageRenderer>
        <CommunityHome defaultCommunityId={'communityID'} />
      </AmityPageRenderer>
    </AmityUiKitProvider>
  );
}

Using Specific Screens from UIKit

UIKit now supports importing and rendering individual screens. This gives you more control over how each screen is used in your app, making it easier to customize user flows and place screens exactly where you need them.

📦 Supported Screens

You can now import and use the following screens individually:

✅ Make sure your screen component is wrapped with AmityPageRenderer at the root level.

AmityPageRenderer is only required when using screen components. It is not needed for the AmityUiKitSocial component.

Usage

import * as React from 'react';
import config from './uikit.config.json';
import {
  AmityUiKitProvider,
  AmityUiKitSocial,
  AmityPageRenderer,
  AmityExploreComponent,
  PostDetail,
  CommunityHome,
} from 'amity-react-native-social-ui-kit';

export default function App() {
  return (
    <AmityUiKitProvider
      configs={config}
      apiKey="API_KEY"
      apiRegion="API_REGION"
      userId="userId"
      displayName="displayName"
    >
      <AmityPageRenderer>
        <CommunityHome defaultCommunityId={'communityID'} />
      </AmityPageRenderer>
    </AmityUiKitProvider>
  );
}

Customization

Our UIKit v4 supports customization in a single place by modifying a uikit.config.json file in related UIKit repository. This configuration file includes all necessary data to customize the appearance of each pages, components and elements that we allow to do customization. Note: uikit.config.json file should be in your project. Please kindly check in example project.

import * as React from 'react';
import {
  AmityUiKitSocial,
  AmityUiKitProvider,
} from 'amity-react-native-social-ui-kit';
import config from './uikit.config.json';

export default function App() {
  return (
    <AmityUiKitProvider
      configs={config} //put your customized config json object
      apiKey="API_KEY"
      apiRegion="API_REGION"
      userId="userId"
      displayName="displayName"
      apiEndpoint="https://api.{API_REGION}.amity.co"
    >
      <AmityUiKitSocial />
    </AmityUiKitProvider>
  );
}

Using Theme

Using the default theme

AmityUIKit uses the default theme as part of the design language.

Theme customization

Without customization, the UIKit already looks good. However, if you wish to customize the theme, you can declare changes to color variables by passing your own color codes to our uikit.config.json. Here is the code usage of how to customize the theme.

"preferred_theme": "default",
  "theme": {
    "light": {
      "primary_color": "#1054DE",
      "secondary_color": "#292B32",
      "base_color": "#292b32",
      "base_shade1_color": "#636878",
      "base_shade2_color": "#898e9e",
      "base_shade3_color": "#a5a9b5",
      "base_shade4_color": "#ebecef",
      "alert_color": "#FA4D30",
      "background_color": "#FFFFFF"
    },
    "dark": {
      "primary_color": "#1054DE",
      "secondary_color": "#292B32",
      "base_color": "#ebecef",
      "base_shade1_color": "#a5a9b5",
      "base_shade2_color": "#6e7487",
      "base_shade3_color": "#40434e",
      "base_shade4_color": "#292b32",
      "alert_color": "#FA4D30",
      "background_color": "#191919"
    }
  },

Dark Mode

The Dark Mode feature in our UIKit enhances user experience by providing an alternative visual style that is particularly beneficial in low-light environments. It's designed to reduce eye strain, improve readability, and offer a more visually comfortable interface. You can enable dark mode by just changing preferred_theme: "default" to the preferred_theme: "dark" in uikit.config.json

"preferred_theme": "dark" // change it to dark || light || default,
### Documentation


Please refer to our online documentation at https://docs.amity.co or contact a Ui-Kit representative at **[email protected]** for support.


Migration Guide to React Navigation v7

  1. Upgrade the following dependencies to the exact versions specified in the package.json of UIKit:

    • @react-navigation/native: x.x.x
    • @react-navigation/native-stack: x.x.x
    • @react-navigation/stack: x.x.x
    • react-native-screens: x.x.x
  2. Replace independent={true} in NavigationContainer with NavigationIndependentTree. This ensures proper navigation context isolation for nested navigators.

Before:

<NavigationContainer independent={true}>
  {/* Your navigators */}
</NavigationContainer>

After:

<NavigationIndependentTree>
  <NavigationContainer>{/* Your navigators */}</NavigationContainer>
</NavigationIndependentTree>

Please refer to full migration guide from official website for other breaking changes in your application

on AppDelegate - hiden firebase connect // [FIRApp configure]; // Temporarily disabled for testing on index.js - // import messaging from '@react-native-firebase/messaging';