stream-unreal

/stream-unreal builds, integrates, and answers how-to questions for Stream Chat in Unreal Engine games and apps: C++ and Blueprint, plugin install per engine version, UStreamChatClientComponent wiring, the shipped UMG chat widgets, and iOS/Android/desktop packaging.

Chat only, and the SDK is in beta. There is no Stream Video or Feeds SDK for Unreal. The skill says so up front and offers alternatives (a platform SDK on a companion app, or the REST/server API) instead of inventing an API. The plugin declares IsBetaVersion: true, so the surface can change between releases.

The router installs and dispatches to /stream-unreal automatically when it detects an Unreal signal (unreal, ue5, .uproject, .uplugin, Build.cs, umg, widget blueprint, UStreamChatClientComponent), or you can invoke it directly.

What it builds

Before writing any code, three gates run:

  1. Engine version, detected from the .uproject. UE 5.7 and 5.8 are supported, with one plugin release archive per engine version. 5.2 through 5.6 are a hard stop: no release supports them. 4.27/5.0/5.1 only run the old v1.3.0 plugin, which predates the v2 API.
  2. Feature support: the skill says no in the plan, not in a compile error. Not implemented in the Unreal SDK: attachments and uploads, threads, quoted messages, mentions, message pinning, offline persistence, polls, drafts. Implemented: messaging, channels, reactions, read state and unread counts, typing indicators, moderation (including block/unblock), slow mode, presence, real-time events, and push device registration.
  3. C++ or Blueprint. C++ is the full API surface (callbacks, TOptional<> parameters, all pagination); Blueprint covers the common operations as latent nodes, with ...BP-suffixed variants like SendMessageBP and BanUserBP where the C++ signature takes optionals. Pagination and the lower-level APIs are C++ only, and a Blueprint-only project hears which parts need C++ before work starts.

With the gates passed, it installs the matching plugin release, collects credentials (API key fetched and a user token minted via the getstream CLI, or a pasted key and token), wires UStreamChatClientComponent on the HUD, and puts chat on screen with the shipped WBP_* UMG widgets (a full mobile chat app, a desktop two-pane team chat, or a fading in-game overlay), always calling Setup() before AddToViewport() and always pairing path-loaded widgets with the DirectoriesToAlwaysCook directive they need to survive packaging.

Example prompts

/stream-unreal add in-game chat to my UE 5.8 project
/stream-unreal build a mobile chat app with the shipped WBP_TeamChat_Mobile widgets
/stream-unreal how do I query channels from Blueprint?
/stream-unreal package my chat app for iOS and run it on my phone

What it knows

  • The docs-coverage caveat: only a subset of the /chat/docs/unreal/ pages carry an Unreal code tab (about 26 of 61); the rest show JavaScript or another language. The skill routes through a per-page coverage map, reads the plugin headers where the docs have no Unreal code, and never translates a JS snippet into C++
  • ApiKey must be set before BeginPlay runs: set it later and connect still succeeds while every REST call 401s
  • Client lifetime: one UStreamChatClientComponent on the HUD, DisconnectUser() in EndPlay, never on a replicated actor
  • Async callbacks capture TWeakObjectPtr, never raw this
  • n.VerifyPeer=True in DefaultEngine.ini, without which a packaged build never connects, on every platform
  • Mobile packaging config (UI scale, retained rendering off, touch input in the per-platform *Input.ini files) and the UE 5.5+ iOS signing trap: the documented IOSRuntimeSettings keys are silently ignored, and XcodeProjectSettings is the section that works

The pack's files live at skills/stream-unreal/.