Skip to content

feat: add measureContent support for Nitro Views#1431

Open
patrickkabwe wants to merge 2 commits into
mrousavy:mainfrom
patrickkabwe:feat/measurable-view
Open

feat: add measureContent support for Nitro Views#1431
patrickkabwe wants to merge 2 commits into
mrousavy:mainfrom
patrickkabwe:feat/measurable-view

Conversation

@patrickkabwe

Copy link
Copy Markdown
Contributor

Closes #1199

This PR adds native self-measurement for Nitro Views.

  • Opt in with MeasurableView
  • Yoga calls measureContent(...)
  • Props, layout context, and constraints are passed to native code
  • No .nitro.ts changes needed

Swift

final class HybridNitroTextView: HybridNitroTextViewSpec, MeasurableView {
  let view = UILabel()

  static func measureContent(
    props: NitroTextViewProps,
    layoutContext: LayoutContext,
    layoutConstraints: LayoutConstraints
  ) -> Size {
    let maxWidth = layoutConstraints.maximumSize.width
    let width = min(Double(props.text.count * 8), maxWidth)
    let lineCount = ceil(Double(props.text.count * 8) / maxWidth)
    let height = lineCount * props.fontSize * 1.2

    return Size(width: width, height: height)
  }
}

Kotlin

class HybridNitroTextView(context: Context) : HybridNitroTextViewSpec() {
  override val view = TextView(context)

  companion object : MeasurableView<NitroTextViewProps> {
    override fun measureContent(
      props: NitroTextViewProps,
      layoutContext: LayoutContext,
      layoutConstraints: LayoutConstraints,
    ): Size {
      val maxWidth = layoutConstraints.maximumSize.width
      val width = minOf(props.text.length * 8.0, maxWidth)
      val lineCount = ceil((props.text.length * 8.0) / maxWidth)
      val height = lineCount * props.fontSize * 1.2

      return Size(width, height)
    }
  }
}
ANDROID IOS
measureContent-android.mp4
measureContent-ios.mov

@vercel

vercel Bot commented Jul 8, 2026

Copy link
Copy Markdown

@patrickkabwe is attempting to deploy a commit to the Margelo Team on Vercel.

A member of the Team first needs to authorize it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Support measureContent(...) for Nitro Views

1 participant