DEV Community

[Deprecated] Custom fonts in React Native (Expo)

Burhanuddin Udaipurwala on May 21, 2020

The @use-expo/font package has been deprecated. Use the new expo-font package instead. Docs for which can be found here - https://docs.expo.dev/ve...
Collapse
 
kbrandwijk profile image
Kim Brandwijk •

@burhanuday Hi, first of all, my compliments on the very clear blog post. I have one small remark though, the @use-expo/font package is deprecated, as the useFonts hook is part of the core expo-font package for quite a while now.
To avoid confusion for Expo users that come across your blog, would it be possible to either update the snippets to use expo-font (it's a drop-in replacement), or add a note at the beginning of the article? Thank you!

Kim (Developer Success Engineer @ Expo)

Collapse
 
burhanuday profile image
Burhanuddin Udaipurwala •

updating the blog post to say that this is deprecated and linking to the expo-font package. thank you

Collapse
 
redearthbluesky profile image
Ian Salt • • Edited

Hi, thanks for this was a big help today. However, I got an error using Apploading and destructured it one step further by creating a SetFont.js component and importing it into the root component. I have tested and the fonts are available throughout the app.

const SetFonts = () => {
const [isLoaded] = useFonts({
'AlfaSlabOne': require('../../assets/fonts/AlfaSlabOne-Regular.ttf'),
'OpenSans': require('../../assets/fonts/Open_Sans/OpenSans-Regular.ttf'),
'Calibri': require('../../assets/fonts/calibri/Calibri-Regular.ttf')
})

if (!isLoaded) {
return AppLoading
} else {
return null
}
}

Collapse
 
burhanuday profile image
Burhanuddin Udaipurwala •

Hi, if this is the exact code you're using, wrap Font is loading... in quotes - "Font is loading...". That might be the problem

Collapse
 
redearthbluesky profile image
Ian Salt • • Edited

Hi, yep I added return AppLoading back instead and it works now

Collapse
 
benjanapo profile image
Napolitano Andrea •

Hi, i'm really struggling for import fonts in my code... One tutorial say to use "react-native link" and another says to use "Font.useFonts". The one that worked for me is the second but I would like to load all fonts once in the App.tsx and then use them in all other components, how can I do this?

Collapse
 
redearthbluesky profile image
Ian Salt •

It worked and now I went back to the project and getting an error message I need to use Font.loadAsynch. I have fixed with add the code later but I think need to add the fonts manually to the android project as not working on device.

Collapse
 
kbanashek profile image
Kyle Banashek •

How would component screens(not App.js) access or make use of those fonts?

Collapse
 
burhanuday profile image
Burhanuddin Udaipurwala •

All screens will be able to use the imported fonts. Just like in CSS

Collapse
 
enigama profile image
Eugene •

Thanks so much dude, really helpful

Collapse
 
burhanuday profile image
Burhanuddin Udaipurwala •

Thanks a lot😁