RocketChat / RocketChat/Rocket.Chat.ReactNative
feature: Messages stuck in TEMP/ERROR status indefinitely without auto-retry after app restart/network recovery
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 2.4k
- Forks
- 1.5k
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 90
Description
The application lacks a robust offline and sync queue mechanism, leading to critical reliability issues when the app process ends (crash or force kill) or when network connectivity fluctuates.
Messages that are valid but in-flight or failed are not properly reconciled on app restart or reconnection, resulting in permanently stuck or failed messages.
Environment Information
Rocket.Chat Server Version: All
Rocket.Chat App Version: 4.69.0
Device: All
Operating System: All
Observed Issues
Issue 1: Stuck TEMP Messages
If the app crashes or is killed while a message is in TEMP (sending) state, the message remains stuck indefinitely after app restart.
- Message stays in "Sending..." state
- No transition to Sent or Error
- No reconciliation with server state
Issue 2: No Auto-Retry for ERROR Messages
If a message fails due to lack of connectivity:
- The message enters
ERRORstate - When connectivity is restored, no automatic retry occurs
- User must manually tap the retry button
Screenshot
The following screenshot demonstrates messages stuck in TEMP / ERROR state without automatic recovery:
Steps to Reproduce
Scenario 1: Stuck TEMP Messages
- Open a chat room and send a message.
- Force close the app while the message is still in "Sending..." state.
- Re-open the app and navigate back to the room.
Result:
- Message remains permanently in TEMP state.
Scenario 2: No Auto-Retry After Reconnection
- Enable Airplane Mode (offline).
- Send a message.
- Disable Airplane Mode (online).
- Wait for the app to reconnect.
Result:
- Message remains in ERROR state indefinitely.
Expected Behavior
Scenario 1
On app restart:
- Detect TEMP messages older than a defined threshold
- Verify their existence on the server
- Automatically resend, mark as sent, or move to ERROR state
Scenario 2
On network reconnection:
- Automatically identify failed (ERROR) messages
- Retry sending them without requiring user interaction
Actual Behavior
- TEMP messages remain stuck forever after app restart
- ERROR messages are never retried automatically
- Users receive no feedback that messages are permanently stuck
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files, tests, or entry points are named. Start by tracing the message lifecycle for TEMP and ERROR states, then inspect app-restart recovery and network-reconnection handling; done means stale TEMP messages are reconciled and failed messages retry automatically without user interaction.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react-native, typescript
- Domain
- mobile
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100