When working with Dynamic Type, I find it useful to remember that sizes for the different text styles won't scale linearly, nor will they do proportionally between them. For larger dynamic type sizes, styles will come closer together in size.

Graph showing how the text size changes, in points, for the different text styles, as the dynamic type size changes. It is noticeable how styles get closer and closer to each other as the user picks a larger dynamic text size. Tere is always a hierarchy, but for small sizes, it is much more distinguishible. It seems a good strategy though, larger styles are already quite large and smaller ones will benefit from growing even more in order to become readable on mobile deices.

You may also find interesting...

For other UI elements that could also benefit from being scaled when using Dynamic Type, you can use UIFontMetrics's scaledValue(for:). Some good examples are progress bar components, which tend to be quite slim. https://developer.apple.com/documentation/uikit/uifontmetrics/scaledvalue(for:)

Color contrast between text and background is very important for perceivability. As colors come closer to each other, they’re more difficult to distinguish. Notice that colors that work well with big font sizes may not for smaller text.

Sometimes we may fail to convey to the user of things changing on the screen in a perceivable way. Toasts and similar should be announced. We may want to make clear that some content on the screen changed. Or we might want to update on progress.

Created in Swift with Ignite.

Supporting Swift for Swifts