Skip to content

[$250] [Approve Travel R4] Spend → Travel → Needs approval #104420

Open

Description

@stitesExpensify

Part of the Approve Travel in New Expensify project

Main issue: #659261
Doc section: Design doc, Detailed Implementation → Release 4, steps 4 to 8
Project: https://github.com/orgs/Expensify/projects/354

Blocked by: #104417, #693389

Feature Description

  • Menu item. Define the search in SearchSuggestionUtils, like the approve search: type trip, status outstanding, to the current user. Add it to the Travel section with its empty state, the same way the approve item is added. Add the key to App's search keys. It's a built-in search, so its Status and To filters show without an X.
  • Strings. search.tabs.approveTrips: "Needs approval". search.searchResults.emptyApproveTripsResults.title: "No trips to approve". ...subtitle: "Zero trips. Maximum chill. Well done!"
  • Sidebar badge. Add a branch in getSectionBadgeText. It counts trips, not bookings.
  • Columns. Release 1 columns plus Approver. The deadline shows as a line under the row in normal text colour. The Action column shows Review.
  • Rows after a decision. While a request is in flight, Review shows a spinner. On success the row leaves the list if no booking on the trip is still waiting on this approver. On failure the spinner clears and the row shows an error. On other lists the row stays and its status updates.
  • Empty state. EmptySearchView only shows fireworks for to-do keys; add approveTrips to that check now (#104421 makes it a real to-do key).
  • Offline. Shows the last loaded list. Review stays enabled. Approve and Reject stay blocked.

Everything user-facing here is behind the TRAVEL_APPROVAL beta (Release 1, step 0).

Manual Test Steps

  1. As an approver with trips waiting, open Spend → Travel. Verify Needs approval shows with a badge counting trips.
  2. Open it. Verify one row per trip, with Approver, a deadline line, and Review.
  3. Review a trip and approve its only outstanding booking. Verify the row leaves the list and the badge drops.
  4. Approve every trip. Verify the empty state with fireworks.
  5. As a user who isn't an approver on any trip, verify Needs approval doesn't show.

Automated Tests

  • Needs approval lists only trips waiting on the signed-in user.
  • The sidebar badge counts trips.
Issue OwnerCurrent Issue Owner: @suneox

Activity

  1. melvin-bot commented on Oct 19, 2026

    @melvin-bot

    Triggered auto assignment to Design team member for new feature review - @dubielzyk-expensify (NewFeature)

  2. changed the title [-][Approve Travel R4] Spend → Travel → Needs approval[/-] [+][$250] [Approve Travel R4] Spend → Travel → Needs approval[/+] on Oct 28, 2026
  3. melvin-bot commented on Oct 28, 2026

    @melvin-bot

    ⚠️ Could not update price automatically because there is no linked Upwork Job ID. The BZ team member will need to update the price manually in Upwork.

  4. self-assigned this
    on Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions