Agent skill

Fishjam React Native Client

by software-mansion-labs in software-mansion-labs/skills

React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android.

MITAuto-check passedMobile

Install Fishjam React Native Client

skills CLI
$ npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a claude-code

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

GitHub CLI
$ gh skill install software-mansion-labs/skills fishjam-react-native-client --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/software-mansion-labs/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/fishjam/references/react-native-client .claude/skills/fishjam-react-native-client && 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
fishjam-react-native-client
GitHub stars
291
Token cost
~1.9k tokens
SKILL.md length
578 words
Files
11
Skills in repo
20
Repo updated
First seen
Licence
MIT

At a glance

React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android.

  • Writing a React Native
  • SKILL.md covers Minimal app, Hook delta vs web…, Key rules and References
  • Calls npx and npm
  • Expo app that calls Fishjam

What it does

Fishjam React Native Client is an agent skill from software-mansion-labs/skills. React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android. Use when writing a React Native or Expo app that calls Fishjam, configures the Fishjam Expo plugin, sets up permissions, runs background streaming, integrates CallKit, or renders RTCView. Trigger on: '@fishjam-cloud/react-native-client', 'fishjam expo plugin', 'FishjamProvider mobile', 'useCameraPermissions', 'useMicrophonePermissions', 'useForegroundService', 'useCallKit', 'useCallKitEvent', 'useCallKitService', 'RTCView'…

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files (for example `audio-output.md`, `callkit.md` and `example-projects.md`).

It sits in Mobile, covering Cross-platform mobile apps. It works with React Native, Expo, iOS and React. The repository describes itself as: Software Mansion's set of skills for AI-assisted React Native development. The licence is MIT.

When your agent uses it

  • Writing a React Native
  • Expo app that calls Fishjam
  • Configures the Fishjam Expo plugin
  • Sets up permissions

Example prompts

  • “@fishjam-cloud/react-native-client”
  • “fishjam expo plugin”
  • “FishjamProvider mobile”
  • “/fishjam-react-native-client”

Requirements

  • Node.js

What it can do on your machine

Read from SKILL.md and the folder at commit e3f00cd. 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:

    • npx
    • npm

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

  • Network

    No URLs in SKILL.md. Its commands use npx and 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

Fishjam React Native Client loads about 1.9k tokens when it runs. Until then it costs about 234 tokens; SKILL.md has 578 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~234
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

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 software-mansion-labs/skills at commit e3f00cd, republished under its MIT licence (© software-mansion-labs). 578 words, ~1,900 tokens.

Download SKILL.mdSave it as .claude/skills/fishjam-react-native-client/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
fishjam-react-native-client
description
React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android. Use when writing a React Native or Expo app that calls Fishjam, configures the Fishjam Expo plugin, sets up permissions, runs background streaming, integrates CallKit, or renders RTCView. Trigger on: '@fishjam-cloud/react-native-client', 'fishjam expo plugin', 'FishjamProvider mobile', 'useCameraPermissions', 'useMicrophonePermissions', 'useForegroundService', 'useCallKit', 'useCallKitEvent', 'useCallKitService', 'RTCView', 'RTCPIPView', 'ScreenCapturePickerView', 'startPIP', 'stopPIP', 'AudioDeviceType', 'useAudioOutput', '@fishjam-cloud/react-native-webrtc', 'fishjam react native', 'expo fishjam', 'fishjam ios', 'fishjam android', 'broadcast extension'. Re-exports @fishjam-cloud/react-client hooks plus mobile-only: permissions, foreground service, iOS broadcast extension, audio routing, CallKit, Expo config plugin.
license
MIT

Fishjam React Native Client

@fishjam-cloud/react-native-client — Fishjam's SDK for React Native / Expo apps on iOS and Android. Re-exports the web @fishjam-cloud/react-client hook surface, overrides some hooks with mobile-aware versions, and adds mobile-only APIs.

Read ../platform/SKILL.md first for the domain model.

