Home/Docs/Developer Plan

Developer Plan

The Developer plan ($79/mo, billed annually) is for teams building mobile apps or platforms that need unlimited scale, REST API access, and the React Native SDK. This page covers what changes at this tier and provides a deeper look at the React SDK features available to all Developer subscribers.

This page is a first draft. The React Native SDK is still in development. Full documentation for mobile integration and the REST API will be added as those surfaces are completed.

Installation

npm install @relaya-chat/react-native @relaya-chat/core
import { useRelayaAuth, useRelayaChat } from '@relaya-chat/react-native';

const auth = useRelayaAuth({
  serverUrl: 'https://api.relaya.chat',
  stationSlug: 'your-space-slug',
});

What changes at Developer

FeatureCommunity planDeveloper plan
Monthly active users5,000Unlimited
Chat spaces3Unlimited
Message archive90 days180 days
Custom stickers100Unlimited
Moderators525
Admins25
React SDK (@relaya-chat/react)
React Native SDK (@relaya-chat/react-native) (coming soon)
REST API access
SupportEmailPriority email

React SDK — deeper customisation

The React SDK (@relaya-chat/react) is available on both Community and Developer plans. See the Community plan page for basic installation and usage. This section covers additional customisation options that are relevant when building a more deeply integrated experience.

Controlling dark / light mode

By default, the widget reads the prefers-color-scheme media query and follows the visitor's system preference. To force a specific mode regardless of system setting, set the data-theme attribute on the document root:

// Force dark mode for the entire page
document.documentElement.setAttribute('data-theme', 'dark');

// Force light mode
document.documentElement.setAttribute('data-theme', 'light');

This attribute is checked by the widget's CSS and overrides the media query. If your app has its own theme toggle, wire it to set this attribute and the widget will follow.

Opting out of default styles

If you want full control over all widget styles, you can remove the injected default stylesheet entirely:

import { removeRelayaStyles } from '@relaya-chat/react';

// Call before the first <RelayaChat> render
removeRelayaStyles();

After calling this, you are responsible for all widget styling. All widget class names and the .relaya-root scope boundary are still present — you can write CSS targeting those selectors. This is an advanced option intended for teams building a completely custom visual design.

CSS custom properties reference

The widget exposes its design tokens as CSS custom properties. You can override any token by targeting .relaya-root in your own stylesheet:

/* Override a specific token without removing all defaults */
.relaya-root {
  --relaya-color-accent:      #e91e63;
  --relaya-color-bg:          #1a1a2e;
  --relaya-color-message-bg:  #16213e;
  --relaya-radius-bubble:     16px;
}

Key token categories:

  • --relaya-color-* — full color palette (background, text, accents, status)
  • --relaya-radius-* — border radii (sm / md / lg / bubble)
  • --relaya-font-size-* — type scale (xs / sm / base / lg)
  • --sp-* — developer brand variables (set via spaceThemes.ts)
  • --header-height, --sidebar-width — layout dimensions

Admin-saved color overrides are applied as inline :root styles and will win over your :root rules. To reliably override an admin-saved color, target .relaya-root instead of :root.

Hiding the admin panel in embed contexts

If you are embedding the widget on a public page where you do not want the admin gear icon visible to non-admins, pass the hideAdmin prop:

<RelayaChat
  spaceSlug="your-space-slug"
  serverUrl="https://api.relaya.chat"
  hideAdmin={true}
/>

This suppresses the ⚙ icon in the chat header for all users on that page instance. If the space admin needs to access admin settings, they can open the space in another context without hideAdmin.

REST API

The Developer plan includes API access to the Relaya server. This lets you build integrations that read messages, manage members, or trigger moderation actions from your own backend — outside the context of the chat widget itself.

📋
Full REST API documentation is coming soon. If you need early access or have a specific integration in mind, contact us at hello@relaya.chat.

React Native SDK

The @relaya-chat/react-native package brings Relaya chat to iOS and Android apps built with React Native or Expo. It provides the same moderated, real-time chat experience as the web SDK, adapted for native mobile rendering — native modal sheets for moderation actions, AsyncStorage-based token management, and App Store–compliant authentication.

🚧
The React Native SDK is in development. Documentation for installation, usage, and the full component and hook API will be published here when the package is ready for production use.

When available, the SDK will publish as @relaya-chat/react-native on npm under the @relaya scope. It will share the same space, member, and message data as your existing web embed — a member who signs in on the web will see their history in the mobile app.

Unlimited spaces

The Developer plan places no limit on the number of spaces under a single subscription. This is designed for platforms that provision a space per user, per venue, or per event — scenarios where the number of spaces is determined by your product logic, not an artificial cap.

All spaces share the same subscription. Each space has independent moderation, stickers, theming, and member lists. The 25-moderator and 5-admin limits apply per space.