Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Commonmark Emoji Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Feature decision — emoji rendering in user-generated content. Whether to support GitHub-style shortcodes (: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.
  • Roadmap — content parity expectations. Users arrive from GitHub, Slack, and Discord where shortcodes just work. Supporting them removes a recurring "why does my text look broken?" class of complaint and reduces the temptation for teams to bolt on a client-side emoji parser (two renderers, two sources of truth).
  • Build vs buy. The scope of the work is a shortcode-to-codepoint map plus a renderer hook. Building in-house means owning a ~1,800-entry mapping and its updates. This package is a drop-in Environment extension on league/commonmark — worth quantifying the integration cost (hours, not weeks) against maintaining our own table.
  • Use cases that justify it: community/forum platforms, ticketing and issue workflows, notification and email templates (UTF-8 output avoids image sprites and CDN dependencies), and any pipeline where Markdown is stored raw and rendered server-side.
  • Secondary value — portability of output. Because the result is plain UTF-8 text rather than <img> tags, emoji survive export to email, PDF, RSS, and search indexing without extra work.

When to Consider This Package

Adopt (cautiously) when:

  • You already run league/commonmark in PHP and want shortcode support without swapping parsers.
  • Rendering is server-side and UTF-8 text output is acceptable — no custom emoji images required.
  • You want a same-day prototype to validate demand before committing to a maintained path.

Look elsewhere when — and this is the likely case:

  • A first-party option exists. 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.
  • Maintenance posture matters. Last release 2021-08-23 (~3+ years), 29 stars, 0 dependents, effectively a single-maintainer project. No evidence of a security response path, no confirmation of support for current PHP/commonmark majors. Treat it as unmaintained until proven otherwise.
  • You need custom/uploaded emoji (Slack- or Discord-style image sets). This package is Unicode-only.
  • You need skin-tone modifiers, ZWJ sequences, or a picker UI — scope it against your actual emoji coverage requirements before assuming parity.
  • You are on a supported-versions policy that requires an actively released dependency for anything in the rendering path.

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.

How to Pitch It (Stakeholders)

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib