Skip to main content
Question

Custom fonts Bold weight not working on Android V2 Paywalls (works on iOS)

  • August 16, 2025
  • 8 replies
  • 208 views

Forum|alt.badge.img

Platform: React Native

SDK Version: react-native-purchases 8.11.6, react-native-purchases-ui 8.11.6

Issue: Bold font weight not applying on Android V2 Paywalls (works perfectly on iOS)

 

Problem Description

I have successfully configured custom fonts ("Nunito Sans") for V2 Paywalls and they work perfectly on iOS, but on Android the bold weight is not being applied - all text appears as regular weight even when elements are configured as bold in the RevenueCat dashboard.

 

What Works ✅

- Custom font "Nunito Sans" loads correctly on Android (showing custom font instead of system font)

- All font weights work perfectly on iOS

- Regular font weight displays correctly on Android

 

What Doesn't Work

- Bold font weight on Android (appears as regular weight)

- Text configured as bold in dashboard renders as regular on Android only

 

Technical Configuration

 

Environment

- React Native: 0.76.9 (bare workflow, NOT Expo)

- RevenueCat SDK: react-native-purchases 8.11.6

- RevenueCat UI: react-native-purchases-ui 8.11.6

- Android Target SDK: 34

- Android Min SDK: 24

 

Android Font Setup:

 

android/app/src/main/assets/fonts/

├── NunitoSans-Regular.ttf

├── NunitoSans-Bold.ttf

├── NunitoSans-BoldItalic.ttf

├── NunitoSans-Italic.ttf

└── ... (other weights)

android/app/src/main/res/font/

├── nunitosans_regular.ttf (copied from assets)

├── nunitosans_bold.ttf (copied from assets)

└── nunito_sans.xml

 

XML Font Family (nunito_sans.xml):

 

<?xml version="1.0" encoding="utf-8"?>

<font-family xmlns:android="http://schemas.android.com/apk/res/android">

<font

android:fontStyle="normal"

android:fontWeight="400"

android:font="@font/nunitosans_regular" />

<font

android:fontStyle="normal"

android:fontWeight="700"

android:font="@font/nunitosans_bold" />

</font-family>

 

iOS Configuration (Working):

 

<!-- Info.plist -->

<key>UIAppFonts</key>

<array>

<string>NunitoSans-Regular.ttf</string>

<string>NunitoSans-Bold.ttf</string>

<string>NunitoSans-BoldItalic.ttf</string>

<string>NunitoSans-Italic.ttf</string>

<!-- ... other weights -->

</array>

 

RevenueCat Dashboard Configuration:

- Using "Map font family automatically"

- "Nunito Sans" detected and showing in dropdown

- Elements configured with Bold styling in paywall designer

- No specific font mapping (letting RevenueCat auto-detect)

 

Font Asset Management:

- Fonts managed with `react-native-asset` (version 2.1.1) in bare React Native workflow

- Original fonts in `assets/fonts/` directory

- Copied to Android `res/font/` for XML family definition

- **Note:** This is a bare React Native project, NOT using Expo managed workflow

 

What I've Tried

1. ✅ **Tested multiple fontWeight values** in XML (400, 500, 600, 700, 800, 900)

2. ✅ **Tried different naming conventions** (nunitosans_*.ttf, nunito_sans_*.ttf)

3. ✅ **Verified Android naming conventions** - no uppercase/special characters in res/font

4. ✅ **Tested both approaches** - res/font XML method and direct assets/fonts method

5. ✅ **Dashboard mapping tests** - tried both auto-detection and manual mapping

 

Logs/Evidence

- adb logcat shows no font-related errors during paywall display

- Regular "Nunito Sans" font loads successfully (confirmed visually - differs from system font)

- Bold elements in RevenueCat dashboard display correctly on iOS simulator but not Android emulator

- Font family "Nunito Sans" appears correctly in RevenueCat dashboard font dropdown

 

Code Implementation

 

Paywall Presentation:

 

const paywallResult: PAYWALL_RESULT = await RevenueCatUI.presentPaywall({

...(offering ? {offering} : {}),

});

 

Questions

1. Are there known limitations with font weights in Android V2 Paywalls?

2. Does RevenueCat have specific requirements for fontWeight mapping on Android beyond standard XML?

3. Are there any bare React Native-specific considerations for custom fonts in V2 Paywalls beyond the standard native configuration?

4. Any recommended debugging steps to trace font weight resolution in RevenueCat SDK?

5. Does using `react-native-asset` for font management affect how RevenueCat detects or applies font weights on Android?

 

Test Environment

- Android Emulator: Pixel 4 API 32

- iOS Simulator: Various devices (all working correctly)

 

Any insights would be greatly appreciated! The setup works perfectly on iOS, so I suspect this might be an Android-specific limitation or configuration requirement in the RevenueCat V2 Paywall rendering system.

This post has been closed for comments

8 replies

  • New Member
  • August 20, 2025

Hey, have you ever figured this out?


Forum|alt.badge.img+8
  • RevenueCat Staff
  • August 26, 2025

Hi, a fix for this issue is being worked on and will be released this week between Thursday and Friday. I'll update here as soon as it gets released. 


Forum|alt.badge.img+2
  • New Member
  • September 9, 2025

Hi ​@Haley Pace ,
Any updates regarding the fix? We are also facing the same issue.

Thanks!


  • New Member
  • September 9, 2025

Hey ​@sergey-kwak, I had the same problem and for me the issue was fixed in react-native-purchases version 9.2.3. They resolved it with these changes: https://github.com/RevenueCat/purchases-android/pull/2624


Forum|alt.badge.img+2
  • New Member
  • September 9, 2025

Oh great, thanks ​@Domantas!


Forum|alt.badge.img+8
  • RevenueCat Staff
  • September 15, 2025

Hi ​@sergey-kwak apologies for the delay here! This should have been fixed on Android 8.23.0, please let me know if upgrading your React Native SDK to 9.x+ fixes this for you! Note that if you are using one-time purchases you might not want to upgrade that high due to the issue described here, so you could also see if React Native 8.11.10 helps.


  • New Member
  • September 23, 2025

Hi ​@Haley Pace,

Will the fix also be released for the Flutter SDK? I have the same issue in purchases_flutter v.9.6.2

 

Thanks!

 


Forum|alt.badge.img+8
  • RevenueCat Staff
  • September 29, 2025

Hi ​@pier this fix should be included in Flutter SDK version 8.11.0 here and for Flutter SDK version 9.2.3 and up as this was done in Android 9.3.2. If you are seeing this in Flutter 9.6.2 then could you please share more information in a support ticket here

  • Your paywall code
  • The font file you are using
  • Full RevenueCat debug logs with log level verbose, see our docs here