hoa/ustring
Hoa\Ustring is a PHP library for handling Unicode strings as objects, offering UTF-8-aware manipulation of grapheme clusters, case conversion, search, replace, and iteration for safer, more robust multilingual text processing in PHP applications.
It does not support a build decision — it supports a "do not adopt / retire" decision. The most valuable output of this evaluation is a defensible no, plus a short migration note if any usage is discovered. Frame it that way internally so the analysis isn't mistaken for a backlog item.
Hoa\Ustring offers an object-oriented UTF-8 string API with grapheme-level operations, but it implements Unicode handling in userland PHP rather than leaning on the engine's mbstring/intl extensions — a design that historically carried correctness and performance costs and, more importantly, has had no maintainer since January 2017.hoa/ustring (or its hoa/consistency / hoa/exception siblings) in a composer.json/composer.lock is a flagged item for the platform-health review, not a feature decision.Adoption criteria — there is effectively no greenfield case. Consider it only if all of the following hold: the codebase already depends on it; the deployment target is a frozen, offline PHP runtime old enough that modern alternatives are unavailable; and there is a documented, tested behavioral reason the replacement cannot be swapped in. Even then, treat it as a time-boxed, tracked debt item rather than an approved dependency.
Look elsewhere — this is the default path. In any Laravel application on a supported PHP version, use what is already in the framework and already in the vendor tree:
Str / Str::of() fluent string helpers for everyday manipulation.symfony/string (UnicodeString, AbstractUnicodeString) for grapheme-aware slicing, truncation, and case folding — actively maintained and already a transitive dependency in modern Laravel.intl extension (Normalizer, grapheme_*) at the boundary where locale rules actually matter.Disqualifying signals to weigh explicitly: archived status (no security patches, no PHP-version compatibility work), last tagged release in January 2017, zero dependents in the ecosystem (low battle-testing and low community escape velocity), and the abandonment of the wider Hoa project. If a spike is ever warranted, constrain it to one developer-day: grep the codebase, run the test suite against a swapped implementation, and close it out either way.
To executives: Recommendation: no spend, no adoption. We evaluated a UTF-8 string-handling library against the internationalization needs on our roadmap. It addresses a genuine problem but has been unmaintained since 2017, is formally archived, and has no meaningful downstream adoption. Adopting it would add supply-chain and correctness risk while duplicating capabilities we already ship with the framework. Cost of the decision: zero. Cost avoided: an unpatched dependency in the user-facing string path.
To engineering: The capability we want — grapheme-cluster-safe manipulation for multilingual names and emoji — is covered by Str/Stringable and symfony/string, both maintained and already present. Hoa\Ustring predates and bypasses mbstring/intl, so behavior may diverge from the rest of the stack. Action: one sweep for Hoa\Ustring references in our repositories and any inherited vendor trees; if found, replace with the Symfony/Laravel equivalents and add a regression test on the specific inputs we care about. If nothing is found, we close this as evaluated-and-declined and record the criteria so the next person doesn't re-litigate it.
Headline numbers for the summary slide: 399 stars, 0 dependents, last release 2017-01-16, archived. Stars indicate past interest; dependents and maintenance status indicate present viability. We should weigh the second pair.
How can I help you explore Laravel packages today?