--- title: Load fonts natively at build time impact: LOW impactDescription: fonts available at launch, no async loading tags: fonts, expo, performance, config-plugin --- ## Use Expo Config Plugin for Font Loading Use the `expo-font` config plugin to embed fonts at build time instead of `useFonts` or `Font.loadAsync`. Embedded fonts are more efficient. **Incorrect (async font loading):** ```tsx import { useFonts } from "expo-font"; import { Text, View } from "react-native"; function App() { const [fontsLoaded] = useFonts({ "Geist-Bold": require("./assets/fonts/Geist-Bold.otf"), }); if (!fontsLoaded) { return null; } return ( Hello ); } ``` **Correct (config plugin, fonts embedded at build):** ```json // app.json { "expo": { "plugins": [ [ "expo-font", { "fonts": ["./assets/fonts/Geist-Bold.otf"] } ] ] } } ``` ```tsx import { Text, View } from "react-native"; function App() { // No loading state needed—font is already available return ( Hello ); } ``` After adding fonts to the config plugin, run `npx expo prebuild` and rebuild the native app. Reference: [Expo Font Documentation](https://docs.expo.dev/versions/latest/sdk/font/)