savannabits/filament-flatpickr
Filament Flatpickr swaps Filament's default date picker for the Flatpickr library, adding date ranges, time selection, locales, and flexible formatting to form fields and filters. Simple to install and configure per field.
DateTimePicker" versus "adopt a thin, removable wrapper" versus "build custom JS." Building is only justified for genuinely unusual needs (recurrence rules, multi-resource calendars, drag-and-drop rescheduling). Framing this as a build-vs-buy evaluation overstates the case and will burn stakeholder attention.Consider it when:
altInput, per-locale formatting, or granular date-disabling rules.Look elsewhere when:
savannabits/filament-flatpickr) and the linked repository (coolsam/flatpickr) do not match. That must be resolved in writing — same artifact, publish rights, fork lineage — before any composer require. Treat this as a hard gate, not a formality.2026-06-14 release date cannot be confirmed as genuine.To executives: This is a small, free (MIT) add-on for our Laravel admin panel that upgrades how staff pick dates and date ranges — quietly saving operator time on booking, scheduling, and reporting screens. Cost is near zero, lock-in is low, and we can revert to the built-in picker with a one-line change if it disappoints. It is a UX improvement, not a strategic bet, and should be funded as a small ticket inside existing admin work rather than its own initiative. Expect roughly half a day of verification effort per Filament major upgrade, and hold a default position of "no" if the built-in picker already covers the use case.
To engineering: It is a thin Filament form-field wrapper around Flatpickr — no models, migrations, routes, auth, or resource logic touched. Adopting it means deleting bespoke date-picker JS, pinning an exact version, wrapping the field in an internal alias (App\Filament\Fields\DateRange) so reverting is one line, and confirming assets register through the real production Vite / filament:assets pipeline rather than only php artisan serve. The blast radius is one form field; the change is reversible without a refactor.
Flag the caveats honestly. There is a blocking provenance mismatch between the Composer package name and the linked GitHub repo that must be cleared before composer require. Beyond that: single maintainer, zero dependents, no visible CI evidence, and known failure modes around Livewire re-render state loss after validation round-trips and timezone drift writing values one day off for non-UTC users. Because those are silent data-correctness bugs rather than visible crashes — operators won't report them and standard QA won't reproduce them — mandate targeted QA as the spike's exit criterion: create, edit-existing hydration, validation-failure re-render, repeatable rows, and at least two timezones.
Recommendation: Time-box a one-sprint prototype on a low-traffic admin screen using a handful of range or inline-calendar fields — the two things the native picker handles awkwardly. Keep native DateTimePicker as the default everywhere else and avoid customer-facing surfaces where a broken date input is unrecoverable. Go/no-go afterward, defaulting to "no" if native pickers already cover the use case. The opportunity signal runs materially hotter than the composite score; read that as "desirable capability, immature artifact" and spend diligence on maturity and support rather than on whether the capability is worth having.
How can I help you explore Laravel packages today?