RocketChat / RocketChat/Rocket.Chat.ReactNative

bug: Slash commands from Rocket.Chat Apps show raw i18n key instead of description

Open
#7,071 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

🐛 bug type: bug
Dominant language
TypeScript
Stars
2.4k
Forks
1.5k
Avg merge
1d 18h
Merged PRs (30d)
90

Description

Describe the Bug

Slash commands registered by Rocket.Chat Apps (e.g. Jitsi, Giphy) display their raw internal translation key as the description instead of the human-readable text. This happens because the React Native client uses i18n-js which does not receive the dynamic app translations that are only injected into the web client at runtime.

Steps to Reproduce
  1. Install any Rocket.Chat App that registers a slash command (e.g. Jitsi Video Call)
  2. Open the React Native mobile app and navigate to any room
  3. Tap the message input and type /
  4. Observe the autocomplete list of slash commands
Expected Behavior

Each slash command should display a human-readable description, e.g.:
/jitsiGenerate a Jitsi conference call.

Actual Behavior

Slash commands from Apps display the raw translation key as their description, e.g.:
/jitsiapp-3b387ba9-f57c-44c6-9810-8c0256abd64c.command_description

Rocket.Chat Server Version

8.3.0-develop

Rocket.Chat App Version

4.71.0

Device Name

iPhone 17 pro simulator

OS Version

iOS 26

Screenshots
Image
Additional Context

The root cause is that Rocket.Chat Apps bundle their i18n strings locally and the web client receives them via AppClientOrchestratorInstance.load() TAPi18next.addResourceBundle() at runtime. The React Native client has no equivalent mechanism and no existing REST endpoint exposes these translations. All built-in slash commands are unaffected since their descriptions are static keys present in the standard en.json translation files.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the React Native slash-command autocomplete path and compare it with the web client's AppClientOrchestratorInstance.load() and TAPi18next.addResourceBundle() flow. Determine how app translations can reach i18n-js; done means app slash commands show human-readable descriptions instead of raw translation keys.

Written by the indexing model from the issue text.

Assessment

Tech stack
react-native, typescript
Domain
internationalization, mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.