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

Filament Pwa Laravel Package

jeffersongoncalves/filament-pwa

Filament PWA adds Progressive Web App support to Filament panels, making admin apps installable and more app-like with a web app manifest, service worker integration, and customizable PWA settings for Laravel projects.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. From a TPM lens, the first thing to internalize is that this is not a PWA implementation — it is a head-markup injector. The package registers a Filament panel plugin and appends <head> tags (manifest link, theme-color, Apple touch icons, msapplication-* tiles) through Filament's render hooks, delegating markup generation to laravel-pwa-favicon, which in turn pulls jeffersongoncalves/laravel-favicon. That is a three-package chain from a single maintainer to emit roughly fifteen lines of static HTML. It fits the Laravel/Filament architecture cleanly — Composer package, service provider, Plugin contract, publishable config — and adds no runtime, datastore, middleware, or build step. The abstraction depth is disproportionate to the output, so underwrite this as a convenience wrapper whose real value is that someone else owns the icon-set and config surface, not as a capability platform.

Scope gap — the central product risk. The name promises "PWA"; the delivery is metadata only. Genuine installability needs a manifest, icons, and a service worker over HTTPS. This package ships no service worker, no offline caching, no push, no background sync, and no install-prompt handling. Two consequences follow. First, any stakeholder who hears "PWA" will expect offline behavior and will not get it — set that expectation in the ticket title itself: "home-screen icon and browser-chrome branding for the admin panel." Second, the omission is defensible: a service worker caching authenticated Filament HTML is a genuine staleness and data-exposure hazard. Frame the restraint as a deliberate security posture and write it into the decision record so it is not later read as an incomplete delivery.

Integration feasibility. Low effort, low blast radius, fully reversible. Install, register the plugin on one panel, publish config, supply an icon set. No migrations, no middleware, no auth surface changes, no schema. Estimate 1–2 hours for a Laravel-fluent engineer — and note that most of that is generating and curating icon assets, not wiring code. Budget design time, not engineering time. The genuine TPM leverage here is recognizing that the decision is cheap to make correctly and expensive to make by default.

Technical risk.

  • Maturity and bus factor. 4 stars, 0 dependents, one maintainer across all three packages in the chain, and a future-dated release (2026-10-25) that should be treated as a data-quality flag until verified against Packagist. Zero production evidence exists anywhere.
  • Transitive coupling. Release 2.1.0 was purely a dependency bump to laravel-pwa-favicon ^2.0. Any breaking change upstream blocks this package until the author catches up; you inherit version lag you cannot patch locally without forking.
  • CSP. Strict Content-Security-Policy headers on admin panels routinely block manifest or icon fetches, and they fail as console-only errors rather than visible breakage — the worst kind of failure to discover late.
  • Multi-panel, multi-domain, multi-tenant. Each panel — and each tenant, if branding differs — needs its own manifest and icon set. Confirm config is panel-scoped, not global. The highest-severity failure mode in a multi-tenant deployment is one tenant seeing another tenant's icon.
  • Dark mode. theme-color needs a media="(prefers-color-scheme: dark)" variant to match Filament's dark theme; unclear whether it is emitted.
  • Head coverage. Render hooks fire only inside the panel layout, so custom login pages, error pages, and non-panel routes will not receive the tags.

Key questions to resolve before commit.

  1. Which Filament majors are supported, and is v4 tested or merely permitted by the version constraint?
  2. Is configuration per-panel, and does it support distinct manifests per domain or tenant?
  3. Are dark-mode theme-color variants emitted?
  4. Where do icons publish, and are they versioned/hashed or served from a stable path?
  5. Is there documented guidance on CSP interaction and on the deliberate absence of a service worker?
  6. What is the release cadence, and does the maintainer track Filament majors within a defined window?

Integration Approach

Stack fit. Native to the existing Laravel/Filament stack — Composer, service provider, panel plugin registration, published config. It composes with Filament's theme and asset-publishing conventions rather than competing with them, so there is no frontend toolchain impact and no new deployment artifact beyond the icon set. For a TPM, that means no cross-team coordination, no release-train coupling, and no infrastructure ticket.

