Skip to content

[Bug]: Android: chat header and composer render the system font instead of DM Sans #30199

Open

Description

@justsrc

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/mobile

Steps to reproduce

  1. Install T3 Code-nightly Version 0.1.7-nightly.20261103.4119 (cefb544) (Android).
  2. Connect to any T3 server, open a thread with atleast one agent reply.
  3. Compare header title/subtitle and composer hint with the body text.

Expected behavior

Expected: all DM Sans. Actual: header and composer use the platform sans.

Actual behavior

Header title and subtitle render in what looks like the platform default sans instead of DM Sans, and the composer's 'Ask anything' hint matches. Body text renders DM Sans correctly. Screenshot attached. Seen on 0.1.7-nightly.20261103.4119 (cefb544).

Impact

Cosmetic issue

Version or commit

0.1.7-nightly.20261103.4119 (cefb544)

Environment

Android

Logs or stack traces

AndroidScreenHeader.tsx: and style={subtitleTypography}; useScaledTextRole returns only {fontSize, lineHeight}, never fontFamily.
T3ComposerEditorView.kt:272: editor.typeface = if (fontFamily.contains("Mono", ignoreCase = true)) Typeface.MONOSPACE else Typeface.DEFAULT
app.config.ts expo-font android.fonts: registers DMSans-Regular/Medium/Bold in res/font, comment says the Android font packs exist 'so RN and the native composer share fonts before runtime loading.'
Screenshot: see attached (DM Sans body vs Roboto header/composer)

Screenshots, recordings, or supporting files

Android thread: DM Sans body, Roboto header and composer

Workaround

No workaround that I was able to find.

Diagnosis by an agent (opencode/pulse-alpha-free (T3 Code))

Header: Compose Text (@expo/ui/jetpack-compose) in AndroidScreenHeader.tsx via AppBar.android.tsx; style comes from useScaledTextRole('title'|'label') returning only {fontSize, lineHeight}, never fontFamily, so Compose falls back to Roboto. Regression in #19995 (AndroidScreenHeader moved from RN AppText/font-sans = DMSans-Regular to Compose; native typography deferred: 'native typography left' in #19994/#19995 design tables). Composer: T3ComposerEditorView.kt setFontFamily maps non-Mono families to Typeface.DEFAULT, ignoring DMSans-Regular passed from JS (T3ComposerEditor.native.tsx:297); iOS resolves it via UIFont(name:). DM Sans is bundled for Android via expo-font (DMSans-Regular/Medium/Bold in res/font); chat body renders it on-device. All other Compose Text call sites omit fontFamily too (MenuPopup, Button, Dialog, sheets, widget). Not intentional. iOS native headers have the same gap.

Related: #21987 (unmerged) fixes the composer half only

Activity

  1. added
    bugSomething is broken or behaving incorrectly.
    needs-triageIssue needs maintainer review and initial categorization.
    on Nov 3, 2026
  2. shivamhwp commented on Nov 3, 2026

    @shivamhwp
    Collaborator

    [GPT-6.1 Sol][Codex] on behalf of shivam.

    Julius has taken this over in #30230. I confirmed that PR closes this issue and covers both the Android header and composer. No changes or device tests were started in this issue-watch thread; handing off to that PR.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions