Skip to content

feat(mobile): native iOS large-title headers for Inbox & My Issues#4269

Open
voska wants to merge 1 commit into
multica-ai:mainfrom
voska:feat/native-large-title-headers
Open

feat(mobile): native iOS large-title headers for Inbox & My Issues#4269
voska wants to merge 1 commit into
multica-ai:mainfrom
voska:feat/native-large-title-headers

Conversation

@voska

@voska voska commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Gives the Inbox and My Issues tab roots the native iOS large-title navigation bar (the title that sits big at rest and collapses to an inline title on scroll — Mail/Settings/Files style), replacing the custom flat JS header.

headerLargeTitle is a UINavigationController feature exposed only by react-native-screens' native stack — the react-navigation bottom-tabs header (JS) can't render it. So each of these two tab roots becomes a nested native Stack.

Related Issue

N/A — native-feel polish; no tracking issue.

Closes #

Type of Change

  • New feature (non-breaking change that adds functionality)
  • Refactor / code improvement (no behavior change)

Changes Made

  • app/(app)/[workspace]/(tabs)/inbox.tsxinbox/_layout.tsx (native Stack with headerLargeTitle) + inbox/index.tsx
  • app/(app)/[workspace]/(tabs)/my-issues.tsx → folder split; the scope toolbar now rides as the SectionList ListHeaderComponent so the list sits flush under the bar and the title collapses on scroll
  • Dropped the custom flat <Header>; its action buttons moved into the native headerRight
  • Lists opt in via contentInsetAdjustmentBehavior="automatic"

How to Test

  1. Open Inbox or My Issues on iOS.
  2. The screen title renders as a large iOS title and collapses to an inline title as you scroll.
  3. Header actions (search / +) sit in the native nav bar.

Checklist

  • If this change affects the UI, I have included before/after screenshots
  • pnpm typecheck passes; verified manually in the iOS Simulator
  • No automated test — this is native nav-bar rendering, not unit-testable logic

AI Disclosure

AI tool used: Claude Code

Prompt / approach: Researched 2025–2026 React Native native-feel best practices, then converted each list tab root to a nested native Stack to unlock headerLargeTitle. Verified before/after in the iOS Simulator (driven via idb).

Screenshots

My Issues — before (flat header) / after (large title)
My Issues before/after

Inbox — before / after
Inbox before/after

Wrap the Inbox and My Issues tab roots in native Stacks so they render the
iOS large-title nav bar (a UINavigationController feature exposed only by
react-native-screens' native stack — the JS bottom-tabs header can't do it).

- Inbox / My Issues each become a folder: _layout.tsx (native Stack) + index.tsx
- Drop the custom flat <Header>; move its actions into the native headerRight
- My Issues' scope toolbar rides as the SectionList ListHeaderComponent so the
  list sits flush under the bar and the title collapses on scroll
- Lists opt in via contentInsetAdjustmentBehavior="automatic"
@vercel

vercel Bot commented Jun 17, 2026

Copy link
Copy Markdown

@voska is attempting to deploy a commit to the IndexLabs Team on Vercel.

A member of the Team first needs to authorize it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant