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

Slack Laravel Package

jeremykenedy/slack

Laravel package for Slack integration, letting your app send messages and notifications to Slack channels, often via incoming webhooks. Useful for alerts, error logging, and activity updates from Laravel applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. jeremykenedy/slack is a thin convenience wrapper — a Laravel service provider, config file, and facade that POSTs a payload to a Slack incoming webhook. It solves a problem that the framework now solves natively: laravel/slack-notification-channel (first-party, actively maintained) plus the Notifier/Notification facade covers the same surface with retries, queueing, and block-kit formatting. Architecturally this is compatible but redundant for anything on Laravel 9+. The only defensible fit is a legacy application already pinned to Laravel ≤8 where the wrapper is already in place and rewriting has no product value.

Integration feasibility. Low engineering effort: composer require, publish config, set a webhook URL in .env, call Slack::send(). A developer completes a first successful message in under an hour. The real gate is dependency resolution, not code — with a last release of 2020-12-21, its illuminate/support constraint is likely ^5.0|^6.0|^7.0|^8.0. On Laravel 10/11/12 that constraint will block installation outright or force --with-dependencies gymnastics that destabilize the lockfile. This must be verified against our actual composer.json before any estimate is trusted, since the package metadata we have is incomplete.

Technical risk.

  • Abandonment (high): single maintainer, no release in ~4.5 years, 10 stars = effectively no community backpressure. No fixes will arrive for PHP 8.2+ deprecations (dynamic properties, implicit nullable params) or future Symfony HTTP changes.
  • Supply chain (low-medium): MIT, small surface, few transitive deps — but no recent audit trail and no security advisory channel to subscribe to. We would be the de facto maintainers.
  • Framework coupling (high): the version constraint becomes an upgrade tax on every future Laravel major. This is the single most expensive long-term consequence and the argument that usually kills these packages in a portfolio review.
  • Silent-failure surface (medium): wrappers of this vintage typically fire-and-forget without retry, backoff, or structured error surfacing.
  • Adoption signal (low): 10 stars is not a disqualifier for a 150-line wrapper, but it means no third-party bug reports — we will find every edge case ourselves.

Key questions to resolve before committing.

  1. What exact illuminate/* and php constraints are in its composer.json, and does it install cleanly on our target framework?
  2. Does it use Guzzle directly or Laravel's HTTP client? (Affects testability and mocking.)
  3. Does it support anything the first-party channel does not — attachments, multiple channels, retries?
  4. Are there tests/CI in the repo, or is it untested code we would inherit?
  5. Is there a maintained fork with fresh constraints, or is the wrapper small enough to reimplement in-house in a day?

Integration Approach

Stack fit. Adopt only if we are on Laravel ≤8 and already sending Slack messages through it. For Laravel 9+, the correct answer is laravel/slack-notification-channel — first-party, version-locked to the framework, and covered by Laravel's release cadence. That is the recommendation to take to the team, with this package positioned as the legacy path, not the default.

Migration path. Do not let call sites depend on the package facade directly. Introduce a one-method internal contract (SlackNotifier::send(string $channel, string $message)) and bind the package behind it. Swapping implementations then becomes a container binding change plus a parity test, not a refactor. Move the webhook URL into config/services.php (services.slack.webhook) so credentials handling survives the migration, and treat the old config/slack.php as transitional.

Compatibility and verification. Pin an exact version — never a caret range on an unmaintained package. Run composer why-not, composer audit, and a clean install in a throwaway branch against the production PHP/framework matrix. Confirm PHP 8.2/8.3 behavior explicitly; deprecation notices in a shared logger can become noise that hides real errors.

Sequencing.

  1. Spike: install in a branch, send a real message to a test channel, record the constraint outcome.
  2. Decide: install-clean → proceed with the adapter; blocked → reimplement the ~100 lines on top of Http::post() or go straight to the first-party channel.
  3. Abstract behind the internal contract and add a test using Http::fake().
  4. If migrating: implement the first-party channel in parallel, diff payloads, then cut over per call site.
  5. Remove the dependency and lockfile entry; document the decision.

Operational Impact

Maintenance. Effectively zero upstream. Budget for us owning it: vendor/fork into our repo if we keep it, or accept a pinned, frozen dependency with a scheduled review date. Assign an explicit owner — unowned pinned dependencies are how framework upgrades slip a quarter.

Support. Community-only, no SLA, no security feed. Contrast with the first-party channel, where Laravel's support window and security policy apply. For an internal-notifications use case that is tolerable; for anything customer-adjacent or compliance-relevant it is not.

Scaling. Slack incoming webhooks are rate-limited (roughly 1 message/second per webhook with limited bursts) and return HTTP 429 beyond that. A synchronous Slack::send() in a request path adds Slack's latency to user-facing responses and will time out under Slack degradation. All sends must go through a queued job with retry/backoff and a dead-letter path; the package itself almost certainly does not provide this. Fan-out to many channels means many webhooks — plan credential management accordingly rather than treating one URL as a broadcast channel.

Failure modes.

  • Webhook revoked or rotated in Slack → messages vanish; without explicit error handling and an alert on send failure, nobody notices until someone asks why a notification never fired.
  • 429 throttling under bursty workloads (batch jobs, incident storms) → dropped or delayed alerts at exactly the wrong moment.
  • Composer constraint blocking a framework security upgrade → forces emergency vendoring under time pressure.
  • PHP deprecation warnings after a runtime upgrade → log noise, potential exceptions if warnings are escalated.
  • Unhandled timeouts blocking request threads.

Each of these is cheap to mitigate (queue + retry + failure metric + pinned version) and expensive to discover in production.

Ramp-up. Negligible for any Laravel developer — the wrapper is a handful of methods and the config is self-explanatory. Documentation is thin, but the abstraction layer we add is the real reference. Onboarding cost is roughly an hour; the meaningful cost is the institutional knowledge that this dependency is frozen and owned by us, which needs to live in the repo README, not in someone's head.

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