Skip to content

Releases: mdjastrzebski/react-native-plain-text

v0.8.0

Choose a tag to compare

@mdjastrzebski mdjastrzebski released this 20 Aug 21:45

0.8.0 (2026-08-20)

✨ Features

🐛 Bug Fixes

  • android: seed LayoutParams in PlainTextView constructor to prevent setText NPE (#11) (ae22a4f)

🙌 New Contributors

v0.7.2

Choose a tag to compare

@mdjastrzebski mdjastrzebski released this 18 Aug 20:55

0.7.2 (2026-08-18)

🐛 Bug Fixes

  • baseline flexbox alignment (beb21f6)
  • iOS: control size drift with font scaling (8b55f7d)

📝 Documentation

v0.7.1

Choose a tag to compare

@mdjastrzebski mdjastrzebski released this 17 Aug 20:57

0.7.1 (2026-08-17)

🐛 Bug Fixes

  • ios: fix zero letterSpacing layout drift (9ccccda)
  • ios: conditionally disable iOS line height clipping fix (e59f63d)

v0.7.0

Choose a tag to compare

@mdjastrzebski mdjastrzebski released this 12 Aug 20:51

0.7.0 (2026-08-12)

✨ Features

  • ios: verticalAlign/textAlignVertical styles (#7) (4890949)

🐛 Bug Fixes

  • ios: line height clipping (#8) (3e1e134)
  • ios: tiny text misalignment vs RN Text with font scaling (cf1ae5a)

v0.6.1

Choose a tag to compare

@mdjastrzebski mdjastrzebski released this 08 Aug 08:44

0.6.1 (2026-08-08)

⚡ Performance

v0.6.0

Choose a tag to compare

@mdjastrzebski mdjastrzebski released this 06 Aug 18:45

0.6.0 (2026-08-06)

✨ Features

🐛 Bug Fixes

  • android: borders support (2743fae)
  • android: text padding (e84e9cf)
  • ios: enable view recycling (ceba9d0)
  • ios: resolve fontFamily through the family's font names (#4) (de2f28a)
  • ios: underline location with custom line height (be4e6aa)

🙌 New Contributors

v0.5.2

Choose a tag to compare

@mdjastrzebski mdjastrzebski released this 03 Aug 21:58

0.5.2 (2026-08-03)

🐛 Bug Fixes

  • android: borders support (2743fae)
  • android: text padding (e84e9cf)
  • ios: disable view recycling (7283b92)
  • ios: underline location with custom line height (be4e6aa)

v0.5.1

Choose a tag to compare

@mdjastrzebski mdjastrzebski released this 29 Jul 20:19

0.5.1 (2026-07-29)

Bug Fixes

  • ios: text wrapping discrepancy (5750492)
  • react to text scale changes after render (e53081e)

v0.5.0

Choose a tag to compare

@mdjastrzebski mdjastrzebski released this 28 Jul 18:50

0.5.0 (2026-07-28)

Initial public release 🎉

PlainText renders a single string straight to the platform's native text
widget — UILabel on iOS, TextView on Android — instead of going through
React Native's own text layout pipeline.

Performance vs RN <Text>

Release builds, mean of 3 runs, measured with the example app's Performance
tab. Compare each figure against RN <Text> on the same device and text size;
see measuring.md for the method.

iOS Android
Memory per mounted view 15–25% lower ~33% lower
Time to mount 1000 views 13–21% faster ~30% faster

What's supported

Styles

  • fontSize
  • color
  • fontWeight
  • fontFamily
  • lineHeight
  • fontStyle: 'normal' | 'italic'
  • textAlign
  • textDecorationLine: 'none' | 'underline' | 'line-through' | 'underline line-through'
  • letterSpacing
  • verticalAlign / textAlignVertical:Android only, matching RN <Text>
  • Every other ViewStyle prop (width, height, margin, padding, backgroundColor, opacity, …), forwarded to the native view as-is

Props

  • children: plain string only
  • numberOfLines
  • ellipsizeMode: 'head' | 'middle' | 'tail' | 'clip'
  • allowFontScaling / maxFontSizeMultiplier: accessibility text scaling
  • testID, accessibilityRole, accessibilityLabel, accessibilityHint, accessibilityState, nativeID and the rest of the accessibility props
  • Self-sizing: views measure to their content, so no explicit width / height is needed

Not supported

Deliberately excluded:

  • Nested <Text> and mixed-style fragments: one string, one style
  • onPress / onLongPress / onResponder*: wrap it in Pressable
  • selectable / selectionColor / suppressHighlighting: UILabel isn't selectable by design; use RN's <Text>
  • dataDetectorType: auto-linking needs attributed text spans
  • textTransform: do it in JS (children.toUpperCase())
  • writingDirection: RTL belongs in I18nManager, globally
  • textBreakStrategy / lineBreakStrategyIOS / android_hyphenationFrequency
  • onTextLayout: heavy line-metrics payload; deferred until there's demand