Skip to content
CAI
Software that uses CAICheck a score

FluidGroup/NextGrowingTextView

53.9

Weak · 1 October 2026

1.5k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a reusable iOS text input component library that provides a growing text editor for both UIKit and SwiftUI. It allows developers to integrate a dynamic text field that automatically adjusts its height based on content, supporting features like line limits, placeholder management, and scroll behavior configuration. The library is distributed via Swift Package Manager and includes a demo application to showcase its capabilities across different frameworks.

Features

New SwiftUI growing text editor demo and preview catalog

Developers can now explore the SwiftUI \GrowingTextEditor\ component through a dedicated demo application. This includes a \GrowingTextEditorConfiguration\ type for setting minimum/maximum lines and padding, a \GrowingTextEditor\ view that dynamically resizes based on content, and a comprehensive preview catalog (\SwiftUIGrowingTextEditorOverviewPreview\) showcasing various configurations, including a Messages-style chat composer. The demo also provides UIKit counterparts for comparison, allowing users to verify the growing behavior across both frameworks.

Development, GrowingTextViewDemo, NextGrowingTextViewSwiftUI · high confidence

Removals

Removal of Xcode project file

The Xcode project file for the example application (NextGrowingTextView.xcodeproj) has been deleted from the repository. This removes the local build configuration and project structure for the example target, meaning the example app can no longer be built or run directly from this project file.

Example/NextGrowingTextView.xcodeproj · high confidence

Removal of legacy XIB and Storyboard files in example project

The example application's \LaunchScreen.xib\ and \Main.storyboard\ files have been deleted. This removes the static interface definitions for the launch screen and the main view controller, indicating that the example app's UI is now likely defined programmatically or through a different mechanism not present in this location.

Example/NextGrowingTextView/Base.lproj · high confidence

Removal of placeholder Pod structure files

The placeholder assets and source files for the Pod module have been removed. Specifically, the \.gitkeep\ files in \Pod/Assets\ and \Pod/Classes\, along with the \ReplaceMe.swift\ stub in \Pod/Classes\, are no longer present, indicating the cleanup of initial scaffolding.

Pod · high confidence

Removed obsolete Swift 2 example files

The example project's AppDelegate, Info.plist, and ViewController files have been deleted. These files were part of an older Swift 2 implementation and are no longer needed, likely as part of the migration to Swift 3 and the adoption of Auto Layout in the example app.

Example/NextGrowingTextView · high confidence

Behavioural changes

Demo project restructured to launch the framework directly

The Xcode project configuration has been updated to change the demo application's launch target from the previous example app to the NextGrowingTextView framework itself. This shift means that running the demo now builds and launches the framework binary directly, altering the development workflow for contributors testing the library.

NextGrowingTextView.xcodeproj · high confidence

NextGrowingTextView API modernized with configuration struct and internal architecture

The NextGrowingTextView component has been refactored to use a modern, declarative API. Users now configure behavior via a new \Configuration\ struct that exposes options for minimum/maximum lines, automatic scrolling, flash scroll indicators, and placeholder hiding modes (on focus or on typed text). The public interface also exposes a \State\ struct to track editing status and text content, along with an \actionHandler\ for observing height and state changes. Internally, the view hierarchy has been restructured to use a dedicated \InternalTextView\ for handling text events and a \SizingContainerView\ to manage layout calculations, replacing the previous monolithic implementation.

NextGrowingTextView · high confidence

SwiftUI support and modernized API

The library now includes a native SwiftUI component, NextGrowingTextViewSwiftUI, for iOS 17 and later, which uses a hidden TextEditor to calculate height for the visible GrowingTextEditor. The existing UIKit API has been modernized to use a configuration object for settings like line limits and scroll behavior, and the flash scroll indicators now correctly depend on the isFlashScrollIndicatorsEnabled value. Additionally, the project has migrated its CI from Travis CI to GitHub Actions.

(repo-wide) · high confidence

Test coverage

Removed legacy Swift 2.2 test scaffolding

The Example/Tests directory has removed its legacy test infrastructure, specifically the Info.plist and the placeholder Tests.swift file that contained only stub implementations for functional and performance tests. This cleanup aligns with the project's migration to Swift 3, eliminating obsolete test scaffolding that is no longer needed.

Example/Tests · high confidence

Dependencies

Migrate to Swift Package Manager and drop CocoaPods support

The library now supports installation via Swift Package Manager (SPM) with a new Package.swift defining targets for both UIKit and SwiftUI variants, while CocoaPods distribution is removed by deleting the Podfile and podspec. The SPM manifest targets iOS 16 and Swift 6, and the resolved dependencies include FluidGroup/Descriptors, ResultBuilderKit, swift-storybook, swift-syntax, FluidGroup/swiftui-support, and Texture ecosystem packages.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 56 → 54 (-2.0)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 55 → 55 (+0.0)
  • Readiness 29 → 27 (-2.0)
  • Security 100 → 100 (+0.0)

New (3)

  • Documentation: no usage examples (README.md)
  • Duplicate configuration types with overlapping intent. Both Configuration and GrowingTextEditorConfiguration define minLines and maxLines. GrowingTextEditorConfiguration adds padding/spacing, but the core 'growing' constraints are duplicated. Additionally, maxLines is Int in one and Int? in the other, creating inconsistency in how optional constraints are handled.
  • State management inconsistency. NextGrowingTextView exposes a state property of type State which contains text and isEditing. However, NextGrowingTextView also has a textView: UITextView property. In UIKit, UITextView is the source of truth for text and editing state. Exposing a separate State object that likely mirrors UITextView's internal state creates a risk of desynchronization and redundant data. Furthermore, GrowingTextEditor uses a Binding<String> for text, implying a reactive/state-driven approach, while NextGrowingTextView exposes imperative UIKit properties.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

FluidGroup/NextGrowingTextView was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 63f2139c440ee7e731852eb1af0553522771f78f — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.