In-app support chat for React Native and Expo

Most support chats for React Native are native SDKs: a config plugin, keys in your app config, a new development build, and push set up on both platforms before the first message. Apparent's chat is plain JavaScript on top of the analytics SDK. Add one screen, and it works in Expo Go, in a dev build and in an over-the-air update.

Connect your app

14 days free. No card, no password.

HelpWe usually answer within a few hours

Today

The camera stays black when I tap Scan

Sorry! Turn on Camera in Settings, and the next update will ask for it properly.

That worked, thanks 🙏

Write a message
Their app, in its own colours
MariaNeeds you

GermanyiPhone · 2.1.3New today

Right before writing

  1. Home
  2. Scan
  3. Camera blocked
  4. Help

The camera stays black when I tap Scan

Sorry! Turn on Camera in Settings, and the next…Send
What you see in Apparent

Add it in three steps

  1. Install the SDK. Run npx expo install apparent-expo @react-native-async-storage/async-storage, and call Apparent.init once with your app id and key.
  2. Add the screen. Make a route, for example app/help.tsx, that shows ApparentChatScreen with your colour and font.
  3. Link to it. Add a "Chat with us" row to your settings or menu. Optionally show a badge with useChatUnread().

The screen

Everything it needs is in its props: theme, words (any language), onClose, and pickImage if you want photos.

import { ApparentChatScreen } from "apparent-expo/chat-screen";

export default function Help() {
  return (
    <ApparentChatScreen
      theme={{ accent: "#C67139", font: "Inter", radius: 14 }}
      onClose={() => router.back()}
    />
  );
}

Why no native code matters

  • It ships in an over-the-air update. People get the chat without a store review.
  • It works in Expo Go while you build, and in any dev build.
  • No config plugin, no Info.plist or AndroidManifest edits, no pod install.
  • Nothing to upgrade on its own: it comes with the analytics SDK.

Your app's look, the same tried layout

The chat looks the same in every app, so it's solid from the start, and you change only what makes it yours: accent colour, font, corner roundness (0 to 24), dark or light, background, and every word. Pass rtl for Arabic or another right-to-left language.

What you see when someone writes

  • Who wrote: their country, phone, app version and language.
  • What they did in the app right before writing, from Apparent's own events: the screens, the taps, the error they hit.
  • Whether they started using the app today.
  • A test phone is marked, so your own tries don't look like real people.

If you'd rather draw your own

Use Apparent.chat directly: subscribe(fn) for messages, send(text, image), markRead() and unread() for a badge. The docs list every call.

Apparent's page for an example app: a sentence about how it did, the key numbers, and highlights like a first sale in Japan.
An example app on Apparent. Open the live demo: every button works.

Questions

Does it work in Expo Go?

Yes. The SDK and the chat screen have no native code of their own.

Do I need a config plugin or prebuild?

No. Install the package, add the screen, and it runs.

Can I ship it in an OTA update?

Yes. It's JavaScript only, so an EAS Update or any other over-the-air update carries it.

Which React Native versions work?

Any Expo or bare React Native app that runs the apparent-expo SDK, which needs AsyncStorage.

Can people send photos?

Yes. Pass pickImage, for example with expo-image-picker and base64: true, and a photo button shows up.

Where are the docs?

apparent.fyi/docs/chat has the theme table, the words, photos, the badge and the calls for your own screen.

Also read

Your app already has a story. Start reading it.

Connect your app

14 days free. No card, no password.