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

Reactions Laravel Package

fof/reactions

Add reactions to Flarum posts with fof/reactions. Let users react using emoji or custom icons, with configurable reaction sets, per-post reaction summaries, and a reactions list. Lightweight, extensible, and easy to configure.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Framing correction (important): fof/reactions is not a Laravel package — it is a Flarum extension (type: flarum-extension) that runs on Flarum's Laravel-derived foundation (Illuminate container, Eloquent, database migrations, event dispatcher) but is not installable into a Laravel application. Any evaluation that treats it as a drop-in Composer dependency for a Laravel service is wrong, and that misunderstanding is the single biggest risk in the intake record. The relevant question is not "should we add this to our Laravel app" but "do we operate Flarum, or are we prepared to."

Architecture fit: High fit only if a Flarum forum is already in the estate. The extension follows Flarum's extender/API conventions: a reactions table with a polymorphic-ish link to posts and users, permission-scoped visibility (view/post reactions), a JSON:API resource, and a Mithril/TypeScript frontend bundled through Flarum's asset compiler. It integrates through Flarum's extension lifecycle rather than through application service providers, so it composes with core search, notifications, and permission systems out of the box.

Integration feasibility: Mechanically trivial inside Flarum — composer require fof/reactions, php flarum migrate, php flarum cache:clear, enable in admin. The real effort is environmental (PHP 8.x, MySQL/MariaDB, writable extensions/storage, asset rebuild pipeline), not code.

Technical risk:

  • Single-vendor dependency. FriendsOfFlarum is a volunteer collective; 21 stars and 0 recorded dependents means effectively no ecosystem pressure-testing and a thin bus factor.
  • Release metadata anomaly. The stated last release of 2026-10-23 is a future/invalid date. Before adoption, verify the actual tag, its signature, and the diff — treat this as a data-quality flag that may indicate a bad mirror, mis-parsed metadata, or a compromised/renamed package. Do not install until the provenance is confirmed.
  • Upgrade coupling. The extension must track Flarum core majors; frontend breakage after core upgrades is the most common failure. No SLA, MIT, no warranty.
  • Data model growth. One row per (post, user, reaction); large communities produce tens of millions of rows and require a unique constraint plus sensible indexing.

Key questions for the vendor/owner: Which Flarum core versions are supported and tested? Is there an active maintainer with commit rights? How are reactions aggregated for display (denormalized counters vs. per-request COUNT)? Does it integrate with the search driver and notification system? What is the data export/GDPR story for user reactions? Is there an anti-abuse rate limit (reaction spam)?

Integration Approach

Stack fit: PHP 8.1–8.3, MySQL 8/MariaDB 10.6+, Flarum 1.x, Redis for cache/sessions recommended, S3-compatible object storage if the forum already uses fof/upload. Composer-based deploy with a committed composer.lock; the extension version must be pinned exactly, not floated.

Migration path:

  1. If greenfield Flarum: include in the base image and seed with the standard migration run.
  2. If brownfield Flarum with an existing "likes" implementation (clarkwinkelmann/flarum-ext-likes, fof/gamification, or a bespoke likes column): do not run both. Write a one-off backfill mapping legacy like rows to a single +1-style reaction record, verify counts row-for-row, then disable and uninstall the predecessor.
  3. If no Flarum exists: this is not an integration, it is a platform decision. Budget a full forum deployment, auth/SSO bridging from the Laravel app, and moderation tooling — the extension is the cheapest part of that program.

Compatibility checks: extension-type conflicts with other reaction/like extensions; search index rebuild required after adding the resource; permission matrix must be set explicitly (guest view, member react, moderation delete); confirm the frontend asset build succeeds against the pinned core version before promoting.

Sequencing: metadata/provenance verification → staging install with a production-shaped data snapshot → migrate + cache clear → smoke test (post, react, unreact, permission boundaries, notification delivery, mobile layout) → permission-gated production rollout to a small group → full enablement after one week → then legacy cleanup. Never run the migration on a large posts table outside a maintenance window; the reactions table build is fast, but index creation on a busy DB is not.

Operational Impact

Maintenance: Low ongoing code maintenance (small surface area, clean extender usage) but non-zero ownership: someone must watch upstream releases, re-test against each Flarum core bump, and be prepared to fork. Realistic budget: ~2–4 hours/month steady state, plus 1–2 days per core minor upgrade. Because there are no downstream dependents, the community will not surface regressions for you.

Support: Community forum and GitHub issues only; no commercial support, no CVE process, no deprecation notice. Mitigate by vendoring the extension into your own repository after provenance verification so an upstream deletion or hostile takeover cannot break deploys.

Scaling: The dominant cost is write amplification on popular threads and read amplification on thread listings. Enforce a unique index on (post_id, user_id, reaction_type-ish key), index post_id for aggregate fetches, and confirm posts eager-load reaction summaries to avoid N+1. If the community is large, plan for a periodic aggregation job and eventual archival of cold reaction rows. Frontend cost is minor (a few icons per post).

Failure modes:

  • Extension disabled or failing to boot → reactions UI disappears; data persists but perceived loss of engagement history.
  • Broken frontend bundle after a core upgrade → blank or partially rendered discussion pages (highest-severity, most likely failure).
  • Migration conflict with a prior likes extension → duplicate/ambiguous counts.
  • Permission misconfiguration → reaction lists leaking user behavior to guests, or reactions silently unavailable.
  • Cache staleness after deploy → reactions appear not to persist.
  • Release-metadata anomaly (see above) → supply-chain exposure if an unverified tag is installed.

Ramp-up: A Laravel-fluent engineer can deploy it in half a day; understanding Flarum's extender model, permission scoping, and asset pipeline takes 1–2 days. Add a half-day for the provenance/security review. The organizational ramp-up is the harder part: decide explicitly who owns the forum platform before adopting an extension that only makes sense inside one.

Bottom line: Good tactical fit for an existing Flarum instance (low cost, conventional design), poor strategic fit as a "Laravel package" — and the combination of 0 dependents, 21 stars, and an impossible release date makes provenance verification a hard gate, not a formality.

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.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package