{"adoption": {"forks": 131, "observed_at": "2026-08-28T04:03:31.237653+00:00", "stars": 1083}, "canonical_url": "https://ross.abutalabs.com/products/kennethtsang-growingtextview", "card": {"archived": false, "artifact_type": "library", "description": "An UITextView in Swift. Support auto growing, placeholder and length limit.", "domain": ["mobile-development", "frontend"], "enriched": true, "function": ["ui-components", "form-handling"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["KennethTsang/GrowingTextView"], "name": "KennethTsang/GrowingTextView", "platform": [], "pushed_at": "2022-10-11T12:15:29+00:00", "repo": "KennethTsang/GrowingTextView", "stars": 1083, "tags": ["uitextview", "auto-growing-textview", "chat-input", "placeholder", "character-limit", "cocoapods", "carthage", "swift", "messaging", "ios", "mobile"], "topics": ["uitextview", "growing", "placeholder", "growingtextview", "swift", "chat", "messaging"], "urls": [], "use_cases": ["auto-growing text input for a chat app message composer", "UITextView with placeholder text support in Swift", "limit the number of characters a user can type in a text view", "build an iMessage-style input toolbar in iOS", "make a text view resize dynamically as the user types", "drop-in replacement for UITextView in a messaging UI"], "what_it_is": "A Swift UITextView subclass for iOS that automatically grows with user input, supporting placeholder text and character length limits. It is commonly used as the message input field in chat and messaging interfaces.", "when_to_avoid": ["building for Android or cross-platform frameworks like Flutter or React Native", "you need a fully featured chat UI kit rather than just the input text view", "your project requires actively maintained dependencies with recent updates"], "when_to_choose": ["building an iOS chat or messaging interface that needs a self-resizing input field", "you want a UITextView with placeholder and max-length behavior without writing it yourself", "you need a lightweight, CocoaPods/Carthage-installable Swift component"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/kennethtsang-growingtextview", "repo": "KennethTsang/GrowingTextView", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:31.237653+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:50:12.382117+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "baf9f27518fc7980c2affb08b7bcf4e0e807981952c505e2a41da435ca15104f", "fetched_at": "2026-08-28T04:03:31.237653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/KennethTsang/GrowingTextView"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3850, "days_push": 1422, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}