konnco/filament-import
Konnco Filament Import adds CSV and Excel import actions to Filament resources. Define fields with validation and uniqueness rules, map spreadsheet columns to model attributes, and import rows into Eloquent records from a simple, configurable action.
Release delta (1.6.1 → 3.0.0). This is a semver-major release, so treat the upgrade as a breaking change by default. The published notes list only two items — a fix for imports against local filesystem disks (regressed in the preceding beta) and Laravel 11 support — against a jump of two major versions, which means the bulk of the change set is undocumented in the notes. Two reads matter for planning: (a) the version-matrix gate flagged in the prior assessment is partially cleared, since Laravel 11 is now declared; (b) the headline feature is support for a framework release from early 2024, which indicates the package trails the ecosystem by roughly a major cycle rather than leading it. If the target application is on Laravel 12 and/or Filament v4, this release does not resolve the compatibility question and may not for some time.
Architecture fit. Unchanged. This is a Filament panel plugin, so its value is binary: it fits cleanly if the application is already a Filament/TALL-stack admin, and it is irrelevant otherwise. It registers a service provider via package discovery, exposes an import action on a ListRecords table, and drives a user-facing column-mapping and validation step before persisting into an Eloquent model. No new runtime service, no queue requirement, no separate auth surface — the import inherits the panel's policies and middleware. The local-disk fix confirms the plugin writes uploads through Laravel's filesystem abstraction rather than an ad-hoc path, which is the right architecture and makes retention policy enforceable through standard disk lifecycle rules. The ceiling is unchanged: it is a UI convenience over spreadsheet parsing and Eloquent writes, not a solution for multi-entity or stateful ingestion.
Integration feasibility. Greenfield effort is unchanged: 0.5–2 engineer-days for a flat resource with scalar columns, more where relationships, tenancy, or derived fields are involved. Add 0.5–1 engineer-day if upgrading an existing 1.x pin, most of which is regression testing rather than code. The feasibility gate has shifted from "will it install" to "what actually changed" — with only two PRs cited for a two-major jump, the authoritative source of truth is the diff and any upgrade guide, not the release notes. Do not schedule the upgrade on the strength of the notes alone.
Technical risk.
composer.json and pinned explicitly. A plugin that is one ecosystem cycle behind will block your next Filament upgrade or force a fork.dev branches..xlsx, encoding and delimiter ambiguity in CSV, unrestricted file-type acceptance. The disk fix narrows one question — files land on a configured disk — which makes the PII/retention concern concrete and actionable rather than hypothetical.Key questions to resolve in a spike.
composer.json — v3 only, or is v4 supported? And what Laravel/PHP constraints accompany the new Laravel 11 support?Stack fit. Strongest where the admin surface is already Filament and the target is a standard Eloquent resource with flat scalar columns. Weak fit where ingestion requires cross-entity reconciliation, external enrichment, or approval workflows — there the plugin is a front-end for a job that belongs in a dedicated import service. The Laravel 11 support widens the viable stack but does not change this boundary.
Migration path. Still purely additive from a schema standpoint — no data migration. Two paths to distinguish:
.xlsx with formulas, a file that fails validation mid-batch) and diff resulting rows against the 1.6.x output before merging.If replacing a non-plugin path (Artisan command, Laravel Excel controller, manual ops), run in parallel behind a feature flag and diff rows for a representative file set before cutover. Do not decommission the incumbent until one full import cycle has completed on the new path.
Compatibility. Verify against the target schema rather than assuming database-agnosticism: unique-index case sensitivity, null vs empty-string handling, date/timezone coercion, decimal precision. Also verify the filesystem layer explicitly — the local-disk regression is direct evidence that disk configuration is a live failure surface, so test with the exact disk, path, and visibility settings used in production, including containerised or read-only-filesystem deployments.
Sequencing.
Maintenance. Pin the exact version — 3.0.0 is a major bump with an under-reported change set, so floating constraints are inappropriate. Watch both Filament release notes and this package's release cadence; the Laravel 11 arrival in 3.0.0 is a lagging indicator, so plan for the possibility that a future Filament major is not supported promptly. Decide the fork policy before an upgrade blocks you, not after.
Support. Community-only, no vendor SLA. Assign a named internal owner. The new contributor is a positive signal but does not constitute redundancy; without an owner this becomes an orphaned dependency discovered when an import silently corrupts data.
Scaling. Unchanged: the likely default is synchronous in-request processing, capped by memory_limit and max_execution_time. Above a few thousand rows, route through a queued job or enforce a size cap at the UI. Concurrent imports against the same table can produce duplicates or conflicts depending on upsert semantics. Add disk-capacity planning now that file persistence is confirmed — repeated large .xlsx uploads without pruning are a slow-burn storage cost.
Failure modes to instrument.
.xlsx.Mitigate with an idempotency key or upload-level dedupe, per-run import logging (who, when, file, counts, failures), a scheduled prune of the import directory, and a clear operator-facing distinction between "completed" and "completed with errors."
Ramp-up. Low for developers fluent in Filament concepts — an afternoon to a day, plus half a day for whoever reviews the 3.0.0 diff. The larger cost is on the business/ops side: operators need a canonical template, documented column semantics, and an error-report workflow they can act on without engineering involvement. That documentation is what determines whether this replaces manual data entry or becomes a support queue.
How can I help you explore Laravel packages today?