elgigi/commonmark-emoji
An extension for the League CommonMark PHP parser that adds emoji support, converting :shortcode: names into Unicode emoji as Markdown is rendered. Drop it into an existing parser configuration to add emoji to posts and comments without touching your markup.
:tada:, :thumbsup:) that render to UTF-8 emoji in anything we parse as Markdown: comments, forum/community posts, issue trackers, internal docs, CMS bodies, changelogs.Environment extension on league/commonmark — worth quantifying the integration cost (hours, not weeks) against maintaining our own table.<img> tags, emoji survive export to email, PDF, RSS, and search indexing without extra work.Adopt (cautiously) when:
league/commonmark in PHP and want shortcode support without swapping parsers.Look elsewhere when — and this is the likely case:
league/commonmark ships its own emoji extension covering the same shortcode-to-UTF-8 conversion. For most teams that is the correct default: version compatibility is guaranteed by the upstream release cycle. This package needs to beat that, and it does not on maintenance.Verdict: viable as a spike or as a stopgap if you're pinned to an older commonmark version. Not viable as a durable platform dependency. If adopted, vendor or fork the mapping table so the project cannot be orphaned under you.
To executives: A small, MIT-licensed PHP add-on — no license cost, no procurement — that makes :tada:-style emoji render as real emoji in our Markdown content, matching what users expect from GitHub and Slack. The ask is a one-day evaluation spike, not a roadmap commitment. Flag honestly: the project has 29 stars, zero downstream dependents, and no release since August 2021, so it is a throwaway dependency rather than a platform bet.
To engineering: Integrate behind our own renderer interface so the underlying implementation is a one-file swap. Pin the version explicitly, do not track a branch, and assume we may need to fork the shortcode map. Benchmark it against league/commonmark's first-party emoji extension before writing any integration code — if that one works for us, we skip this dependency entirely and the spike is still a success, because it produced the decision.
How can I help you explore Laravel packages today?