Repository navigation
Description
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
- Install T3 Code-nightly Version 0.1.7-nightly.20261103.4119 (cefb544) (Android).
- Connect to any T3 server, open a thread with atleast one agent reply.
- 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
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
shivamhwp commentedon Nov 3, 2026
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.