Read ../react-client/SKILL.md for the shared hook catalog. This skill is the mobile delta — permissions, foreground service, screen-share broadcast extension, CallKit, audio routing, the Expo plugin. The hooks that work identically to the web SDK aren't re-documented here.

Minimal app

bash
npm install @fishjam-cloud/react-native-client @fishjam-cloud/react-native-webrtc
# @fishjam-cloud/react-native-webrtc is a peerDependency — install it explicitly.
# Do NOT install upstream `react-native-webrtc` (the unforked package) — it will collide.

app.json (Expo):

json
{
  "expo": {
    "plugins": [
      [
        "@fishjam-cloud/react-native-client",
        {
          "android": {
            "enableForegroundService": true,
            "enableScreensharing": true
          },
          "ios": {
            "enableScreensharing": true,
            "broadcastExtensionTargetName": "MyAppScreenSharing",
            "broadcastExtensionDisplayName": "MyApp Screen Sharing",
            "appGroupContainerId": "group.com.myapp.screensharing",
            "mainTargetName": "MyApp"
          }
        }
      ]
    ]
  }
}

Then npx expo prebuild to generate native code.

tsx
import { FishjamProvider } from '@fishjam-cloud/react-native-client';

export default function App() {
  return (
    <FishjamProvider fishjamId={process.env.EXPO_PUBLIC_FISHJAM_ID!}>
      <Room />
    </FishjamProvider>
  );
}

Hook delta vs web (../react-client/)

Re-exported unchanged

These hooks behave identically to the web SDK — see ../react-client/ references.

useConnection, useDataChannel, useSandbox, useUpdatePeerMetadata, useVAD, Variant, InitializeDevicesSettings.

useSandbox RoomType divergence. The web SDK accepts 'audio_only' (underscore); the React Native SDK accepts 'audio-only' (hyphen). Passing the wrong form on either platform makes the Sandbox API reject the request. (Web wire format is audio_only; the RN hook silently sends 'audio-only' and the server validation 400s.)

Overridden (mobile-specific implementations of same API)

Same call signatures as web; internals adapted to React Native. Read ../react-client/ references for the API, then this skill's mobile-hook-overrides.md for behavioral deltas.

useCamera, useMicrophone, useScreenShare, useCustomSource, useInitializeDevices, useLivestreamStreamer, useLivestreamViewer, usePeers.

Mobile-only (no web equivalent)
Hook / APIPurposeReference
useCameraPermissions, useMicrophonePermissionsQuery / request iOS-Android device permissionspermissions.md
useForegroundServiceKeep audio/video/screen-share alive when the app is backgrounded on Androidforeground-service.md
useCallKit, useCallKitEvent, useCallKitServiceiOS CallKit integration (treats Fishjam sessions as native phone calls)callkit.md
useAudioOutput + AudioDeviceTypeSwitch audio routing (speaker / earpiece / Bluetooth)audio-output.md
RTCView, RTCPIPViewNative components for rendering video tracks (in place of <video>)rtcview.md
ScreenCapturePickerView + startPIP / stopPIPNative components / functions for iOS screen picker and Picture-in-Picturescreen-sharing.md, picture-in-picture.md
FishjamProvider differences

The mobile provider is a thin wrapper around the React one but drops two props:

  • persistLastDevice — not supported on mobile (no localStorage; OS manages device selection).
  • fishjamClient — internal-only on mobile (the SDK constructs its own with clientType: 'mobile').

All other props (fishjamId, reconnect, constraints, bandwidthLimits, videoConfig, audioConfig, debug) work the same as web.

Show full SKILL.md (249 more words)Show less

Key rules

  • Install @fishjam-cloud/react-native-webrtc (the fork) — but NOT the upstream react-native-webrtc. The fork is a peerDependency of @fishjam-cloud/react-native-client, so you must add it explicitly. Installing the upstream (unforked) react-native-webrtc will collide with the fork and break the native build.
  • The Expo plugin is required even in bare workflow. For Expo CNG (managed): register in app.json/app.config.ts. For bare: still register and run npx expo prebuild, or do the manual native steps (native-setup.md).
  • Request permissions before useInitializeDevices. iOS in particular will silently fail device init if NSCameraUsageDescription / NSMicrophoneUsageDescription isn't declared and granted.
  • Foreground service is mandatory for backgrounded streaming on Android. When the user puts the app in background, Android suspends the WebRTC peer connection unless a foreground service is running. useForegroundService solves this.
  • iOS screen sharing requires a Broadcast Extension. A separate iOS target generated by the Expo plugin. Configure broadcastExtensionTargetName + appGroupContainerId and the plugin scaffolds it during prebuild.
  • iOS PIP needs the plugin flag. ios.supportsPictureInPicture: true and enableVoIPBackgroundMode: true for CallKit-paired calls.

References

FileWhen to read
native-setup.mdInstall + Expo plugin options (Android + iOS), bare workflow manual steps, prebuild flow.
permissions.mduseCameraPermissions, useMicrophonePermissions, request-before-init pattern.
rtcview.mdRendering video — RTCView props (streamURL, trackId, mediaStream), RTCPIPView, mirror / styling.
screen-sharing.mdAndroid MediaProjection vs iOS Broadcast Extension; ScreenCapturePickerView; app-group pitfalls.
foreground-service.mdForegroundServiceConfig, Android permissions, iOS background modes.
picture-in-picture.mdRTCPIPView, startPIP, stopPIP, plugin flags.
callkit.mduseCallKit, useCallKitEvent, useCallKitService, CallKitConfig, CallKitAction.
audio-output.mduseAudioOutput, AudioDeviceType, switching speaker / earpiece / Bluetooth.
mobile-hook-overrides.mdPer-hook behavioral deltas vs the web SDK.
example-projects.mdRunnable apps in the fishjam-cloud/examples repo under mobile-react-native/.

© software-mansion-labs, 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 10 other files in skills/fishjam/references/react-native-client of software-mansion-labs/skills.

  • SKILL.md
  • audio-output.md
  • callkit.md
  • example-projects.md
  • foreground-service.md
  • mobile-hook-overrides.md
  • native-setup.md
  • permissions.md
  • picture-in-picture.md
  • rtcview.md
  • screen-sharing.md

Open the folder on GitHubat commit e3f00cd

Compare with similar skills

Fishjam React Native Client 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.

Fishjam React Native Client compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fishjam React Native Client this skillsoftware-mansion-labs/skills291—~1.9kAutomated safety check: PassMIT
Screenmapaleqsio/screenmap239—~7.2kAutomated safety check: PassMIT
ThemingCode-with-Beto/skills141—~2.5kAutomated safety check: PassNone
Expo Tailwind SetupCherryHQ/cherry-studio-app4k8 repos~3kAutomated safety check: PassMIT
Expo Brownfield Integrationmweinbach/agent-coworker1562 repos~900Automated safety check: NotesCustom licence
Expo UIarcboxlabs/linkcode155—~1.2kAutomated safety check: PassMIT

Similar skills

  • Screenmap

    aleqsio/screenmap

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

    239 GitHub stars~7.2k tokensUpdated 3 days ago
    MobileAuto-check passed
  • Theming

    Code-with-Beto/skills

    Scaffold a unified, cross-platform color theme system into an Expo Router app.

    141 GitHub stars~2.5k tokensUpdated 2 mo 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
  • 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
  • Expo UI

    arcboxlabs/linkcode

    Framework (OSS). An agent skill from arcboxlabs/linkcode.

    155 GitHub stars~1.2k tokensUpdated 9 days ago
    MobileAuto-check passed
  • Simfleet

    entropyconquers/simfleet

    Operate a simfleet device fleet: slimmed iOS simulators and Android emulators, parallel React Native worktree lanes with leased Metro ports, the native build cache, and per-agent device claims.

    117 GitHub stars~1.5k tokensUpdated 8 days ago
    MobileAuto-check passed

More from software-mansion-labs/skills

All 20 skills in this repo
  • Detour Onboarding

    software-mansion-labs/skills

    Complete onboarding guide for developers who are new to Detour, the open-source deferred deep linking SDK by Software Mansion.

    291 GitHub stars~2.8k tokensUpdated 9 days ago
    Auto-check passed
  • Typegpu

    software-mansion-labs/skills

    TypeGPU is type-safe WebGPU in TypeScript. An agent skill from software-mansion-labs/skills.

    291 GitHub starsUsed in 2 repos~5.6k tokens
    Auto-check passed
  • Enable Worklets Bundle Mode

    software-mansion-labs/skills

    Enable react-native-worklets Bundle Mode (imports inside worklets, third party libraries on worklet runtimes) in an Expo, RN CLI or brownfield React Native app, including the mandatory…

    291 GitHub stars~4k tokensUpdated 9 days ago
    Auto-check passed
  • Moq Kit

    software-mansion-labs/skills

    Software Mansion's moq-kit — native Swift (iOS) and Kotlin (Android) SDKs for Media over QUIC (moq-lite) live streaming: sub-second-latency playback, camera/microphone/screen publishing, and…

    291 GitHub stars~5k tokensUpdated 9 days ago
    Auto-check passed
  • React Native Moq

    software-mansion-labs/skills

    Software Mansion's react-native-moq — Media over QUIC (MoQ) live streaming for React Native: sub-second-latency video/audio playback, camera/mic/screen publishing, and realtime data tracks over a…

    291 GitHub stars~1.6k tokensUpdated 9 days ago
    Auto-check passed
  • Expo Horizon

    software-mansion-labs/skills

    Software Mansion's guide for migrating Expo SDK apps to Meta Quest using expo-horizon packages.

    291 GitHub stars~2.8k tokensUpdated 9 days ago
    Auto-check passed

Categories

Questions about Fishjam React Native Client

What does Fishjam React Native Client do?

React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android. Fishjam React Native Client is an agent skill from software-mansion-labs/skills. React Native / Expo SDK for Fishjam — video/audio streaming on iOS and Android.

When should I use Fishjam React Native Client?

Fishjam React Native Client fits situations like: writing a React Native; expo app that calls Fishjam; configures the Fishjam Expo plugin; sets up permissions.

How do I install Fishjam React Native Client in Claude Code?

Run `npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a claude-code`. Or copy the skill folder (skills/fishjam/references/react-native-client in software-mansion-labs/skills) into .claude/skills/fishjam-react-native-client in your project. Claude Code loads it when a task matches its description.

How do I install Fishjam React Native Client in Codex?

Run `npx skills add software-mansion-labs/skills --skill fishjam-react-native-client -a codex`. Or copy the skill folder (skills/fishjam/references/react-native-client in software-mansion-labs/skills) into .agents/skills/fishjam-react-native-client in your project. Codex loads it when a task matches its description.

Can I use Fishjam React Native Client 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 software-mansion-labs/skills --skill fishjam-react-native-client -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fishjam-react-native-client, .gemini/skills/fishjam-react-native-client, .github/skills/fishjam-react-native-client and .opencode/skills/fishjam-react-native-client in your project.

What does Fishjam React Native Client need to run?

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

Does Fishjam React Native Client access the network?

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

Is Fishjam React Native Client 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 Fishjam React Native Client use?

Fishjam React Native Client is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fishjam React Native Client use?

About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Fishjam React Native Client?

Skills that share tags, products or a category with Fishjam React Native Client: Screenmap (aleqsio/screenmap, 239 stars), Theming (Code-with-Beto/skills, 141 stars), Expo Tailwind Setup (CherryHQ/cherry-studio-app, 4k 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 Fishjam React Native Client?

software-mansion-labs (a GitHub organization) maintains it in software-mansion-labs/skills, which has 291 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on September 28, 2026.

Source: software-mansion-labs/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.