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

Socialbuttons Widget Laravel Package

friendsofvictoire/socialbuttons-widget

A Laravel widget package for adding social media share buttons to your application. It provides a reusable component for displaying links to popular social networks, helping visitors share your content. Suitable for Blade templates and widget-based layouts, it is lightweight and easy to integrate in...

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — fundamental mismatch. Despite being catalogued as a "Laravel/PHP package," friendsofvictoire/socialbuttons-widget ships as WidgetSocialButtonsBundle — a Symfony bundle, not a Laravel package. It targets the Victoire CMS ecosystem (a Symfony 2/3-era CMS), which means it depends on Symfony's bundle/DI extension conventions (Extension, CompilerPass, service tagging) and on Victoire's own widget registration model and persistence layer. Laravel's service container, package discovery, and Blade rendering have no equivalent hook for any of this. There is no Illuminate\Support\ServiceProvider, no composer.json extra.laravel block, and no Blade views. The architecture fit for a Laravel codebase is effectively zero without a rewrite.

Integration feasibility — low. The only genuinely portable asset is the conceptual surface: a small Twig/HTML partial that renders share links to social endpoints. That content is on the order of a few dozen lines and is trivially reimplementable as a Blade component or a SocialShare value object. Attempting to install the bundle into Laravel would require pulling in Symfony components, Victoire's widget contracts, and Doctrine-backed widget entities — a dependency graph far larger than the delivered value. Recommended feasibility verdict: do not integrate; reimplement the ~1 file of value in-house (est. 1–2 days).

Technical risk — high, concentrated in abandonment. Signals:

Signal Value Implication
Stars 1 No community validation, no peer review
Dependents 0 No production proof, no downstream bug reports
Last release 2019-04-04 ~6 years unmaintained
Score 0.195 Effectively below any adoption threshold
Ecosystem Victoire CMS (Symfony 2/3) Parent ecosystem is itself dormant

Additional risk: a social-buttons widget of this vintage almost certainly still renders Google+ (shut down April 2019 — the same month as the last release) and likely legacy Twitter/Facebook share endpoints. The package is also pre-dates modern privacy/CSP expectations: no consent gating, no rel="noopener noreferrer" guarantees, and likely inline scripts or third-party iframes that would conflict with a strict CSP or GDPR consent banner. There is no security response path — no maintainer to issue a patch if a rendered third-party endpoint becomes an XSS or tracking vector.

Key questions for the team:

  1. What is the actual requirement — static share links (safe, zero-JS) or embedded third-party SDK buttons with counts (privacy and CSP burden)?
  2. Which networks must be supported in 2025? (Google+ is dead; X/Twitter, Facebook, LinkedIn, WhatsApp, Bluesky/Mastodon are the realistic set.)
  3. Does the product already have a Blade component library or design system where a share component belongs?
  4. Is there any constraint (licensing, offline install) preventing a 1–2 day in-house build?
  5. Has anyone audited the parent Victoire ecosystem for a live maintainer before considering any transitive dependency?

Integration Approach

Stack fit — none, by design. Laravel's package contract is a service provider plus optional Blade/Twig views and config publishing. This bundle is registered through Symfony's AppKernel/bundles.php and Victoire's widget compiler passes; it has no Laravel-facing entry point. Treat the repo as reference material, not a dependency.

Migration path — reimplement, don't port. Concretely:

  • Lift the markup pattern (which URL templates each network expects) from the bundle's Twig template into a single Blade component, e.g. resources/views/components/social-share.blade.php.
  • Encode the network → share-URL mapping in a small PHP enum or config array so marketing can edit targets without a deploy.
  • Render as plain <a href> links with target="_blank" rel="noopener noreferrer nofollow" and urlencode()d canonical URLs. This avoids third-party JS entirely, sidestepping CSP and consent concerns.
  • If share counts are required, that is a separate project with its own vendor evaluation — do not inherit it from this package.

Compatibility. The bundle's Symfony 2/3 and PHP 5.6/7.0-era constraints are incompatible with a modern Laravel 10/11 runtime (PHP 8.1+). Composer resolution would either fail or force a downgrade of shared Symfony contracts — an unacceptable blast radius for a share-buttons feature.

Sequencing.

  1. Week 1: Confirm requirement scope (links vs. SDK, network list, consent posture). Close out the package evaluation with a written "rejected — reimplement" decision so it isn't re-litigated.
  2. Week 1–2: Build the Blade component + config map; add feature tests asserting URL encoding and rel/target attributes.
  3. Week 2: Design/accessibility review; add CSP and consent-banner test coverage.
  4. Ongoing: Track the network list as config, reviewed quarterly alongside the marketing calendar.

Total incremental build: 1–2 engineering days, versus an unbounded integration effort with no support contract.

Operational Impact

Maintenance. Zero upstream maintenance is available — the last release is 2019 and the repo shows no active stewardship. Adopting it would transfer 100% of maintenance burden to your team while still inheriting the bundle's Symfony-shaped internals. The in-house alternative is ~50 lines under your own test coverage, which is a materially better maintenance position.

Support. No maintainer, no issue triage, no security disclosure channel. Bus factor of the dependency is effectively zero. For a TPM, this is a single-vendor, single-maintainer, unmaintained profile — categorically unsupportable for anything touching user-facing pages.

Scaling. The functional load is negligible: server-side string interpolation into a handful of anchors, no database, no queue, no external API calls at render time, no meaningful memory or CPU footprint. There is no scaling story to evaluate — which is also why the package's value proposition doesn't justify any dependency weight at all. The scaling concern is organizational, not technical: every additional third-party endpoint you render is an ongoing surface to monitor for deprecation.

Failure modes.

  • Dead endpoints: Google+ (removed 2019) is likely still hardcoded; legacy Twitter/Facebook share URLs have shifted. Broken links ship silently — no error, just a 404 for the user.
  • CSP violations: If the widget embeds third-party scripts or iframes, it will break under any script-src/frame-src policy and needs an explicit allowlist.
  • Privacy/consent: Third-party buttons typically set cookies or beacon on render — a GDPR/ePrivacy exposure if not gated behind consent.
  • Composer deadlock: Symfony 2/3 constraints colliding with modern Laravel dependencies, surfacing as an unresolvable composer update at the worst possible time.
  • Silent abandonment: No CVE feed, no changelog; a future vulnerability would only surface via external audit.

Ramp-up. Effectively zero learning curve — the entire feature is a URL template per network. Any Laravel developer can own this with no onboarding. This low ramp-up cost is precisely the argument against taking the dependency: the package's only differentiated asset is cheap to reproduce and expensive to inherit.

Recommendation: Reject the package. Record the decision, build a Blade share-link component in-house, encode networks as configuration, and revisit only if a maintained, Laravel-native package (or a first-party vendor SDK) emerges with real adoption signals.

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.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator