-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Description
DESIGN DOC ➡️
Slack Room: #migrate
- WhatsNext post
- Predesign: merge images on client or backend
- Predesign: Partial odometer expenses
- Design Doc: Go to market review
- Figma design
Implementation issues:
Main Flow Phase 1: Add Odometer expense type
- [Odometer] Update CreateDistanceRequest command for Odometer #77099
- [Odometer] Modify UpdateMoneyRequestDistance command for Odometer #78383
- [Odometer] Create NewDot Odometer expense flow #77191
- [Due for payment 2026-03-13] [Odometer] Build Odometer expense image capture flow #77266
- [Odometer] Build Odometer merged image flow #77267
- [Odometer] Create manual test cases for Odometer phase 1 #77292
Bugs/Improvements:
- Phase 1 blockers
- [$250] Expense - Loading indefinitely when no description is saved. #76326
- [Odometer] [$250] Capture an image in Odometer user is redirected back to Inbox #83526
- [HOLD][Odometer] Reloading app during creation flow with preview open lands on not-found page #81901
- Odometer - Image preview - Blank page opens when tap on upload start odometer photo #82327
- [Odometer] [$250] Odometer distance page shows wrong amount after changing distance unit #82650
- [Due for payment 2026-02-24] [Odometer] Refactor IOURequestStepDistanceOdometer to use handleMoneyRequestStepDistanceNavigation #81727
- https://github.com/Expensify/Expensify/issues/608481
- https://github.com/Expensify/Expensify/issues/608482
- [Odometer] Fix trackExpense to persist odometer readings for selfDM tracked expenses #81728
- [Due for payment 2026-01-27] [Odometer] Verify optimistic data is correct when offline #78961
- [Due for payment 2026-01-27] [Odometer] Distance expense category removed on 2nd policy switch #79598
- [Odometer] Remove Odometer expense splitting #82157
- [Odometer] [$250] Distance - Odometer - Next button is hidden behind the keyboard #82647
- Odometer - User can input any character in the Odometer input field #84220
- Distance - Discard changes modal opens after creating Odometer expense #84218
- https://github.com/Expensify/Expensify/issues/571644 [phase 1]
- Phase 1 non-blockers
- [HOLD][Odometer] Improvement to DiscardChangesConfirmation usage #79502
- Move odometer image stitching to confirmation page #84998
- [HOLD] [Odometer] Fix state restoration after App reload when image preview is open #82407
- Create unit test for
isOdometerDistanceRequesttransaction - [Odometer] DRY shared camera logic between IOURequestStepScan and Odometer image capture #83356
Main Flow Release 2: Add 'Save for later' feature
- Add Save for later button to the Odometer expense page
- Add ability for Odometer readings and image data to be saved to device storage
- Modify Odometer expense tab to detect and retrieve draft expense data
- Create test cases and update Help Doc pages regarding the Save for later feature
- Announce the feature in the next product announcement video
Bugs/Improvements:
- Phase 2 blockers
- Phase 2 non-blockers
- [Odometer] Enable Split on Odometer expenses #83232
Related to Odometer Not blocking
Related:
Proposal
Add Odometer mileage expenses to NewDot
Background
Expensify is completing the migration from Classic to NewDot. Feature parity is essential for retaining users during this migration, and odometer tracking is one of the few remaining blockers to achieving this. Manual odometer tracking is necessary for users who prefer explicit control over mileage entries rather than automatic GPS tracking, particularly for those who drive frequently for work and need precise records for tax purposes and reimbursement.
Problem
When users track distance expenses via odometer readings in Classic, if they are migrated to NewDot, then they must either manually calculate total distance (losing odometer proof and audit trail) or abandon NewDot to stay in classic or switch to a competing application.
Solution
Introduce odometer mileage as a distance tracking method in NewDot with feature parity to Classic. Users will be able to:
- Select the new Odometer tab in the Track Distance page
- Manually enter start and end mileage readings
- Attach photos of each reading
- View calculated odometer readings and submit as a distance expense
For compatibility and parity, the feature will use the same NVP storage approach (odometerStart, odometerEnd) and validation logic (preventing negative distances, requiring both readings for submission) as Classic.
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.comand paste in the Proposal - 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.
- Fill out the High-level overview of the problem, Timeline, Terminology, and High-level of proposed solution sections of the Design Doc
- Email
strategy@expensify.com(continue the same email chain as before - your last message should be the WN Proposal) with the link to your Design Doc containing your high-level problem and solution - Add the
DesignDocReviewlabel to get the High-level overview of the problem and 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.
- Fill out the Detailed implementation of the solution and related sections.
- Re-add the
DesignDocReviewlabel 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.comone last time to let them know the Design Doc is moving into the implementation phase - Implement the changes
- Add regression tests so that QA can test your feature with every deploy (instructions)
- Confirm any related help site updates have been published
- Send out a follow up email to
strategy@expensify.comonce 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
Type
Projects
Status