Skip to content

[pull] main from MetaMask:main#421

Merged
pull[bot] merged 1 commit into
Reality2byte:mainfrom
MetaMask:main
Dec 18, 2025
Merged

[pull] main from MetaMask:main#421
pull[bot] merged 1 commit into
Reality2byte:mainfrom
MetaMask:main

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Dec 18, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

## **Description**

This PR introduces utility functions that wrap the new header components
(`HeaderCenter`, `HeaderWithTitleLeft`, `HeaderWithTitleLeftScrollable`)
to return React Navigation-compatible screen options. These utilities
will enable gradual deprecation of the `Navbar/index.js` file by
providing a cleaner, more consistent API for navigation headers.

**Motivation:**
- The current `Navbar/index.js` contains 40+ functions with inconsistent
patterns and mixed concerns
- The new header components provide a more composable and maintainable
approach
- These utility functions bridge the gap between the new components and
React Navigation's expected format

**Changes:**
- Added `getHeaderCenterNavbarOptions` - for centered titles with
optional back/close buttons
- Added `getHeaderWithTitleLeftNavbarOptions` - for left-aligned large
titles with optional back button
- Added `getHeaderWithTitleLeftScrollableNavbarOptions` - for collapsing
headers that respond to scroll
- Added unit tests for all utility functions
- Updated each component's `index.ts` to export the new utilities

## **Changelog**

CHANGELOG entry: null

## **Related issues**

Fixes: https://consensyssoftware.atlassian.net/browse/MDP-652

## **Manual testing steps**

```gherkin
Feature: Header Navigation Options Utilities

  Scenario: Developer uses getHeaderCenterNavbarOptions
    Given a React Navigation stack screen
    When developer passes getHeaderCenterNavbarOptions({ title: "Settings", onBack: () => navigation.goBack() }) to screen options
    Then the screen displays a HeaderCenter component with the title and back button

  Scenario: Developer uses getHeaderWithTitleLeftNavbarOptions
    Given a React Navigation stack screen
    When developer passes getHeaderWithTitleLeftNavbarOptions({ onBack, titleLeftProps: { title: "NFT", topLabel: "Collection" } }) to screen options
    Then the screen displays a HeaderWithTitleLeft component with large left-aligned title

  Scenario: Developer uses getHeaderWithTitleLeftScrollableNavbarOptions
    Given a React Navigation stack screen with a ScrollView
    When developer uses the hook and utility together
    Then the header collapses smoothly as the user scrolls
```

## **Screenshots/Recordings**

### **Before**

N/A - New utility functions, no visual changes

### **After**

N/A - These are developer-facing utilities that wrap existing components

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [x] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Add utilities to wrap header components into React Navigation `header`
options, with tests and updated exports.
> 
> - **Component Library**:
> - **New utilities**: Add `getHeaderCenterNavbarOptions`,
`getHeaderWithTitleLeftNavbarOptions`, and
`getHeaderWithTitleLeftScrollableNavbarOptions` that return React
Navigation-compatible `header` options.
> - **Tests**: Unit tests for each utility covering rendering,
callbacks, and prop forwarding.
>   - **Exports**: Update `index.ts` files to export the new utilities.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
5c9b9d8. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@pull pull Bot locked and limited conversation to collaborators Dec 18, 2025
@pull pull Bot added the ⤵️ pull label Dec 18, 2025
@pull pull Bot merged commit 1a45cbd into Reality2byte:main Dec 18, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant