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

Laravel Fuse Laravel Package

harris21/laravel-fuse

Laravel Fuse adds fuzzy search to Eloquent models and collections, helping users find results despite typos. Configure searchable fields and thresholds, then run simple fluent queries for fast, relevant matches without external search services.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for resilience. Fuse is an opinionated circuit breaker for Laravel queued jobs. The v0.11.0 notes show a maturing failure model (cache errors no longer masquerade as job failures, listener exceptions are reported rather than thrown, probes close circuits even when the cache increment fails). That reduces the internal engineering cost of hand-rolling "stop calling the flaky vendor" logic and lets the build-vs-buy call lean toward buy for teams already on Laravel queues.
  • Feature work around third-party dependency handling. Each release note maps to a product-visible reliability promise: duplicate external calls are avoided on retry ($tries semantics preserved), outages degrade the status page rather than 500-ing it, and dotted service names like payments.stripe get isolated thresholds. These are the same concerns product will raise in incident reviews, so they directly shape roadmap items for integrations.
  • Incident response and on-call tooling. The status page changes — DATA UNAVAILABLE state, /fuse/data returning 503 during cache outages, prefix-scoped history so two apps sharing a cache don't see each other's transitions — are a decision about whether to standardize the status page as the first place support looks during an outage. That affects MTTR and comms templates.
  • Traffic shaping decisions. Peak windows (now correctly supporting midnight-crossing ranges like 22:00–06:59) and default_threshold consistency make it possible to promise a "gentler during business hours" behavior to stakeholders without custom code. Conversely, the upgrade note that services without threshold now use default_threshold all day is a behavior change product should sign off on, not just engineering.
  • Configuration and tenancy decisions. Per-service config for dotted names and cache-prefix isolation are the kind of details that determine whether one Laravel app can host multiple products or tenants safely, or whether separate deployments are needed.
  • Test and CI investment. Carbon-based time handling means $this->travel() works and the package's own suite dropped from 53s to under one second. That is a direct decision input for teams that would otherwise avoid testing failure paths, and it lowers the cost of asserting circuit-breaker behavior in feature tests.

When to Consider This Package

Consider it when:

  • The system is a Laravel app whose product surface depends on queued jobs calling external services (payments, shipping, CRM syncs, webhooks) and retry storms or duplicate writes have real cost.
  • You already have a shared cache (Redis/Memcached) that is reliable enough to hold breaker state, and you accept that cache outages are handled by releasing jobs rather than failing them.
  • You want per-service thresholds, peak-hour behavior, and probes without owning that state machine.
  • You need a status page or kill switch that non-engineers can read, and you want it to behave sanely when the cache itself is down.
  • You can adopt the README's guidance on $tries = 0 for jobs behind Fuse. The release explicitly notes a release still counts as an attempt, and the upgrade notes the sync driver still throws because releasing there would drop the job.

Look elsewhere when:

  • The calls are synchronous, in-request HTTP calls rather than queued jobs; a job middleware breaker does not address that path.
  • You need exactly-once semantics or guarantees around idempotency keys. Circuit breaking is orthogonal; Fuse prevents repeated calls, it does not make side effects idempotent.
  • You require cross-language or service-mesh-level resilience (Envoy/Istio outlier detection, a managed gateway) rather than a PHP/Laravel package.
  • You have no dependable cache, or you cannot tolerate the failure semantics of a cache error releasing a job. The upgrade notes make this explicit, including for custom recovery strategies that threw on purpose to stop a job.
  • You depend on listener exceptions failing the job or on status routes returning something other than 404 when disabled — v0.11.0 changes both, so treat those as adoption blockers unless you can adjust.
  • You are on a pre-1.0 API and need long-term stability guarantees; this is a v0.x package with documented behavior changes across minor versions.

How to Pitch It (Stakeholders)

For executives: Fuse is a small, focused Laravel package that stops our queued jobs from hammering a third-party service when it is already failing. The practical outcome is fewer duplicate charges or duplicate records caused by retries, faster recovery when a vendor recovers, and a status page that tells support whether we are live or blind during an outage. v0.11.0 is a hardening release: it fixes cases where a cache hiccup made a successful job look failed, where a flaky cache could permanently fail a job while the vendor was healthy, and where a dotted service name silently ran on global defaults. There are no signature changes, but there are five behavior changes to review before upgrading, including a different default threshold for services that never set one and a 404 for disabled status routes behind custom middleware.

For engineering: This release tightens failure accounting. Cache errors during counting, during the pre-run decision, and inside transition listeners are now reported rather than rethrown, so they no longer corrupt failed_jobs or fail otherwise-healthy jobs. Probes self-heal when the cache increment fails, status page state is scoped to the configured cache prefix, and time now goes through Carbon so travel() works in tests. Adoption cost is low; the upgrade checklist is short, and the main operational discipline is keeping $tries = 0 on jobs behind Fuse, since a release still counts as an attempt.

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.
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
glavweb/extra-bundle