stephanecollot/datetimepicker-bundle
Symfony bundle that integrates the Bootstrap DateTimePicker widget into Symfony forms, providing a configurable date/time picker form type and the required front-end assets so you can add polished date and time selection with minimal setup.
Architecture fit — critical mismatch. The request frames this as a Laravel/PHP package, but stephanecollot/datetimepicker-bundle is a Symfony bundle, not a framework-agnostic library and not a Laravel package. It ships Symfony form types, Twig form themes, and bundle registration (AppKernel-era conventions). It contains no Laravel service provider, config publish tag, facade, Blade view, or illuminate/* dependency. Dropping it into a Laravel composer.json yields no usable integration surface — the value would have to be re-implemented, not installed.
| Dimension | Finding |
|---|---|
| Package type | Symfony bundle (2.x/3.x era) wrapping a jQuery/Bootstrap datetime picker |
| Framework coupling | Tight: Symfony Form component, Twig form theming, asset inclusion conventions |
| Laravel compatibility | None out of the box; requires a port, not an install |
| Native PHP compatibility | Low; procedural bundle bootstrapping tied to legacy Symfony kernel |
| Latest release | 2017-04-29 — ~8 years without a release |
| Adopters | 0 dependents, 56 stars — no observable production footprint |
Integration feasibility. Two distinct verdicts:
symfony/form and symfony/framework-bundle.Technical risk — high, concentrated.
opportunity: 10.81 on a 56-star, 0-dependent, 8-year-stale package reads as a static-signal artifact (permissive license, clean metadata, unclaimed niche) rather than validated demand. High "opportunity" on a zero-adoption package usually means no market, not open market. Do not let the numeric score drive the decision.Key questions for the requester.
composer.lock, and is the app already on jQuery + Bootstrap 3?<input type="datetime-local"> or a maintained picker (Flatpickr, Tempus Dominus) satisfy the requirement?Stack fit. Effectively zero for Laravel 9/10/11 on PHP 8.1+. Conditional fit only for a Symfony 2.3–3.x application already using jQuery and Bootstrap 3, where the bundle is already installed and merely needs to keep running.
| Target stack | Fit | Action |
|---|---|---|
| Laravel 10/11, PHP 8.2+ | None | Reject; build a Blade component instead |
| Laravel 8/9, PHP 7.4–8.1 | None | Reject; same |
| Symfony 6/7 | None | Reject; bundle conventions removed |
| Symfony 4/5 | Very low | Would require a maintained fork; not justified |
| Symfony 2.3–3.4 legacy | Conditional | Freeze in place, do not upgrade, do not extend |
Migration path (recommended: replace, don't integrate). The pragmatic route is to treat this as a replacement program, not an adoption:
composer.json/composer.lock and the codebase for DatetimepickerBundle, datetimepicker form type usage, and jQuery/Bootstrap 3 asset dependencies. Establish whether anything is actually installed.FormRequest validation rule for the datetime format, plus a small JS entry in Vite. Estimate 3–5 engineering days including tests.Compatibility work, if someone insists on the legacy path. Expect Composer constraint conflicts against modern symfony/*. Do not resolve these with --ignore-platform-reqs or widened constraints; that produces an untested runtime and shifts risk from install-time to production. The correct legacy move is version pinning plus an explicit "do not upgrade" note in the app's technical debt register.
Sequencing note for the TPM. There is no meaningful "pilot" for a package with zero dependents and no release in eight years — there is no peer evidence to lean on. Budget the effort as internal build, and gate the decision on question 1 above (Laravel vs. Symfony) before any engineering time is spent.
Maintenance. Effectively unmaintained. No releases since 2017, no security response process, no compatibility work for PHP 8 or current frameworks. Any defect becomes yours to fix in a codebase whose conventions no longer match the host framework. The practical maintenance model is vendored fork with an internal owner, which is a permanently staffed commitment for a UI widget.
Support. No vendor, no SLA, no active issue triage. 56 stars and 0 dependents means no community to escalate to and no signal that someone else has hit your bug. Knowledge is concentrated in one historical maintainer. Internal ramp-up cost is asymmetric: hours to use, weeks to own.
Scaling. Not a backend scaling concern — the bundle is a form widget, not a data path. The scaling cost is frontend payload and dependency drag: jQuery plus moment.js plus picker CSS adds tens of KB per page without tree-shaking, and pins the host app to a legacy asset pipeline. On a large Laravel app, that is a recurring tax on every page load and a blocker for adopting Vite cleanly.
Failure modes to plan for.
| Failure mode | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Composer resolution failure on upgrade | High | Blocks framework/PHP upgrades | Never install; if inherited, pin and isolate |
| Symfony deprecation removal breaks bundle boot | High | App boot failure | Freeze legacy app; do not upgrade past Symfony 3 |
| Mobile/touch and keyboard accessibility gaps | Medium–High | User-facing defects, WCAG non-compliance | Replace with maintained picker with a11y support |
| Timezone/format drift between client display and server validation | Medium | Silent data corruption on datetime fields | Server-side validation rule + explicit timezone contract |
| jQuery global conflicts with modern frontend code | Medium | Intermittent UI breakage, hard to reproduce | Eliminate jQuery from the dependency graph |
| Asset publishing breaks under Vite/modern bundlers | Medium | Picker renders unstyled or non-functional | Custom asset entry, or replace |
| Silent failure on locale/format mismatch | Low–Medium | Users submit wrong dates | Browser-level regression tests |
Ramp-up. Low to consume, high to inherit. A new engineer can wire the form type in an afternoon on a legacy Symfony app; the same engineer will spend considerably longer reverse-engineering why it breaks under a framework or PHP upgrade, with no upstream documentation or maintainer to consult. Onboarding documentation should explicitly state the package is frozen and the replacement path is X.
TPM recommendation. Reject for any Laravel scope — the package is structurally inapplicable and the numeric score is not a reliable signal at this adoption level. Tolerate only as frozen legacy in a Symfony 2/3 application that is already sunsetting. Where a datetime picker is genuinely needed, fund a small internal Blade component around a maintained picker: it is a few engineering days, removes two layers of abandoned dependency, and eliminates the upgrade ceiling this package would impose.
How can I help you explore Laravel packages today?