Does SkipUI Text honor the Android system font-size setting (Dynamic Type / fontScale)?
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 330
- Forks
- 76
- Avg merge
- 3h 6m
- Merged PRs (30d)
- 1
Description
Does SkipUI Text honor the Android system font-size setting (Dynamic Type / fontScale)?
Summary
In a SkipFuse app, SkipUI Text does not appear to change size when the Android system font-size setting ("Display → Font size", i.e. Settings.System.font_scale) changes. As a result, Dynamic Type modifiers such as dynamicTypeSize(_:) (and, I suspect, @ScaledMetric) have nothing to act on. I'd like to understand whether this is intentional before building on top of it.
Repro
- A simple screen with a few
Text(...).font(.title)rows. - Set the system font scale and relaunch so it reflows:
adb shell settings put system font_scale 1.5 adb shell am force-stop <app-id> - Launch and compare against
font_scale 1.0.
Observed: the text renders at the same size at 1.5 as at 1.0. A row with no modifier renders at the same size as a row with a Dynamic-Type cap applied.
Expected (iOS / typical Compose): Compose lays text out in sp, which normally scales with LocalDensity.fontScale, so the unconstrained text would grow at 1.5×.
Consequence
Because the base text never scales with the system setting, dynamicTypeSize(...) — which is a cap on Dynamic Type growth — is effectively a no-op on Android: there is no growth to clamp. (dynamicTypeSize(_:) is currently @available(*, unavailable) anyway; this is about whether implementing it would be meaningful.)
Questions
- Is the Compose density
fontScaleintentionally pinned (e.g. the hostActivity/Configuration forcesfontScale = 1f) so that Skip apps ignore the system font-size setting — presumably to keep layouts stable, matching fixed iOS sizing? - If so, is there a supported way to opt in to system font scaling, so the app can respect the user's accessibility font-size preference?
- Given the above, should
dynamicTypeSize(_:)stay@available(*, unavailable), or is honoring Dynamic Type on Android on the roadmap?
Environment
- skip-ui 1.55.0, skip-fuse-ui 1.16.0
- Android emulator, API 36 (Android 16)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing SkipUI Text into the Android host Activity/Configuration and Compose density handling, focusing on Settings.System.font_scale and fontScale. Compare the behavior at 1.0 and 1.5, then document whether scaling is intentionally pinned, whether an opt-in exists, and whether dynamicTypeSize(_:) remains unavailable or has a planned path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, swift
- Domain
- accessibility, frontend, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100