A New Collection of Thoughtful Learning Apps — Now Available on iOS & Android

Image
I’m excited to share a set of mobile apps I’ve recently completed and published on both the Google Play Store and the Apple App Store. These apps are designed with a simple goal in mind: to make meaningful, structured content more accessible, whether you’re studying theology or improving your English vocabulary. 📱 Now Available on Both Platforms All apps are live and available for download: Google Play Developer Page: https://play.google.com/store/apps/dev?id=5835943159853189043 Apple App Store Developer Page: https://apps.apple.com/ca/developer/q-z-l-corp/id1888794100 📖 Theology & Confession Study Apps For those interested in Reformed theology and classical Christian teachings, I’ve developed a series of apps that present foundational texts in a clean, focused reading format: The Belgic Confession Canons of Dort Heidelberg Catechism Westminster Shorter Catechism Each app is designed to provide a distraction-free experience, making it easier to read, reflect, and revisit these im...

React Native iOS Fix: MaterialIcons Showing “?” (Font Not Loaded) – Complete Guide

React Native iOS Fix: MaterialIcons Showing “?” (Font Not Loaded) – Complete Guide



If your React Native app is showing ? instead of MaterialIcons on iOS, the issue is almost always caused by a missing or unregistered icon font in the iOS build.

This guide explains:

  • Why this happens
  • How to fix it properly
  • How to avoid the common “Multiple commands produce MaterialIcons.ttf” error

Symptoms

You are using:

import MaterialIcons from '@react-native-vector-icons/material-icons';

And rendering icons like:

<MaterialIcons name="dashboard" size={24} color="#2563eb" />

But on iOS, you see:

  • A ? instead of icons
  • Blank icons
  • Or missing glyphs

Root Cause

The issue happens because MaterialIcons.ttf is not properly loaded in the iOS app bundle.

On iOS, fonts must be:

  1. Included in the app resources
  2. Registered in Info.plist

If either step is missing, iOS cannot render the icon font and falls back to ?.


Fix (Recommended Solution)

Step 1: Register Font in Info.plist

Open:

ios/<YourAppName>/Info.plist

Add the following:

<key>UIAppFonts</key>
<array>
  <string>MaterialIcons.ttf</string>
</array>

If UIAppFonts already exists, simply append:

<string>MaterialIcons.ttf</string>

Step 2: Clean and Rebuild iOS App

After updating Info.plist, you must fully rebuild the app.

Option A: Xcode

  • Product → Clean Build Folder
  • Delete app from simulator/device
  • Run again

Option B: CLI

npm run ios

If issues persist:

rm -rf ~/Library/Developer/Xcode/DerivedData

Then rebuild again.


Common Issue: “Multiple commands produce MaterialIcons.ttf”

You may see this error:

Multiple commands produce ... MaterialIcons.ttf

Why this happens

The font is being copied twice:

  • Xcode Build Phases (Copy Bundle Resources)
  • CocoaPods [CP] Copy Pods Resources

Fix Duplicate Font Copy

You must ensure ONLY ONE source copies the font.

Option A (Recommended)

If CocoaPods already handles it, remove MaterialIcons.ttf from:

Build Phases → Copy Bundle Resources

Option B

If you manually manage fonts, ensure CocoaPods is not duplicating it.

After fixing:

  • Clean build
  • Re-run app

Why This Happens on iOS More Than Android

iOS is stricter with asset management:

  • Fonts must be explicitly registered in Info.plist
  • Fonts must be included in app bundle
  • No automatic fallback like Android

Missing any step = icons break or show ?.


Quick Checklist

  • ✔ MaterialIcons.ttf exists in project
  • ✔ UIAppFonts exists in Info.plist
  • ✔ Font is listed inside UIAppFonts
  • ✔ No duplicate font copy in Xcode Build Phases
  • ✔ Clean build performed

Final Working Code

import MaterialIcons from '@react-native-vector-icons/material-icons';

<MaterialIcons name="dashboard" size={24} color="#2563eb" />

No changes needed to the import — the issue is purely native iOS font configuration.


Summary

If MaterialIcons show as ? on iOS:

  • Add MaterialIcons.ttf to UIAppFonts
  • Ensure no duplicate font copying in Xcode/CocoaPods
  • Clean and rebuild the project

Once correctly configured, icons will render properly across all iOS devices.

❤️ Support This Blog


If this post helped you, you can support my writing with a small donation. Thank you for reading.


Comments

Popular Posts

Fix “A problem occurred starting process 'command node'” in Android Studio for React Native

Fix up watchman issue with Ghost

Using Mutual TLS (mTLS) in Next.js (Server-Side Only)