RocketChat / RocketChat/Rocket.Chat.ReactNative

feature: Messages stuck in TEMP/ERROR status indefinitely without auto-retry after app restart/network recovery

Open
#6,928 3 comments 0 reactions 0 assignees View on GitHub

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 ERROR state
  • 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:

Image

Steps to Reproduce

Scenario 1: Stuck TEMP Messages
  1. Open a chat room and send a message.
  2. Force close the app while the message is still in "Sending..." state.
  3. Re-open the app and navigate back to the room.

Result:

  • Message remains permanently in TEMP state.

Scenario 2: No Auto-Retry After Reconnection
  1. Enable Airplane Mode (offline).
  2. Send a message.
  3. Disable Airplane Mode (online).
  4. 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

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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.