Skip to content

v1.2.0 — Expanded Theming, Dark Mode, Space Display Name & Guest Count

Choose a tag to compare

@batsonjay batsonjay released this 05 Jun 01:03
· 23 commits to main since this release

What's New

Dark mode support — theme prop (@relaya-chat/react)

Pass theme="light" or theme="dark" to <RelayaChat> to override auto-detection
from prefers-color-scheme. Wire it to your app's theme context to stay in sync:

// e.g. next-themes
<RelayaChat theme={resolvedTheme as 'light' | 'dark'} ... />

Expanded theming API — headerIconColor / --sp-header-icon-color (@relaya-chat/react)

The SpaceTheme interface gains optional headerIconColor, surfaced as the
--sp-header-icon-color CSS custom property. Controls icon/button tint in the header
bar. Defaults to white (suitable for dark headers); set to a dark value for light
titleBg backgrounds:

const myTheme: SpaceTheme = {
  ...DEFAULT_THEME,
  titleBg: '#f0f0f0',
  headerIconColor: '#333333',
};

Configurable space display name — SpaceHeaderNameAdmin (@relaya-chat/react)

New admin component, exported from @relaya-chat/react/admin. Admins can set a
cosmetic override for the name shown in the chat header bar — independent of the
space slug and billing records. Leaving it blank reverts to the official space name.

Anonymous guest count in the user list (@relaya-chat/react)

UserListModal now shows a "N guests" row for non-authenticated listeners. The
header count includes both named users and anonymous guests in the total.

Fixed

Reliable initial scroll-to-bottom (@relaya-chat/react)

First load now uses double requestAnimationFrame + behavior: 'instant'. Prevents
the scroll-to-bottom button appearing spuriously before layout is finalised — most
noticeable in iframe embed contexts where parent-page layout delays dimension calc.

For Integrators — New: PRIVACY.md

@relaya-chat/react now ships PRIVACY.md (also at
node_modules/@relaya-chat/react/PRIVACY.md in your install). It describes what
user data Relaya collects on your behalf: email (OTP sign-in), display name,
messages, avatar, and IP address for abuse/geo enforcement (not stored per message).
Browser storage: a localStorage refresh token only — no cookies, no third-party
tracking. Includes a ready-to-adapt paragraph for your own privacy policy.

Informational, not legal advice. You are the data controller; Relaya is the
data processor.