Skip to content

[Due for payment 2026-02-17] [BT-001] Add Dynamic Routes Configuration #80906

@mjasikowski

Description

@mjasikowski

Description

Current State:

  • Routes are defined as static paths in ROUTES.ts
  • Each verify-account variant requires a separate route definition
  • The VERIFY_ACCOUNT constant exists (line 52) but is just a string literal
  • No centralized configuration for dynamic route suffixes
  • Each verify-account screen has its own type definition and linking config entry

Implementation:
This task sets up all the configuration required for dynamic routes across 4 files:

  1. ROUTES.ts - Add DYNAMIC_ROUTES configuration and types
  2. SCREENS.ts - Add screen key constant
  3. types.ts - Add dynamic route param types
  4. linkingConfig/config.ts - Add dynamic route screen mapping

Part A: ROUTES.ts Configuration

File: App/src/ROUTES.ts

Add DynamicRouteConfig type definition and DYNAMIC_ROUTES configuration object:

type DynamicRouteConfig = {
    path: string;
    entryScreens: Screen[];
};

const DYNAMIC_ROUTES = {
    VERIFY_ACCOUNT: {
        path: 'verify-account',
        entryScreens: [], // Populated during migration
    },
} as const satisfies Record<string, DynamicRouteConfig>;

type DynamicRouteSuffix = (typeof DYNAMIC_ROUTES)[keyof typeof DYNAMIC_ROUTES]['path'];

Part B: SCREENS.ts Configuration

File: App/src/SCREENS.ts

Add screen key constant:

DYNAMIC: {
    VERIFY_ACCOUNT: 'Dynamic_Verify_Account',
},

Part C: Type Definitions

File: App/src/libs/Navigation/types.ts

Add dynamic route param types and exports.

Part D: Linking Config

File: App/src/libs/Navigation/linkingConfig/config.ts

Add dynamic route screen entry to the appropriate navigator.


Scope

Files:

  • App/src/ROUTES.ts
  • App/src/SCREENS.ts
  • App/src/libs/Navigation/types.ts
  • App/src/libs/Navigation/linkingConfig/config.ts

Dependencies: None (first task in sequence)

Metadata

Metadata

Labels

Awaiting PaymentAuto-added when associated PR is deployed to productionInternalRequires API changes or must be handled by Expensify staffWeeklyKSv2

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions