mwsimple/scdatetimepicker-bundle
mwsimple/scdatetimepicker-bundle is a Symfony bundle that provides a simple date and time picker form type, making it easy to add calendar and time selection to your forms with minimal configuration.
Release scope — patch only, no architectural change. v4.0.2 contains two Dependabot bumps (symfony/http-foundation 7.1.6 → 7.1.7, twig/twig 3.14.0 → 3.14.1) and one third-party view fix (PR #13). No new features, no breaking changes, no deprecations, no API surface change. Nothing in this release alters the integration calculus for a Laravel application: it remains a Symfony bundle targeting a kernel/Twig/DI runtime that Laravel does not provide. The prior recommendation stands unchanged.
What the release does tell us (and it is modestly useful).
@joesenova, a non-maintainer. Bus factor moves from "one person" to "one person plus occasional drive-by fixes" — still thin, but no longer single-point in the strictest sense.v4.0.0...v4.0.1. Minor on its own; relevant only as a signal about how carefully the project is run.Architecture fit — still a fundamental mismatch. Unchanged from the prior assessment. mwsimple/scdatetimepicker-bundle registers via a Bundle subclass, loads config through a DependencyInjection extension, renders through Twig form themes, and publishes web assets via assets:install. Laravel has no kernel-bundle registry, no Twig renderer, and no DI extension pipeline. Nothing implements Illuminate contracts, so there is no auto-discovery path and no service provider that can resolve it without reimplementing what the bundle already assumes.
What is actually reusable — slightly narrower than first assessed. The payload is a form widget template, a base layout partial (per the jQuery layout fix), and a pinned Bootstrap DateTimePicker JS/CSS set. The layout coupling means extraction is not a clean single-file lift; expect to read two templates and discard the inheritance chain. Still portable, still not installable.
Integration feasibility — low, cheap exit, unchanged. Do not composer require this into a Laravel app. Read the templates as reference, rebuild as a Blade component, and pull the picker from npm via Vite. 1–2 days for a single form; 3–5 days for a validated, repopulating, localized, timezone-aware reusable component.
Technical risk — still concentrated in the supply chain, not the code.
Key questions — updated.
Stack fit — adopt the pattern, not the package. Unchanged. The repository is a design reference: a Blade component for markup, @vite for delivery, FormRequest for validation, old() for repopulation, Carbon for formatting.
Migration path (bundle approach → Laravel-native), revised for the layout coupling:
<x-datetime-picker>), self-contained, no layout override. Props: name, value, format, min, max, locale, timezone.public/.FormRequest rules plus component props; validation stays server-side and authoritative.lang/ files keyed to component labels and error text.Compatibility notes that bite in practice:
date validation and Carbon casting expect a defined input timezone. Decide up front whether the component emits local time or UTC ISO-8601 and enforce it in a cast or mutator.old() returns the raw submitted string; the picker's display format must match, or the field silently blanks on validation failure. Most common defect in ported picker components.date_format:Y-m-d H:i must match the picker format exactly, including whether seconds are emitted.$ before wiring initialization.Sequencing.
<input type="datetime-local">) rather than porting a dead dependency.FormRequest rules, timezone contract.Maintenance. Ownership transfers entirely to your team on fork or port. The fork surface is small — two templates and one JS binding — and the alternative is onboarding a single-maintainer Symfony bundle into a non-Symfony runtime. Ongoing cost: a few hours per quarter tracking the underlying JS library's releases and advisories. Note that the upstream project's own maintenance is now largely automated dependency bumps; do not mistake Dependabot activity for a support commitment.
Support. No vendor, no SLA, no meaningful community. Issue triage is one person's attention, supplemented by occasional community PRs. For a component that touches every date entry in an application, that is not a supportable posture for a production dependency.
Scaling. Effectively zero server-side impact; the picker is client-side. Real considerations are asset weight (picker plus locale files can add tens of KB — load locales lazily) and form density (many pickers per page multiply initialization cost). Solved by bundling through Vite with per-locale code splitting rather than shipping every locale.
Failure modes to plan for.
old() and the picker's display format.public/ creep in alongside Vite's manifest.app.locale unless explicitly wired.Ramp-up. Low for a Laravel developer — the ported component is idiomatic Blade and Vite. Medium only if someone insists on installing the bundle and reverse-engineering Symfony DI inside Laravel, which is the path to avoid. Budget half a day of onboarding for the timezone and format contracts; those are the non-obvious parts.
Bottom line. v4.0.2 is a routine patch release — two dependency bumps and a view fix — and does not change the verdict. It adds two small positive signals (Dependabot hygiene, a second contributor) and one clarifying negative (a jQuery base-layout dependency, meaning the reusable surface is wider and more legacy-bound than a single template). The package remains a low-signal dependency and is architecturally foreign to Laravel. Its only durable value is as a reference for markup. Recommend: do not adopt; extract and rebuild natively, and prefer a maintained picker over the one this bundle wraps.
How can I help you explore Laravel packages today?