Agent skill

Telnyx Webrtc Client React Native

by team-telnyx in team-telnyx/ai

Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK.

MITAuto-check passedMobile

Install Telnyx Webrtc Client React Native

skills CLI
$ npx skills add team-telnyx/ai --skill telnyx-webrtc-client-react-native -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install team-telnyx/ai telnyx-webrtc-client-react-native --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/team-telnyx/ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/telnyx-webrtc-client-react-native .claude/skills/telnyx-webrtc-client-react-native && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
telnyx-webrtc-client-react-native
GitHub stars
220
Token cost
~3.2k tokens
SKILL.md length
748 words
Files
2 (incl. references)
Skills in repo
11
Repo updated
First seen
Licence
MIT

At a glance

Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK.

  • Works in 3 steps: Place google-services.json in project root → MainActivity Setup → Background Message Handler
  • Mobile VoIP apps with minimal setup
  • SKILL.md covers Features, Installation, Basic Setup and Authentication, plus 10 more sections
  • Calls npm

What it does

Telnyx Webrtc Client React Native is an agent skill from team-telnyx/ai. Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK. High-level reactive API with automatic lifecycle management, CallKit/ConnectionService integration, and push notifications. Use for mobile VoIP apps with minimal setup.

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/webrtc-server-api.md`).

It sits in Mobile, covering Cross-platform mobile apps. It works with React Native, Android and iOS. The repository describes itself as: Official one-stop shop for AI Agents and developers building with Telnyx. The licence is MIT.

When your agent uses it

  • Mobile VoIP apps with minimal setup
  • Tasks that involve Cross-platform mobile apps

Example prompts

  • “/telnyx-webrtc-client-react-native”

Requirements

  • Node.js

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Place google-services.json in project root
  2. MainActivity Setup
  3. Background Message Handler

What it can do on your machine

Read from SKILL.md and the folder at commit 4d2ace0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Telnyx Webrtc Client React Native loads about 3.2k tokens when it runs, and up to ~4.7k if it reads all its reference files. Until then it costs about 71 tokens; SKILL.md has 748 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~71
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from team-telnyx/ai at commit 4d2ace0, republished under its MIT licence (© team-telnyx). 748 words, ~3,189 tokens.

Download SKILL.mdSave it as .claude/skills/telnyx-webrtc-client-react-native/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
telnyx-webrtc-client-react-native
description
Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK. High-level reactive API with automatic lifecycle management, CallKit/ConnectionService integration, and push notifications. Use for mobile VoIP apps with minimal setup.
metadata.author
telnyx
metadata.product
webrtc
metadata.language
typescript
metadata.platform
react-native

Telnyx WebRTC - React Native SDK

Build real-time voice communication into React Native apps (Android & iOS) using the @telnyx/react-voice-commons-sdk library.

Prerequisites: Create WebRTC credentials and generate a login token using the Telnyx server-side SDK. See the telnyx-webrtc-* skill in your server language plugin (e.g., telnyx-python, telnyx-javascript).

Features

  • Reactive Streams: RxJS-based state management
  • Automatic Lifecycle: Background/foreground handling
  • Native Call UI: CallKit (iOS) and ConnectionService (Android)
  • Push Notifications: FCM (Android) and APNs/PushKit (iOS)
  • TypeScript Support: Full type definitions

Installation

bash
npm install @telnyx/react-voice-commons-sdk

Basic Setup

tsx
import { TelnyxVoiceApp, createTelnyxVoipClient } from '@telnyx/react-voice-commons-sdk';

// Create VoIP client instance
const voipClient = createTelnyxVoipClient({
  enableAppStateManagement: true,  // Auto background/foreground handling
  debug: true,                     // Enable logging
});

export default function App() {
  return (
    <TelnyxVoiceApp 
      voipClient={voipClient} 
      enableAutoReconnect={false} 
      debug={true}
    >
      <YourAppContent />
    </TelnyxVoiceApp>
  );
}

Authentication

Credential-Based Login
tsx
import { createCredentialConfig } from '@telnyx/react-voice-commons-sdk';

const config = createCredentialConfig('sip_username', 'sip_password', {
  debug: true,
  pushNotificationDeviceToken: 'your_device_token',
});

await voipClient.login(config);
Token-Based Login (JWT)
tsx
import { createTokenConfig } from '@telnyx/react-voice-commons-sdk';

const config = createTokenConfig('your_jwt_token', {
  debug: true,
  pushNotificationDeviceToken: 'your_device_token',
});

await voipClient.loginWithToken(config);
Auto-Reconnection

The library automatically stores credentials for seamless reconnection:

tsx
// Automatically reconnects using stored credentials
const success = await voipClient.loginFromStoredConfig();

if (!success) {
  // No stored auth, show login UI
}

Reactive State Management

tsx
import { useEffect, useState } from 'react';

function CallScreen() {
  const [connectionState, setConnectionState] = useState(null);
  const [calls, setCalls] = useState([]);
  
  useEffect(() => {
    // Subscribe to connection state
    const connSub = voipClient.connectionState$.subscribe((state) => {
      setConnectionState(state);
    });
    
    // Subscribe to active calls
    const callsSub = voipClient.calls$.subscribe((activeCalls) => {
      setCalls(activeCalls);
    });
    
    return () => {
      connSub.unsubscribe();
      callsSub.unsubscribe();
    };
  }, []);
  
  return (/* UI */);
}
Individual Call State
tsx
useEffect(() => {
  if (call) {
    const sub = call.callState$.subscribe((state) => {
      console.log('Call state:', state);
    });
    return () => sub.unsubscribe();
  }
}, [call]);

Making Calls

tsx
const call = await voipClient.newCall('+18004377950');

Receiving Calls

Incoming calls are handled automatically via push notifications and the TelnyxVoiceApp wrapper. The native call UI (CallKit/ConnectionService) is displayed automatically.


Call Controls

tsx
// Answer incoming call
await call.answer();

// Mute/Unmute
await call.mute();
await call.unmute();

// Hold/Unhold
await call.hold();
await call.unhold();

// End call
await call.hangup();

// Send DTMF
await call.dtmf('1');

Push Notifications - Android (FCM)

1. Place google-services.json in project root
2. MainActivity Setup
kotlin
// MainActivity.kt
import com.telnyx.react_voice_commons.TelnyxMainActivity

class MainActivity : TelnyxMainActivity() {
    override fun onHandleIntent(intent: Intent) {
        super.onHandleIntent(intent)
        // Additional intent processing
    }
}
3. Background Message Handler
tsx
// index.js or App.tsx
import messaging from '@react-native-firebase/messaging';
import { TelnyxVoiceApp } from '@telnyx/react-voice-commons-sdk';

messaging().setBackgroundMessageHandler(async (remoteMessage) => {
  await TelnyxVoiceApp.handleBackgroundPush(remoteMessage.data);
});

Push Notifications - iOS (PushKit)

AppDelegate Setup
swift
// AppDelegate.swift
import PushKit
import TelnyxVoiceCommons

@UIApplicationMain
public class AppDelegate: ExpoAppDelegate, PKPushRegistryDelegate {
  
  public override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
  ) -> Bool {
    // Initialize VoIP push registration
    TelnyxVoipPushHandler.initializeVoipRegistration()
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
  
  // VoIP Push Token Update
  public func pushRegistry(_ registry: PKPushRegistry, 
                           didUpdate pushCredentials: PKPushCredentials, 
                           for type: PKPushType) {
    TelnyxVoipPushHandler.shared.handleVoipTokenUpdate(pushCredentials, type: type)
  }
  
  // VoIP Push Received
  public func pushRegistry(_ registry: PKPushRegistry, 
                           didReceiveIncomingPushWith payload: PKPushPayload, 
                           for type: PKPushType, 
                           completion: @escaping () -> Void) {
    TelnyxVoipPushHandler.shared.handleVoipPush(payload, type: type, completion: completion)
  }
}

Note: CallKit integration is automatically handled by the internal CallBridge component.


Configuration Options

createTelnyxVoipClient Options
OptionTypeDefaultDescription
enableAppStateManagementbooleantrueAuto background/foreground handling
debugbooleanfalseEnable debug logging
TelnyxVoiceApp Props
PropTypeDescription
voipClientTelnyxVoipClientThe VoIP client instance
enableAutoReconnectbooleanAuto-reconnect on disconnect
debugbooleanEnable debug logging

Storage Keys (Managed Automatically)

The library manages these AsyncStorage keys internally:

  • @telnyx_username - SIP username
  • @telnyx_password - SIP password
  • @credential_token - JWT token
  • @push_token - Push notification token

You don't need to manage these manually.


Troubleshooting

IssueSolution
Double loginDon't call login() manually when using TelnyxVoiceApp with auto-reconnect
Background disconnectCheck enableAutoReconnect setting
Android push not workingVerify google-services.json and MainActivity extends TelnyxMainActivity
iOS push not workingEnsure AppDelegate implements PKPushRegistryDelegate and calls TelnyxVoipPushHandler
Memory leaksUnsubscribe from RxJS observables in useEffect cleanup
Audio issuesiOS audio handled by CallBridge; Android check ConnectionService
Clear Stored Auth (Advanced)
tsx
import AsyncStorage from '@react-native-async-storage/async-storage';

await AsyncStorage.multiRemove([
  '@telnyx_username',
  '@telnyx_password', 
  '@credential_token',
  '@push_token',
]);

<!-- BEGIN AUTO-GENERATED API REFERENCE -- do not edit below this line -->

references/webrtc-server-api.md has the server-side WebRTC API — credential creation, token generation, and push notification setup. You MUST read it when setting up authentication or push notifications.

API Reference

TelnyxVoipClient

Class: TelnyxVoipClient

The main public interface for the react-voice-commons module.

This class serves as the Façade for the entire module, providing a simplified API that completely hides the underlying complexity. It is the sole entry point for developers using the react-voice-commons package.

The TelnyxVoipClient is designed to be state-management agnostic, exposing all observable state via RxJS streams. This allows developers to integrate it into their chosen state management solution naturally.

Methods
login()

login(config): Promise<void>

Parameters
config

CredentialConfig

Returns

A Promise that completes when the connection attempt is initiated

loginWithToken()

loginWithToken(config): Promise<void>

Parameters
config

TokenConfig

Returns

A Promise that completes when the connection attempt is initiated

logout()

logout(): Promise<void>

Returns
loginFromStoredConfig()

loginFromStoredConfig(): Promise<boolean>

Returns
newCall()

newCall(destination, callerName?, callerNumber?, customHeaders?): Promise<Call>

Parameters
destination

The destination number or SIP URI to call

Show full SKILL.md (301 more words)Show less
callerName?

Optional caller name to display

callerNumber?

Optional caller ID number

customHeaders?

Optional custom headers to include with the call

Returns

A Promise that completes with the Call object once the invitation has been sent

handlePushNotification()

handlePushNotification(payload): Promise<void>

Parameters
payload

The push notification payload

Returns
disablePushNotifications()

disablePushNotifications(): void

Returns
setCallConnecting()

setCallConnecting(callId): void

Parameters
callId

The ID of the call to set to connecting state

Returns
findCallByTelnyxCall()

findCallByTelnyxCall(telnyxCall): Call

Parameters
telnyxCall

The Telnyx call object to find

Returns

Call

queueAnswerFromCallKit()

queueAnswerFromCallKit(customHeaders): void

Parameters
customHeaders

Optional custom headers to include with the answer

Returns
queueEndFromCallKit()

queueEndFromCallKit(): void

Returns
dispose()

dispose(): void

Returns
Call

Class: Call

Represents a call with reactive state streams.

This class wraps the underlying Telnyx Call object and provides reactive streams for all call state changes, making it easy to integrate with any state management solution.

Methods
answer()

answer(customHeaders?): Promise<void>

Parameters
customHeaders?

Optional custom headers to include with the answer

Returns
hangup()

hangup(customHeaders?): Promise<void>

Parameters
customHeaders?

Optional custom headers to include with the hangup request

Returns
hold()

hold(): Promise<void>

Returns
resume()

resume(): Promise<void>

Returns
mute()

mute(): Promise<void>

Returns
unmute()

unmute(): Promise<void>

Returns
toggleMute()

toggleMute(): Promise<void>

Returns
setConnecting()

setConnecting(): void

Returns
dispose()

dispose(): void

Returns
TelnyxCallState

Enumeration: TelnyxCallState

Represents the state of a call in the Telnyx system.

This enum provides a simplified view of call states, abstracting away the complexity of the underlying SIP call states.

Enumeration Members
RINGING

RINGING: "RINGING"

CONNECTING

CONNECTING: "CONNECTING"

ACTIVE

ACTIVE: "ACTIVE"

HELD

HELD: "HELD"

ENDED

ENDED: "ENDED"

FAILED

FAILED: "FAILED"

DROPPED

DROPPED: "DROPPED"

TelnyxConnectionState

Enumeration: TelnyxConnectionState

Represents the connection state to the Telnyx platform.

This enum provides a simplified view of the connection status, abstracting away the complexity of the underlying WebSocket states.

Enumeration Members
DISCONNECTED

DISCONNECTED: "DISCONNECTED"

CONNECTING

CONNECTING: "CONNECTING"

CONNECTED

CONNECTED: "CONNECTED"

RECONNECTING

RECONNECTING: "RECONNECTING"

ERROR

ERROR: "ERROR"

<!-- END AUTO-GENERATED API REFERENCE -->

© team-telnyx, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/telnyx-webrtc-client-react-native of team-telnyx/ai.

  • SKILL.md
  • references/webrtc-server-api.md

Open the folder on GitHubat commit 4d2ace0

Compare with similar skills

Telnyx Webrtc Client React Native next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Telnyx Webrtc Client React Native compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Telnyx Webrtc Client React Native this skillteam-telnyx/ai220—~3.2kAutomated safety check: PassMIT
Rnn Codebasewix/react-native-navigation13k—~2kAutomated safety check: PassMIT
Expo Tailwind SetupCherryHQ/cherry-studio-app4k8 repos~3kAutomated safety check: PassMIT
Screenmapaleqsio/screenmap243—~7.2kAutomated safety check: PassMIT
Expo Brownfield Integrationmweinbach/agent-coworker1562 repos~900Automated safety check: NotesCustom licence
Agent Devicegronxb/hot-updater1.8k—~3.9kAutomated safety check: PassCustom licence

Similar skills

  • Rnn Codebase

    wix/react-native-navigation

    Official

    Navigate and work with the react-native-navigation (RNN) codebase.

    13k GitHub stars~2k tokensUpdated 3 days ago
    MobileAuto-check passed
  • Expo Tailwind Setup

    CherryHQ/cherry-studio-app

    Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling

    4k GitHub starsUsed in 8 repos~3k tokens
    MobileAuto-check passed
  • Screenmap

    aleqsio/screenmap

    Generate a visual navigation map of an Expo / React Native or NativeScript app.

    243 GitHub stars~7.2k tokensUpdated 5 days ago
    MobileAuto-check passed
  • Expo Brownfield Integration

    mweinbach/agent-coworker

    Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.

    156 GitHub starsUsed in 2 repos~900 tokens
    MobileAuto-check: notes
  • Agent Device

    gronxb/hot-updater

    Automates interactions for iOS simulators/devices and Android emulators/devices.

    1.8k GitHub stars~3.9k tokensUpdated today
    MobileAuto-check passed
  • Simulator Audio E2E

    hyochan/react-native-nitro-sound

    Build and run repeatable react-native-nitro-sound recorder/player regression tests on an iOS Simulator or Android emulator, with explicit virtual-device selection, microphone permission, Maestro…

    961 GitHub stars~1.1k tokensUpdated 10 days ago
    MobileAuto-check passed

More from team-telnyx/ai

All 11 skills in this repo
  • Test VoIP push notifications for Telnyx WebRTC iOS (APNs) and Android (FCM) apps.

    220 GitHub stars~538 tokensUpdated yesterday
    Auto-check passed
  • Manage email suppressions (blocks), import and export suppression lists, and manage unsubscribe groups.

    220 GitHub stars~5k tokensUpdated yesterday
    Auto-check: notes
  • Telnyx Messaging Curl

    team-telnyx/ai

    Send and receive SMS/MMS, handle opt-outs and delivery webhooks.

    220 GitHub stars~4.9k tokensUpdated yesterday
    Auto-check passed
  • End-to-end setup for making a Telnyx AI assistant call a phone number.

    220 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Telnyx Email Curl

    team-telnyx/ai

    Send transactional email, batch sends, scheduled delivery, templates, email validation, and track delivery events.

    220 GitHub stars~6k tokensUpdated yesterday
    Auto-check: notes
  • Manage email inboxes, list and search inbound messages, threads, sender filters, and reply to or forward messages.

    220 GitHub stars~5.4k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Telnyx Webrtc Client React Native

What does Telnyx Webrtc Client React Native do?

Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK. Telnyx Webrtc Client React Native is an agent skill from team-telnyx/ai. Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK.

When should I use Telnyx Webrtc Client React Native?

Telnyx Webrtc Client React Native fits situations like: mobile VoIP apps with minimal setup; tasks that involve Cross-platform mobile apps.

How do I install Telnyx Webrtc Client React Native in Claude Code?

Run `npx skills add team-telnyx/ai --skill telnyx-webrtc-client-react-native -a claude-code`. Or copy the skill folder (skills/telnyx-webrtc-client-react-native in team-telnyx/ai) into .claude/skills/telnyx-webrtc-client-react-native in your project. Claude Code loads it when a task matches its description.

How do I install Telnyx Webrtc Client React Native in Codex?

Run `npx skills add team-telnyx/ai --skill telnyx-webrtc-client-react-native -a codex`. Or copy the skill folder (skills/telnyx-webrtc-client-react-native in team-telnyx/ai) into .agents/skills/telnyx-webrtc-client-react-native in your project. Codex loads it when a task matches its description.

Can I use Telnyx Webrtc Client React Native in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add team-telnyx/ai --skill telnyx-webrtc-client-react-native -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/telnyx-webrtc-client-react-native, .gemini/skills/telnyx-webrtc-client-react-native, .github/skills/telnyx-webrtc-client-react-native and .opencode/skills/telnyx-webrtc-client-react-native in your project.

What does Telnyx Webrtc Client React Native need to run?

Going by SKILL.md and its folder, Telnyx Webrtc Client React Native needs the command-line tools its instructions call (npm). Our summary lists: Node.js.

Does Telnyx Webrtc Client React Native access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Telnyx Webrtc Client React Native safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Telnyx Webrtc Client React Native use?

Telnyx Webrtc Client React Native is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Telnyx Webrtc Client React Native use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.5k tokens, read only when the agent opens those files.

What are the alternatives to Telnyx Webrtc Client React Native?

Skills that share tags, products or a category with Telnyx Webrtc Client React Native: Rnn Codebase (wix/react-native-navigation, 13k stars), Expo Tailwind Setup (CherryHQ/cherry-studio-app, 4k stars), Screenmap (aleqsio/screenmap, 243 stars) and Expo Brownfield Integration (mweinbach/agent-coworker, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Telnyx Webrtc Client React Native?

team-telnyx (a GitHub organization) maintains it in team-telnyx/ai, which has 220 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 8, 2026.

Source: team-telnyx/ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.