Recommended path: timeboxed spike, then an explicit build-vs-buy call. Run the spike on one non-production panel. In parallel, have an engineer prototype the equivalent in roughly 30 lines: a PanelsRenderHook::HEAD_END callback plus a Blade partial holding the icon and manifest markup. If the in-house version reaches parity inside a day, build it in-house — it removes a three-package, single-maintainer dependency for static markup and hands you direct control over CSP, dark mode, and per-panel configuration. Adopt the package only if its config surface and icon-generation ergonomics are demonstrably better than the prototype. This is the primary decision to force: "is a one-day in-house render hook cheaper than owning a low-adoption transitive dependency chain?" Reversibility is high either way, so resist the urge to over-deliberate.

Migration path. Purely additive; no data migration, no backfill, no cutover window. Sequence:

  1. Verify the Filament and PHP/Laravel support matrix against the platform baseline.
  2. Install and pin exact versions of all three packages; commit the lockfile.
  3. Register the plugin on a single staging panel only.
  4. Publish config and override in config/ rather than editing vendor defaults.
  5. Produce and commit the icon set (192/512 maskable, Apple touch 180, favicon ICO/SVG); validate dimensions and transparency.
  6. Assert the rendered head tags with a raw HTTP response test, not a browser eyeball.
  7. Validate in Lighthouse and the DevTools Application tab; check the console for CSP violations.
  8. Roll out panel by panel, gated on the previous panel staying clean.

Compatibility. Confirm the Filament major you run is inside the tested range — a plugin passing on v3 is not evidence for v4. Verify the render hook used still exists in your Filament version, and that no other plugin already injects theme-color or a manifest link; last-writer-wins produces confusing, hard-to-diagnose output. Check behavior behind any CDN that caches HTML, since a cached head is harder to invalidate than a cached asset.

Sequencing and rollback. Ship behind panel-level enablement so rollout is incremental and observable. Rollback is deleting the plugin registration — no schema, no data, no user-facing state. That reversibility is the package's strongest attribute and by itself justifies a trial at low confidence. Pair it with a pre-agreed fallback: inline the tag block in a render hook and drop the dependency.

Decision criteria. Adopt if the spike is clean, Filament support is confirmed against your version, per-panel config works, and CSP/dark-mode output is acceptable. Decline if any of the six key questions is unanswerable, if Filament v4 support is unclear, if strict CSP requires nonces the plugin cannot emit, or if the in-house prototype reaches parity within a day.

Operational Impact

Maintenance. The surface is small — one plugin registration, one config file, one icon set — so routine maintenance is near zero. The real maintenance load is upstream vigilance: three packages, one maintainer, and a release history where 2.1.0 was only a dependency bump. Assign explicit ownership of upstream release review and put a recurring compatibility check against Filament major upgrades on the platform calendar. Treat this as an approved-dependency policy decision — version pinning, lockfile commits, fork readiness — rather than a technical debate.

Support. There is no SLA, no security response commitment, and no commercial backing; MIT license and a single maintainer. Support for your own users lands entirely on the internal team. For an internal admin panel that is usually acceptable, but state it in the decision record so nobody later assumes a vendor relationship exists.

Scarcity and scaling. The package scales in the trivial direction — static markup costs nothing per user, request, or tenant in compute terms. It does not scale in the organizational direction without deliberate work: each additional Filament panel, domain, or white-label tenant introduces another manifest and icon set to curate and verify. Before committing to multi-tenant use, confirm config is genuinely panel-scoped. If branding must be dynamic or per-tenant at runtime, assume a static head injector will not cover it and plan to build.

Failure modes to monitor.

  • Silent CSP blocking — manifest and icon fetches fail in the console while the page looks fine. Add a CI assertion or a synthetic check rather than relying on visual QA.
  • Missing service worker — stakeholders demo "install" and then ask why it does not work offline. Pre-empt with the framing described above.
  • Upstream breakage — a laravel-favicon change breaks the chain and cannot be patched locally without forking. Keep the in-house fallback documented and cheap to execute.
  • Icon staleness on installed clients — installed home-screen shortcuts cache icons aggressively; a rebrand may not propagate to existing installs. Unversioned icon paths make this worse.
  • Coverage gaps — login, error, and non-panel routes will not show the branding, which reads as inconsistency to users.

Ramp-up. For an engineer already fluent in Laravel and Filament, this is effectively zero ramp-up: composer install, plugin registration, publish config, drop in icons. The realistic cost is design time for icon assets and the discipline to test the emitted head, not learning curve. For a TPM, the ramp-up that matters is communication, not engineering: get the "branding plus home-screen install, not offline admin" boundary into the ticket, the roadmap note, and the demo script before the first stakeholder sees the word "PWA."

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