Skip to content

[HOLD for payment 2023-08-21] Background Refresh #15058

Description

@roryabraham

# DESIGN DOC ➡️ (deprecated)

Proposal

WN Post

Strategy
In order to offer a pleasing user experience, we strive to keep data in NewDot as up to date as possible at any given time. We have implemented solutions for keeping active user’s up to date in real time (namely sending updates in realtime using Pusher). Next we should aim to update inactive users to improve their experience when re-opening the app while offline or on a slow connection.

Problem
A growing pain for NewDot is its routinely stale data when first opening the app. Eg:

  • Opening the Chats screen and seeing an out of date list
  • Opening a chat and not seeing the latest messages

After a moment (or several depending on your connection), the app finishes syncing data that was missed and flickers as it finally displays the latest data. This delay can be particularly frustrating as you may know that you’re missing something new (eg: something from a notification).

Solution
iOS and Android grant us some ability to run tasks while the app is in the background so let’s fully utilize it! We can implement background refresh and use it to periodically sync updates we have missed. While this won’t completely eliminate stale data, this should noticeably improve the “freshness” of the app when you open it.

We can dig further on what specifically we should sync, but at a minimum lets use background refresh to sync high level data on chats and messages so that you can catch up with conversations more quickly.

Tasks

  • Post Proposal (full Problem/Solution statement) in #whatsnext
  • Wait at least one full business day, and until the post has a majority (2/3) of positive reactions (👍)
  • Paste Proposal in the space above with a link to the Slack thread
  • Email strategy@expensify.com and paste in the Proposal
  • Fill out the High-level overview of the problem, Timeline, and Terminology sections of the Design Doc
  • Email strategy@expensify.com (continue the same email chain as before) with the link to your Design Doc
  • Host a pre-design meeting (example) in an appropriate slack channel to discuss any necessary details in public before filling out the High-level of proposed solution section. (pre-design link)
  • Fill out the High-level of proposed solution section
  • Email stategy@expensify.com again with links to the doc and pre-design conversation in Slack
  • Add the DesignDocReview label to get the High-level of proposed solution section reviewed
  • Respond to any questions or concerns and bring up blockers in Slack to get a consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Host another pre-design meeting in the appropriate slack channel to ask for engineering feedback on the technical solution. (follow-up discussion)
  • Fill out the Detailed implementation of the solution and related sections.
  • Re-add the DesignDocReview label to this issue
  • Respond to any questions or concerns and bring up blockers in Slack to get consensus if necessary
  • Confirm that the doc has the minimum necessary number of reviews before proceeding
  • Email strategy@expensify.com one last time to let them know the Design Doc is moving into the implementation phase
  • Implement the changes
  • Send out a follow up email to strategy@expensify.com once everything has been implemented and do a Project Wrap-Up retrospective that provides:
    • Summary of what we accomplished with this project
    • What went well?
    • What could we have done better?
    • What did we learn?

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionDailyKSv2EngineeringNewFeatureSomething to build that is a new item.

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions