FluidGroup/NextGrowingTextView
53.9
Weak · 1 October 2026
1.5k
lines of production code
Swift
primary language
2
measurements over time
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.