Skip to content

textTransform style does not work under Android with New Arch #39524

Closed

Description

@retrixe

Description

The textTransform style property does not work correctly on Android with the New Architecture enabled, none of the possible values, i.e. capitalize, lowercase or uppercase, function.

As per #39524 (comment) it does work correctly on iOS, this is Android specific.

React Native Version

0.72.4

Output of npx react-native info

System:
OS: Linux 6.5 Fedora Linux 39 (Workstation Edition Prerelease)
CPU: (8) x64 11th Gen Intel(R) Core(TM) i5-11320H @ 3.20GHz
Memory: 5.03 GB / 15.14 GB
Shell:
version: 5.2.15
path: /bin/bash
Binaries:
Node:
version: 20.6.1
path: /usr/local/bin/node
Yarn: Not Found
npm:
version: 9.8.1
path: /usr/local/bin/npm
Watchman:
version: 20221225.010033.0
path: /usr/local/bin/watchman
SDKs:
Android SDK:
API Levels:
- "31"
- "33"
Build Tools:
- 30.0.3
- 31.0.0
- 33.0.0
System Images:
- android-33 | Google APIs Intel x86_64 Atom
Android NDK: Not Found
IDEs:
Android Studio: Not Found
Languages:
Java:
version: 17.0.8
path: /usr/bin/javac
Ruby: Not Found
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.72.4
wanted: 0.72.4
npmGlobalPackages:
"react-native": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: Not found
newArchEnabled: Not found

Steps to reproduce

  1. Create a Text component e.g. <Text>hEllo!</Text>
  2. Set textTransform style on it, e.g. <Text> -> <Text style={{ textTransform: 'lowercase' }}> or uppercase or capitalize.
  3. Expect the text to become hello!, HELLO! or HEllo! for the 3 values respectively, but this only functions correctly on the Old Architecture, not New Architecture. (Side note: textTransform Capitalize Does Not Behave As it Does in CSS #34117 means capitalize has incorrect behaviour on Old Architecture as well.)

Snack, code example, screenshot, or link to a repository

https://github.com/retrixe/react-native-texttransform-bug (simply enabled the new arch and put this source code inside App.tsx)

import React from 'react';
import { SafeAreaView, ScrollView, Text, View } from 'react-native';

function App(): JSX.Element {
  return (
    <SafeAreaView>
      <ScrollView contentInsetAdjustmentBehavior="automatic">
        <View>
          <Text style={{textTransform: 'uppercase'}}>uppercase</Text>
          <Text style={{textTransform: 'lowercase'}}>LOWERCASE</Text>
          <Text style={{textTransform: 'capitalize'}}>capitalize</Text>
        </View>
      </ScrollView>
    </SafeAreaView>
  );
}

export default App;

Activity

  1. added
    Needs: ReproThis issue could be improved with a clear list of steps to reproduce the issue.
    and removed
    Needs: ReproThis issue could be improved with a clear list of steps to reproduce the issue.
    on Sep 18, 2023
  2. enzomanuelmangano commented on Sep 19, 2023

    @enzomanuelmangano

    Hi @retrixe I'm experiencing the same issue on Android and I'm not able to reproduce by running the project on iOS

  3. lucascamargolighthouse commented on Jun 12, 2025

    @lucascamargolighthouse

    Hello guys 👋

    I'm using React Native 0.79.3 and noticed an inconsistency in the textTransform: 'capitalize' behavior:

    • On iOS, it works even when the text is fully uppercase (e.g., "HELLO WORLD" becomes "Hello World").

    • On Android, it doesn't change anything when the text is all uppercase, regardless of whether the new architecture is enabled or not.

    Is this an expected behavior on Android? Or could it be a platform-specific bug?

    Thanks in advance!

    Image

    Image
  4. Daniel3711997 commented on Oct 23, 2025

    @Daniel3711997

    Any news here? :)

  5. asnichols commented on Jan 7, 2026

    @asnichols

    I am also experiencing the bug where textTransform no longer works on Android regardless of new arch being on or not

  6. marcshilling commented on Jan 8, 2026

    @marcshilling

    I see lots of commits tied to this and issue closed, but I'm still having the issue on RN 0.79. What version of RN is this fixed in?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions