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 Shadebridge Laravel Package

yukazakiri/laravel-shadebridge

ShadeBridge is a lightweight Laravel package that simplifies integrating Shade into PHP applications. It offers sensible configuration, service bindings, and Blade-friendly helpers, letting you connect Shade features with minimal setup while keeping your code clean and maintainable.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Shadebridge is a server-side theme control plane for Laravel applications whose frontend uses shadcn/Tailwind. It centralizes theme ingestion (theme:add, theme:import), persistence (CSS + metadata), removal, and a build-time default (theme:default) behind artisan commands, then exposes the resolved theme to React/Vue via a pre-hydration initializer. This is a clean fit for teams already standardized on shadcn-style design tokens who want theme selection managed as application configuration rather than hardcoded CSS. It is not a general-purpose theming layer — apps without shadcn/Tweakcn-shaped tokens will get limited value.

Integration feasibility. Moderate-to-low effort. The package is Composer-installable, ships artisan commands, and the frontend surface is a thin hook plus an inline initializer. The 0.2.0 release formalizes a shared importer behind theme:add and theme:import, which reduces the number of distinct code paths we must validate. TLS verification on remote JSON imports is now enabled by default — correct from a security standpoint, but a hard blocker in environments with intercepting proxies or missing CA bundles; plan for that.

Technical risk. Elevated, driven by maturity rather than design:

  • Pre-1.0 with active breaking changes. 0.2.0 renames both the Composer package and the PHP namespace. That is a breaking change in a minor release, which signals a fast-moving surface and no SemVer stability guarantee. Assume further breaks through 0.x.
  • Small test footprint. 27 PHP tests and 2 frontend hook checks is thin coverage for something that touches build output and first-paint behavior.
  • Provenance. The rename suggests a fork or maintainer/org change. We need to confirm history and whether the predecessor package is deprecated.
  • Frontend coupling. Theme changes require an asset rebuild; there is no runtime-only path. CI pipelines must account for this.

Key questions.

  1. What is the predecessor package name, and is it formally abandoned with a migration path?
  2. Is there an upgrade command or codemod for the namespace rename, or is it manual find-and-replace?
  3. Where are themes persisted — filesystem, database, or config cache? What is the multi-tenant story?
  4. Does theme:default overwrite existing published files, and is it reversible?
  5. Is the pre-hydration initializer CSP-safe (nonce/hash support), and how does it behave under SSR?
  6. What is the maintainer's stated support window and release cadence? Is there a security contact?
  7. How is the Tweakcn/shadcn JSON schema validated, and what happens on schema drift upstream?
  8. Is there caching for imported themes, or is every request reading from disk?

Integration Approach

Stack fit. Requires PHP 8.2–8.4 and Laravel 12–13 per the CI matrix. Laravel 13 coverage is forward-looking; treat Laravel 12 as the only battle-tested target today and pin accordingly. Frontend must be React or Vue with a Vite (or equivalent) build step, since theme changes require asset regeneration.

Migration path. Existing adopters must do a coordinated upgrade:

  1. Replace the Composer package name in composer.json.
  2. Update all use statements and service-provider/config references to Yukazakiri\Shadebridge.
  3. Republish config and any published CSS scaffolding.
  4. Clear config and view caches.
  5. Rebuild frontend assets (npm run build) — mandatory, not optional.
  6. Re-run theme:import/theme:add against the shared importer to force a clean CSS/metadata refresh.

Because steps 1–2 are hard breaks at boot time, this cannot be a rolling deploy across a heterogeneous fleet. Sequence it as an atomic change within a single release.

Compatibility. Audit for: environments behind TLS-inspecting proxies (remote imports will now fail closed), pinned frontend toolchains older than the hook's expectations, and any place in our codebase that referenced the old namespace reflectively (config strings, container bindings, cached discovery).

Sequencing.

  1. Spike in a throwaway branch — install 0.2.0, import one representative Tweakcn theme, verify theme:add / theme:import / theme:default behavior and removal semantics.
  2. Validate the React/Vue hook against our actual component tree, including the stale-selection fallback and pre-hydration initializer under SSR and with CSP enabled.
  3. Promote to staging, run the full migration path, confirm asset rebuild in CI.
  4. Cut a single coordinated release; document the namespace rename in the internal changelog.

Operational Impact

Maintenance. Expect ongoing churn. A 0.x package that renames its namespace in a minor release will likely do so again before 1.0. Budget a recurring "upgrade tax" per minor version and pin to exact versions (0.2.0, not ^0.2) so upgrades are deliberate. Track upstream releases; do not enable automated dependency bots on this package without a human gate.

Support. Effectively single-maintainer, community-supported with no visible SLA or LTS track. Internal ownership must be assigned — a named engineer who can read the importer and initializer source. Do not depend on upstream responsiveness for incident triage.

Scaling. Runtime cost should be negligible if themes resolve at build time; the risk is I/O on every request if themes are read from disk without caching. Verify and, if needed, wrap resolution in Laravel's cache. Serve compiled CSS through the standard asset pipeline/CDN. Multi-tenant theming is unproven — if that is a near-term requirement, treat it as a blocking investigation rather than an assumption.

Failure modes.

  • Boot failure on upgrade — namespace mismatch leaves the app unable to resolve the service provider. Mitigate with an atomic deploy and a rollback plan.
  • Silent theme regression — theme files updated but assets not rebuilt, leaving users on stale CSS. Mitigate by gating deploys on the build step.
  • Import failure — TLS verification now fails closed on misconfigured egress; remote theme imports break in locked-down environments.
  • Flash of incorrect theme — the pre-hydration initializer is specifically designed to prevent this; regressions here are user-visible and hard to catch in tests. Add a visual or snapshot check.
  • Malformed Tweakcn JSON — validation is present, but upstream schema drift could reject previously valid themes.
  • Irreversible default overwrite — theme:default writing build-time system defaults may clobber customized files; confirm reversibility before using in production.

Ramp-up. Low for a Laravel-fluent engineer — a config file, three or four artisan commands, and one frontend hook is a half-day to competency. The real ramp-up cost sits with frontend engineers who must understand the hook contract and the pre-hydration script, and with whoever owns the deploy pipeline and must internalize the "theme change implies asset rebuild" rule. Recommend a short internal runbook covering the upgrade procedure, the rebuild requirement, and the TLS/egress prerequisite before broad adoption.

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.
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
equipc/laravel-email-database-log
adedsec/nova-translated-labels
wazza/laravel-db-encryption
hokny/laravel-generator
vonsogt/backup
jengo/queues
jeremykenedy/laravel-observability
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums