New:Socket for Asana Is Now Available.Learn more
Sign In

@sonenta/realtime

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sonenta/realtime

Realtime translation updates plugin for @sonenta/react-i18next (Centrifugo).

Source
npmnpm
Version
1.2.0
Version published
Weekly downloads
7
-82.05%
Maintainers
1
Weekly downloads
 
Created
Source

@sonenta/realtime

Realtime translation updates for Sonenta. A plugin of your existing @sonenta/react-i18next provider: for dev versions it subscribes to the version's Centrifugo channel and, when a new release is published, bust-refetches the affected bundle and re-renders — no page reload, no redeploy.

This was previously baked into @sonenta/react-i18next core; it was extracted into this package in react-i18next 0.9.0 so realtime is opt-in and the core stays lean.

  • @sonenta/realtime/react — the SonentaProvider plugin (web/React).
  • @sonenta/realtime/core — the framework-agnostic Centrifugo client (LiveClient, fetchCentrifugoToken) for advanced/other-framework use.

MIT.

Install

npm i @sonenta/realtime

react and @sonenta/react-i18next (>= 0.9.0) are peer deps.

Usage (React)

Add sonentaRealtime(...) to your i18n provider's plugins slot — no second context, no extra config (it reuses the provider's apiBase / projectUuid / token):

import { SonentaProvider } from "@sonenta/react-i18next";
import { sonentaRealtime } from "@sonenta/realtime/react";

<SonentaProvider
  token="vrb_live_…"
  projectUuid="<project-uuid>"
  defaultLocale="fr"
  version="main"
  plugins={[
    sonentaRealtime({
      wsUrl: "wss://rt.sonenta.dev/connection/websocket",
    }),
  ]}
>
  <App />
</SonentaProvider>;

sonentaRealtime accepts:

  • wsUrl (required) — the Centrifugo WebSocket URL.
  • tokenEndpoint (optional) — defaults to ${apiBase}/v1/auth/centrifugo-token.

Behaviour

Realtime is gated per version (Sonenta product model): on mount the plugin reads the configured version's state from the backend (GET /v1/projects/{id}/versions/{version}is_dev + realtime_channel):

  • dev version (is_dev: true) — mints a version-scoped translations token (POST /v1/auth/centrifugo-token { kind: "translations", version_uuid }) and subscribes to the version's realtime_channel.
  • published version (realtime_channel === null) — no subscription; a console.warn explains realtime is dev-only, and bundles are served statically from the CDN.

This is independent of the provider's env flag (which only controls where bundles are fetched). On each translations_published push for a (language_code, namespace_slug) the app already loaded, the plugin calls i18n.reload({ locale, namespace }) — a cache-bypassing refetch + re-render. Connection + token minting are best-effort: a failure logs a console.warn and the SDK keeps serving the last bundle. Teardown cancels any in-flight setup and disposes the client.

Keywords

i18n

FAQs

Package last updated on 18 Jun 2026

Related posts