Skip to content

[HOLD for payment 2024-10-11] Reduce the number of redundant ReconnectApp calls or clean up the logic that enqueues them #47742

@muttmuure

Description

@muttmuure

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!


What performance issue do we need to solve?

e.g. memory consumption, storage read/write times, React native bridge concerns, inefficient React component rendering, etc.

@gedu has noticed that app calls ReconnectApp a lot, often redundantly

Here: https://github.com/Expensify/App/blob/main/src/libs/PusherUtils.ts
Thread: https://expensify.slack.com/archives/C05LX9D6E07/p1724159545236079?thread_ts=1721152209.600379&cid=C05LX9D6E07

Here: https://github.com/Expensify/App/blob/main/src/libs/Middleware/RecheckConnection.ts
Thread: https://expensify.slack.com/archives/C05LX9D6E07/p1724076205528369?thread_ts=1721152209.600379&cid=C05LX9D6E07

Here: https://expensify.slack.com/archives/C05LX9D6E07/p1723806097226589?thread_ts=1721152209.600379&cid=C05LX9D6E07

What is the impact of this on end-users?

List specific user experiences that will be improved by solving this problem e.g. app boot time, time to for some interaction to complete, etc.

If a user's request queue gets stuck (like it does here) then ReconnectApp can cause the request queue to climb with unprocessed requests

It has been suggested as the root cause with issues with partially loaded LHNs, but also broken queues of requests

List any benchmarks that show the severity of the issue

Please also provide exact steps taken to collect metrics above if any so we can independently verify the results.

https://expensify.slack.com/archives/C05LX9D6E07/p1723566890894989?thread_ts=1721152209.600379&cid=C05LX9D6E07

@danielrvidal's queue of requests climbed to 630 here

Proposed solution (if any)

Please list out the steps you think we should take to solve this issue.

Reduce the number of queued ReconnectApp calls or clean up the logic that queues them so they don't climb so high

List any benchmarks after implementing the changes to show impacts of the proposed solution (if any)

Note: These should be the same as the benchmarks collected before any changes.

Platforms:

Which of our officially supported platforms is this issue occurring on?

  • Android: Native
  • Android: mWeb Chrome
  • iOS: Native
  • iOS: mWeb Safari
  • MacOS: Chrome / Safari
  • MacOS: Desktop

Version Number:
Reproducible in staging?:
Reproducible in production?:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
Expensify/Expensify Issue URL:
Issue reported by: @danielrvidal
Slack conversation: https://expensify.slack.com/archives/C05LX9D6E07/p1723566890894989?thread_ts=1721152209.600379&cid=C05LX9D6E07

View all open jobs on Upwork

Metadata

Metadata

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions