friendsofvictoire/sharethis-widget
A Laravel package for quickly integrating ShareThis social sharing widgets into Blade views. Add configurable share buttons with minimal setup, making it easy for visitors to share your content across social networks.
Architecture fit — poor. Despite the "Laravel/PHP package" framing, friendsofvictoire/sharethis-widget is not a Laravel package at all. It is a Symfony bundle (WidgetShareThisBundle) built specifically for Victoire DCMS, a Symfony-based CMS. Its structure follows Symfony conventions that Laravel has no analogue for:
DependencyInjection/ extension + Configuration classes for XML/YAML service wiringResources/config/ service definitionsWidget/ classes extending Victoire's BaseWidget contract, coupled to Victoire's WidgetType form abstraction and Twig rendering pipelineNone of this resolves through Laravel's container. There is no service provider, no facade, no config publish path, no Blade views. Installing it via Composer would autoload classes that cannot be instantiated outside a Victoire kernel.
Integration feasibility — trivial to reimplement, non-trivial to adopt. The functional payload is a ShareThis embed: a <script> tag referencing platform-api.sharethis.com/js/sharethis.js with a property ID, plus inline share-button markup (.sharethis-inline-share-buttons) and optionally a small config block for display options. That is roughly 30–60 lines of markup and configuration. A Laravel equivalent is a Blade component plus a config/sharethis.php entry — on the order of half a day to one day including tests, styling hooks, and consent gating. There is no server-side logic, no data model, no queueing, no API client to port.
Technical risk — high, concentrated in abandonment and compliance.
| Risk | Severity | Notes |
|---|---|---|
| Unmaintained since 2016-11-16 | High | ~9 years with no release. No PHP 8.x or Symfony 5/6/7 constraints; almost certainly pins PHP 5.6/7.0-era syntax and Symfony 2/3 APIs. |
| Zero adoption signal | High | 1 star, 0 dependents. No downstream consumers to surface breakage, no issue triage, no security review. Score of 0.095 reflects this accurately. |
| Third-party dependency exposure | Medium–High | Even a correct implementation delegates to ShareThis's CDN and JS API. Vendor-side changes break us silently regardless of package quality. |
| Privacy / consent | High | ShareThis is an ad-tech/tracking-adjacent script. Under GDPR/UK GDPR/ePrivacy and CCPA, it must not load before consent. The 2016-era bundle predates any consent-mode integration; nothing in it handles gating. |
| Supply-chain / license | Low–Medium | FriendsOfVictoire projects are conventionally MIT, but this must be verified; an unmaintained, unaudited transitive dependency is a poor trade for 50 lines of markup. |
Key questions for the business and engineering leads:
navigator.share) plus a lightweight first-party set of links before committing to any vendor SDK.Verdict: Do not adopt. The package's only reusable asset is design intent. Treat this as a build-vs-buy decision where "build" costs under a day and "buy" imports nine years of unmaintained Symfony-specific code into a Laravel codebase.
Stack fit — no direct fit; port the concept, not the code. Target implementation in Laravel:
app/View/Components/ShareThis.php — a class-based Blade component accepting propertyId, layout, networks, and enabled propsresources/views/components/share-this.blade.php — renders the container <div class="sharethis-inline-share-buttons"> and the deferred script tagconfig/services/sharethis.php — property ID and per-environment enablement, sourced from env vars, never hardcodedShareThisConsent gate: a @once-guarded script loader that renders only when the consent cookie/state permitsIf the consumer is a Filament or custom admin CMS, wrap the component as a reusable block/field type rather than porting Victoire's Widget/WidgetType pair — Filament's block and form builder abstractions occupy that role.
Migration path — greenfield, since there is nothing to migrate from. If a Victoire site is being re-platformed to Laravel, extract only:
Discard the PHP entirely. Map widget placements to Blade @include/component calls at the corresponding layout positions.
Compatibility — assume incompatible until proven otherwise. Before any code is written, run a five-minute check: composer require friendsofvictoire/sharethis-widget --dry-run against the target PHP version. Expect constraint failures. Even on a hypothetical compatible PHP, Symfony\Component\HttpKernel\Bundle\Bundle and Victoire's widget interfaces will not resolve without victoire/widget-bundle and a Symfony kernel. There is no Laravel bridge, no illuminate/support dependency, and no reason to expect one.
Sequencing:
platform-api.sharethis.com and platform-cdn.sharethis.com; defer/async attributes; SRI if the vendor publishes hashes.Maintenance — near zero code maintenance, ongoing vendor vigilance. The in-house component is small enough that it will not rot, but it inherits a permanent third-party dependency. Assign explicit ownership for monitoring ShareThis platform changes and for the annual consent/vendor review. Do not create a fork of the original bundle under any circumstances — a fork of a 2016 Symfony bundle is a maintenance liability with no upside.
Support — none from the package. No maintainer activity since 2016, no issue triage, no security advisories, no changelog, no upgrade guide. Any defect we encounter is ours to fix. This is acceptable only because we are not shipping their code.
Scaling — effectively free. Rendering is a handful of HTML nodes and one deferred script. There is no server-side work, no database, no cache dependency, no queue. Page weight and TTFB impact are bounded by the vendor's CDN; measure with and without the script on a mid-tier mobile profile, as ShareThis's JS bundle is not small and competes with LCP.
Failure modes:
| Failure | Blast radius | Detection | Mitigation |
|---|---|---|---|
| ShareThis JS blocked by ad blocker / privacy extension | Silent loss of share UI for a meaningful slice of users | None from vendor; requires our own beacon | Always render a server-side fallback: static https:// share links for the top 2–3 networks |
| Vendor CDN outage or domain change | Share buttons vanish site-wide | Synthetic monitoring | Fallback links above; CSP allows rapid domain addition |
| Vendor deprecates the embed API | Buttons break with no warning | Manual, via vendor comms | Maintain the fallback; keep the integration isolated to one component |
| CSP misconfiguration added later | Buttons fail only in prod | CSP report-only rollout | Register report-uri before enforcing |
| Consent gate regression | GDPR exposure: script fires pre-consent | Privacy audit, network-panel CI check | Automated test asserting zero third-party requests without consent |
The critical design decision: the fallback links are non-negotiable. Because both the abandoned package and the vendor offer no failure signal, a progressive-enhancement layer is the only thing standing between a vendor hiccup and a silent product regression.
Ramp-up — negligible for engineers, non-trivial for compliance. A Laravel developer unfamiliar with ShareThis can read the component and understand it in under fifteen minutes; there is no domain knowledge to acquire because the original package contains none worth transferring. The real onboarding cost sits with legal/privacy: vendor classification, DPA status, data-transfer mechanism, and consent-category assignment. Budget more time for that review than for the build.
Bottom line: the package is a non-starter for a Laravel stack and unnecessary even for its native Symfony/Victoire context. Reimplement as a small, consent-aware Blade component with server-side fallback links; treat ShareThis itself, not this bundle, as the dependency requiring governance.
How can I help you explore Laravel packages today?