feature request: in-app notification sound
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- react-native, typescript
- Área
- mobile
Línea de trabajo
Comienza rastreando cómo la configuración de las salas proporciona audioNotificationValue desde rooms.saveNotification y dónde se activan las notificaciones dentro de la aplicación en el cliente móvil. Revisa los recursos de sonido existentes y el flujo de notificaciones antes de decidir cómo encajan los presets, las descargas locales, la selección y la reproducción. Se considera terminado cuando el sonido seleccionado de una sala se reproduce para notificaciones válidas dentro de la aplicación, con un fallback incluido cuando sea necesario.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Feature Description
Currently, the mobile application allows users to select a notification sound (audioNotificationValue) which is successfully saved on the backend via rooms.saveNotification . However, this preference is not respected by the mobile client when in-app notifications are triggered.
This feature proposes enabling the mobile app to play the selected notification sound for in-app messages, ensuring that user preferences are fully applied.
The implementation should:
- Read the audioNotificationValue from room settings
- Map it to corresponding sound asset
- Trigger playback when a valid notification event occurs
Motivation and Use Case
Why this matters
Users expect their notification settings to actually affect behavior. Right now:
- Changing notification sound has no effect in the mobile app
- This creates confusion and inconsistency between backend settings and user experience
Use cases
- A user sets different sounds for different rooms → helps identify message source instantly
- A user prefers subtle vs loud sounds → improves usability in different environments
- Teams relying on notifications → need quick auditory distinction
Impact
- Fixes a broken UX expectation
- Aligns mobile behavior with backend/web capabilities
- Improves personalization and usability
Implementation Ideas
-
Fetch Presets — Backend returns a list of preset sound names (e.g.
["chime", "bell", "ping"]). Each name maps to a downloadable URL, either constructed on the client or returned directly by the API. -
Download on Demand — Each preset is shown with a Download button. On tap, the file is downloaded to
documentDirectory/notification_sounds/<name>.mp3viaexpo-file-system. Download is skipped if the file already exists locally. -
UI States — Each preset tracks its own state:
not downloaded→downloading→downloaded→selected. User can also preview before selecting. -
Private Storage — Files are saved to
documentDirectory, which is sandboxed to the app on both iOS and Android. Not visible to other apps or the device media library. -
Persist Selection — Active sound preference is saved to
AsyncStorageor the existing room settings store as the local file path. -
Playback — On in-app notification trigger, resolve the saved path and play via
expo-av. Falls back to a bundled default if the file is missing or not yet downloaded.
Is this feature available in the API or web version?
Available in Web Version
Rocket.Chat Server Version
No response
Rocket.Chat App Version
No response
Device Name
No response
OS Version
No response
Additional Context
No response
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.4k
- Forks
- 1.5k
- Merge medio
- 1 d 15 h
- PR fusionados (30 d)
- 29
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de RocketChat/Rocket.Chat.ReactNative
-
[IMPROVEMENT] Remove redundant `await` on synchronous `userPreferences.getBool` in `getUsersPresence`Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertotype: feature
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
RocketChat/Rocket.Chat.ReactNative#7737 ·
Los mantenedores suelen responder en 1 día
-
UIKit modal: a viewSubmit response with no `type` field fails to close the modal on mobile (regression from #7057)Posiblemente ocupada @erikurt9 la tomó hace 106 días. Abiertotype: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
RocketChat/Rocket.Chat.ReactNative#7503 · 3 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
type: bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
RocketChat/Rocket.Chat.ReactNative#7437 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
✅ tests 👷 ci type: feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
RocketChat/Rocket.Chat.ReactNative#7247 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug: goRoom navigates to broken RoomView after failed DM creation from searchPosiblemente ocupada @deepak0x la tomó hace 216 días. Abiertotype: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
RocketChat/Rocket.Chat.ReactNative#7098 ·
Los mantenedores suelen responder en 1 día
Todos los issues de RocketChat/Rocket.Chat.ReactNative
Issues similares
-
Bug: Broken RTL / BiDi text rendering when mixing Persian (Farsi) with English or numbersPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertobug
Dificultad 2/5 Medio día Aptitud para principiantes 68/100
amosblomqvist/learnharness#758 ·
Los mantenedores suelen responder en 2 días
-
Change WorkspacesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
bitfocus/companion-module-renewedvision-propresenter-api#134 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
rcpch/digital-growth-charts-react-component-library#304 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
dsh-market/dsh-market#1210 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
trustjonathan/STUDY-HUB#13 ·