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

Env Sync Laravel Laravel Package

dragon-code/env-sync-laravel

Laravel package for keeping .env files synchronized with .env.example. It detects missing environment variables and updates your files, helping prevent configuration drift and onboarding issues across development, staging, and deployment.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What changed in 2.5.0. A single-line release note: Laravel 11 support, contributed by one author in one PR (#27). It is a compatibility patch — no new capability, no breaking changes, no deprecation notices, no security fixes. In isolation it is the least interesting kind of release: a version-ceiling bump that keeps the package installable on a framework we already target.

Why it still matters. The prior assessment rested partly on "last release 2024-03-13, no forward path." That premise now needs qualification. A release landing on a repository we had recorded as archived means one of two things, and we do not yet know which:

  • The repository was unarchived and the maintainer has resumed work — in which case the project is single-maintainer-active, not abandoned, and the risk profile shifts from "frozen" to "fragile."
  • The release was the final act before the repo went read-only — the common pattern — in which case 2.5.0 is the last compatible version we will ever get, and Laravel 11 becomes a permanent ceiling.

Either way, one patch release does not reverse the structural findings. It moves the compatibility ceiling from Laravel 10/11-era to an explicit Laravel 11, and it does nothing about secret handling, the upstream dependency, or the adoption signal.

Architecture fit. Unchanged and still poor for anything production-critical. The package remains a thin adapter over upstream dragon-code/env-sync, and the architectural objection was never about framework version support — it is that the package moves .env, our highest-sensitivity artifact, to a remote backend outside Laravel's configuration pipeline and outside our secrets manager. Laravel 11 compatibility makes it easier to install into a modern codebase, which raises exposure rather than lowering risk.

Integration feasibility. Still trivial: Composer require, auto-discovery, config publish. 2.5.0 removes the one friction point that might have caused a developer to bounce off it on a Laravel 11 app. The trap identified previously is now sharper — the install path is frictionless on our current stack, so approval-by-default is more likely, not less.

Technical risk: high, materially unchanged.

Risk Severity Change since last assessment
Secret handling Critical Unchanged. No encryption, transport, retention, or access-control work in 2.5.0. Still the deciding factor.
Repository trajectory Critical Unclear, possibly worse. Either unarchived with a single maintainer, or archived with 2.5.0 as the terminal release. Must be re-verified before this row is re-scored.
Compatibility ceiling High (was Critical) Improved one notch. Laravel 11 supported. Laravel 12 and PHP 8.4 unsupported and unannounced. Ceiling is now one version away instead of two.
Bus factor / validation High Marginally improved, not resolved. One PR from one contributor is activity, not a maintenance commitment. Star count and dependent count remain negligible; no new production usage signal.
Supply-chain drift Medium Newly relevant. A minor bump on a repo of uncertain status means composer update moves consumers from 2.4 to 2.5 with no review gate.

Key questions to resolve before any further work.

  1. Is the repository archived right now? This single fact determines whether 2.5.0 is a revival or a tombstone, and it changes the roadmap conversation from "reject" to "reject, revisit in six months."
  2. Does 2.5.0 pin or widen the upstream dragon-code/env-sync constraint? A widened constraint on an unmaintained upstream is a supply-chain concern.
  3. Same as before, and still unanswered: which storage backends does upstream support, are secrets encrypted client-side, and who holds the key?
  4. Does our security policy permit .env contents to leave the developer machine at all? If no, framework compatibility is irrelevant.
  5. Is there an internal owner willing to fork and carry a CI matrix — and would that owner be maintaining a package with one outside contributor?
  6. What is the actual pain point — onboarding, or .env.example drift? The latter still needs no remote backend.

Recommendation: do not adopt as a dependency — unchanged. 2.5.0 removes an objection without addressing the objection that mattered. It is a reason to re-open the file in six months, not a reason to change the answer. Concretely: keep the rejection, add a review trigger ("if the project ships two or more releases across the next two quarters and a security review of the upstream backend passes, re-evaluate"), and proceed with the one-sprint internal alternative. Record the trigger in the ADR so this decision is not re-litigated ad hoc each time a patch release appears.


Integration Approach

Stack fit. Superficially better than before — on a Laravel 11 codebase the package now installs and boots without a version conflict, so it looks fully native. Fit must still be judged against the secret-management stack, not the framework stack. Laravel's own guidance is that .env is machine-local configuration, never a shared artifact; 2.5.0 changes nothing about that inversion, about config:cache behaviour, or about 12-factor posture in containerised deploys.

Compatibility. Updated: explicit Laravel 11 support, which matches our target. Gaps remain — no Laravel 12 support and no PHP 8.4 declaration, and because the repository's status is uncertain there is no committed path to either. Treat Laravel 11 as the practical ceiling until proven otherwise. Also note that 2.5.0 is a minor bump: any team already on ^2.x will pick it up on the next composer update without a review, so if any branch currently references this package it should be pinned or removed now rather than after the fact.

Migration path (if we were forced to proceed). Unchanged in shape, with a new step zero:

  1. Status verification (hours, not days). Confirm archived/unarchived state, maintainer responsiveness on the issue tracker, and whether the upstream tool is itself alive. If archived, stop — this is the terminal version and the answer is no.
  2. Spike (1 sprint, timeboxed). Isolated branch, Laravel 11 only, pinned exact versions. Enumerate upstream backends. Security review of transport and at-rest handling. Capture as an ADR.
  3. Decision gate. Security sign-off is a hard gate. Default outcome remains no-go.
  4. Fallback build (if the workflow pain is validated). (a) .env.example key-name drift check in CI — no secret movement; (b) maintained secrets manager (Vault, AWS Secrets Manager, Doppler, 1Password CLI) behind a small artisan wrapper; (c) SOPS-encrypted .env in-repo, decrypted for local dev.
  5. Decommission. Remove from composer.json regardless of spike outcome; do not leave an uncertain-status package in the lockfile.

Sequencing. Status verification precedes security review; security review precedes spike; spike precedes pilot; pilot never touches shared or production environments. No phase requires a production change, so blast radius stays at zero while we decide.


Operational Impact

Maintenance. 2.5.0 defers the "we become the maintainer" problem slightly — the package now works on our current framework — but does not eliminate it. If the maintainer is active, we inherit a single-person dependency whose release cadence we cannot influence; if the repo is archived, we inherit a fork obligation immediately. Either way the realistic ongoing cost is unchanged: a named owner, a CI matrix against each new Laravel and PHP release, and a fork that would be most of the upstream tool's surface. For a package with negligible adoption, that is still a poor return.

Support. No vendor, no SLA, no security advisories. One merged PR does not constitute triage capacity. Any credential-leak incident remains an internal postmortem with no upstream to escalate to, and the incident-response question — "where did this secret go and who can read it?" — is still unanswerable from the package's own documentation.

Scaling. Unchanged. Adequate for a handful of developers, poor beyond. Concurrent .env edits remain an undocumented conflict class inherited from upstream. Secret rotation still does not participate in the sync; rotating a credential means every developer re-syncs with no verification that stale copies were purged from the remote backend.

Failure modes.

  • Silent secret exfiltration — .env contents replicated outside our security perimeter with no audit trail. Unchanged by 2.5.0.
  • Terminal-version dead-end — 2.5.0 may be the last release ever. The next Laravel or PHP bump breaks the package with no fix, and remediation is an unplanned removal under time pressure. This risk is now sharper, because the release that made it viable also made it look maintained.
  • Stale secret drift — a developer runs with a rotated-out credential; failure surfaces later and elsewhere.
  • Sync conflict / clobber — a push overwrites another developer's local config; recovery depends on backups we did not configure.
  • Lockfile drift — an unpinned install silently takes 2.5.0 (or a later upstream change) that no one reviewed.

Ramp-up. Unchanged: install cost is deceptively low, correct onboarding is high. Every developer must understand what leaves their machine and where it lands, and that briefing must be repeated at every team expansion. Laravel 11 support makes the first step easier without touching the second.

Bottom line for the roadmap. Status changes from rejected to rejected with an active re-evaluation trigger. The underlying need — consistent local environments across a team — is still legitimate and still worth one sprint. Budget that sprint against a maintained secrets manager or an internal key-name drift check, assign an owner, and record two things in the ADR log: the rejection, and the explicit condition under which we would look again (sustained releases over two quarters plus a passed security review of the upstream backend). Without that trigger written down, the next developer who rediscovers this package will find a Laravel 11-compatible release and re-propose it as a solved problem.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager