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

Flags Laravel Package

flarum/flags

Flarum extension that lets moderators flag posts for review, adding a dedicated flags list and permission controls for reviewing and resolving flagged content.

Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first thing to correct in the intake record: flarum/flags is not a Laravel package. It is a Flarum extension — a Composer-installable PHP package that boots inside flarum/core's extension lifecycle, not inside a Laravel service container. It has no service providers, no Illuminate dependencies, and no relevance to a Laravel application unless that application is a Flarum forum. If the business need is "moderation/flagging workflow for our Laravel product," this package is the wrong building block and the evaluation should stop here. If the need is "community forum with user-generated content moderation," then Flarum is the platform decision and this extension is a feature within it.

What it actually does. It provides the flag/report primitive: users flag posts (and users), flags are recorded, moderators review and action them, and the extension wires permissions and notifications around that workflow. It is a first-party Flarum extension, historically bundled with core and split out as its own package for independent versioning.

Integration feasibility. High if Flarum is already the platform — composer require flarum/flags, enable via admin or php flarum extension:enable flarum-flags, run migrations. Low otherwise: adopting it means adopting Flarum, its PHP/MySQL stack, its permission model, its frontend (Mithril/JS), and its release cadence.

Technical risk.

  • Read-only subtree split. The repository is a CI-generated mirror of the flarum/framework monorepo. Issues and PRs do not land here; any fork or local patch is a maintenance liability that must be reapplied every release. This is the single most important operational fact about the package.
  • Version coupling. Releases are cut in lockstep with Flarum core. Composer constraints must track the core major/minor; a mismatch produces boot failures or failed migrations rather than graceful degradation.
  • Metadata quality. Last release is dated 2026-10-14, which is inconsistent with the rest of the record and suggests either an automated-release artifact or a metadata error in the intake pipeline. The 10-star count is not a quality signal for a split repo — the real signal is the parent project's health, which is not captured here. The composite score of ~19.8 should be treated as low-confidence, not as a verdict.
  • Schema exposure. The extension owns tables and migration history. Uninstalling or downgrading is non-trivial and can orphan flag records.

Key questions for the team.

  1. Are we running Flarum, or evaluating this against a Laravel codebase by mistake?
  2. Which Flarum core version are we pinned to, and does this extension's constraint match it?
  3. Is flagging already present in our core bundle, making this a duplicate install?
  4. What is our patch posture for a read-only package — can we live with upstream-only fixes?
  5. Do we need flag data to leave Flarum (export, SIEM, moderation analytics)? No such integration exists here.
  6. Who owns the monorepo upgrade when a CVE lands in core?

Integration Approach

Stack fit. PHP 8.x, MySQL/MariaDB, Composer — compatible with a standard Laravel-era toolchain at the runtime level, incompatible at the framework level. Treat it as a Flarum plugin, full stop. There is no adapter path that makes this extension useful inside a non-Flarum PHP app short of lifting the flag domain model and reimplementing it, at which point you are not integrating this package, you are reading it as a reference implementation.

Migration path. Two scenarios:

  • Greenfield Flarum: install via Composer alongside core, enable, run php flarum migrate, seed permissions for the relevant groups (members can flag, moderators can view/resolve), verify notification wiring to the moderation queue. Half a day for an experienced Flarum developer.
  • Existing Flarum on an older core: upgrade core first, then the extension, in that order. Never bump the extension ahead of core. Take a database snapshot before migrating; the flags tables carry user-generated moderation history that is expensive to reconstruct.

Compatibility. Constrain in composer.json to the matching Flarum core series and let core's own dependency resolution govern. Pin exact versions in production and upgrade deliberately — auto-updating a read-only split package is how you get a boot loop on a Friday.

Sequencing.

  1. Confirm platform decision (Flarum yes/no) — gate for everything else.
  2. Audit core version and existing extension inventory for a bundled flags implementation.
  3. Stand up a staging forum with production-like content volume; enable the extension; run migrations.
  4. Configure permission matrix and moderation queue UX; test notification volume under realistic flag rates.
  5. Define the upgrade runbook and the patch-vs-upstream decision rule before go-live.
  6. Production rollout in a maintenance window, with a rollback path that includes both code and schema.

Operational Impact

Maintenance. Low code churn, high coordination cost. The extension itself is stable; the burden is tracking Flarum core releases and re-validating on each bump. Because the repo is a read-only split, there is no local issue tracker and no merge path for fixes — every deviation from upstream is a permanent fork cost. Budget a recurring line item for core upgrade validation, not for extension maintenance.

Support. Community-supported via the Flarum discourse and the framework monorepo. No vendor SLA, no security advisory feed specific to this package — advisories arrive through core. If the forum is customer-facing and moderation is a compliance control, that absence of formal support is a real risk to document, not hand-wave.

Scaling. Negligible incremental load — flag writes are small row inserts and the read path is moderator-facing, not hot. The scaling concern is not this extension but the forum itself: search, attachment storage, and notification fan-out dominate. Watch flag-table growth if the community is large and moderation is slow; archiving resolved flags should be a scheduled job, not an afterthought.

Failure modes.

  • Version drift → extension fails to boot after a core upgrade; forum returns 500 until disabled. Highest-probability failure.
  • Migration conflict → schema drift in staging vs production; requires manual reconciliation.
  • Permission misconfiguration → flagging silently unavailable to members, or visible to unintended groups; caught only by QA.
  • Notification storms → high flag volume overwhelms moderators; needs rate limiting and queue batching.
  • Abuse → coordinated flagging used to suppress legitimate content; requires per-user flag caps and audit logging.

Ramp-up. For a developer already fluent in Flarum: under a day to productive, under a week to own the upgrade runbook. For a Laravel-only team with no Flarum exposure: two to three weeks to fluency in the extension lifecycle, Mithril frontend conventions, and the permission model — and that cost should be charged against the platform decision, not against this package.

TPM recommendation. Do not approve on the basis of this record alone. The score and star count are misleading for a subtree split, and the release date is inconsistent. Re-scope the evaluation to "Flarum as forum platform, with flags as a required capability," confirm the core version constraint, and confirm that read-only upstream-only support is acceptable for a moderation control. If the originating request was for a Laravel application, reject the intake as a category error and route it back.

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.
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
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle