{"adoption": {"forks": 84, "observed_at": "2026-08-28T04:04:12.694307+00:00", "stars": 1273}, "canonical_url": "https://ross.abutalabs.com/products/stretchy", "card": {"archived": false, "artifact_type": "library", "description": "Form element autosizing, the way it should be", "domain": ["web-development", "frontend"], "enriched": true, "function": ["ui-components", "form-handling"], "health_score": 20, "homepage": "https://stretchy.verou.me/", "language": "JavaScript", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["LeaVerou/stretchy"], "name": "LeaVerou/stretchy", "platform": ["browser"], "pushed_at": "2023-12-15T06:23:35+00:00", "repo": "LeaVerou/stretchy", "stars": 1273, "tags": ["autosizing", "form-controls", "vanilla-js", "no-dependencies", "shadow-dom", "nodejs"], "topics": [], "urls": [], "use_cases": ["autosize textareas to fit their content", "make text inputs grow with typed text", "resize select menus to fit their selected option", "autosize form controls added dynamically to the page", "autosize form controls inside shadow DOM web components", "restrict autosizing to specific form controls via a CSS selector"], "what_it_is": "Stretchy is a tiny standalone JavaScript library that automatically autosizes HTML form controls such as textareas, text inputs, and select menus. It works via a simple script include or ESM/CJS import, requires no configuration, and adapts to dynamically added elements using mutation observers.", "when_to_avoid": ["you need a full form validation or form-building framework", "your project already uses a large UI framework with built-in autosizing components", "you need to support very old browsers not covered by v2"], "when_to_choose": ["you want dependency-free, tiny (<1.5KB) form autosizing", "you need autosizing to work with plain HTML without writing JavaScript", "you need it to respect existing CSS constraints like min/max width and transitions", "you use web components and need Shadow DOM support"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/stretchy", "repo": "LeaVerou/stretchy", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "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:04:12.694307+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:12.694307+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:03:10.691859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f85cf47170506742ad6cf0473f237ab6bc49229f617ff252f72c98e254a44b89", "fetched_at": "2026-08-28T04:04:12.694307+00:00", "kind": "readme", "missing": false, "url": "https://github.com/LeaVerou/stretchy"}, {"content_hash": "20e3fb4afc267c26ec2530f7c838fd4767f155a2f9fbf1943b172c2b3672d9e4", "fetched_at": "2026-08-29T12:14:29.044191+00:00", "kind": "homepage", "missing": false, "url": "https://stretchy.verou.me/"}, {"content_hash": "46085c2dfa42fb159ddb41a6d0ace9078650269dab68ef3d6eaebc8ca95d1217", "fetched_at": "2026-08-29T12:14:29.048858+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/stretchy"}, {"content_hash": "7fee3a5942adf53d3c47e1337ab168cd48fc0be92ed38d44e1176534002d7608", "fetched_at": "2026-08-29T12:14:29.046803+00:00", "kind": "site_page", "missing": false, "url": "http://lea.verou.me/2015/07/stretchy-form-element-autosizing-the-way-it-should-be"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4057, "days_push": 992, "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}}