Skip to content

[Due for payment 2025-06-17] [$50] Improve performance around the NavigationTabBar #63244

Description

@mountiny

Coming from here

Problem

NavigationTabBar apart from original its original render target TopLevelTabBar, is used in multiple components to work around existing transitions/animations issues:

  1. SearchSidebar
  2. BaseSidebarScreen
  3. SearchPageNarrow
  4. InitialSettingsPage
  5. WorkspaceInitialPage
  6. WorkspacesListPage

Those components are some of the most commonly used in the app, making NavigationTabBar be re-created at many user interactions and navigations.

Currently the cost of mounting NavigationTabBar on many interactions was measured to be:

  • ~100ms iOS simulator
  • ~20ms Web

Solution

Implement NavigationTabBarDummy which skips heavy parts and exposes only a UI component that resembles actual navigator. It can be done due to the fact that those doppelgangers are not responsible of handling logic and exist solely for fixing animations (source).

Potential cost of mounting NavigationTabBarDummy on many interactions was measured to be:

  • ~25ms iOS simulator -> 25% of original duration
  • ~5ms Web -> 25% of original duration
Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~021929505961389572009
  • Upwork Job ID: 1929505961389572009
  • Last Price Increase: 2025-07-05
Issue OwnerCurrent Issue Owner: @bfitzexpensify

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionBugSomething is broken. Auto assigns a BugZero manager.DailyKSv2ExternalAdded to denote the issue can be worked on by a contributor

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions