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

Filament Import Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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.

  • Framework coupling (elevated). Still the largest ongoing risk, and now with evidence rather than inference: 3.0.0 is the Laravel 11 line, so the Filament major it targets must be read directly from composer.json and pinned explicitly. A plugin that is one ecosystem cycle behind will block your next Filament upgrade or force a fork.
  • Release hygiene (new). The local-disk regression shipped in a beta and was only fixed in the final release, and the notes under-report the change set for a major bump. Both are execution-quality signals. Neither is disqualifying for an internal admin tool, but they argue for pinning exact versions and never tracking dev branches.
  • Adoption signal. Unchanged: modest star count and effectively no public dependents. Still unproven in production; expect to be an early finder of edge cases.
  • Bus factor. Marginally improved by one new contributor, but one drive-by contribution does not change the assessment. MIT licensing keeps the fork escape hatch open.
  • Input trust boundary. Unchanged and still the highest-severity area: memory exhaustion on large uploads, zip/XML expansion in .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.
  • Data integrity. Unchanged: partial success (8,000 rows written, failure at 8,001, reported as success) remains the failure mode that matters. Transactional behaviour and row-level error reporting must be verified explicitly, not assumed from a patch release.

Key questions to resolve in a spike.

  1. Which Filament major does 3.0.0 declare in composer.json — v3 only, or is v4 supported? And what Laravel/PHP constraints accompany the new Laravel 11 support?
  2. What actually changed between 1.6.1 and 3.0.0? Read the diff and any upgrade guide; enumerate breaking changes to the action API, config keys, and view namespaces.
  3. What does the local-disk fix imply about configuration surface — is the disk name, path, and visibility configurable, and was this config previously broken or merely untested?
  4. Does the import execute synchronously in the request, and is there queueing or chunking for large files?
  5. How are per-row validation failures surfaced — downloadable error report, or whole-batch failure?
  6. Is the write path transactional, and does it fire model events/observers (audit logs, search indexing, webhooks)?
  7. Does it respect Filament multi-tenancy and per-tenant scoping?
  8. Are there unique-constraint and upsert semantics (create-only vs update-existing)?
  9. What is the underlying parser, and what file-size and row-count limits are enforced?
  10. Are uploaded files deleted after processing, and if not, what retention does the configured disk carry?

Integration Approach

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:

  • Greenfield: install 3.0.0 directly; no legacy compatibility burden.
  • Upgrade from 1.6.x: treat as a breaking change. Branch, upgrade, run the full import regression set (100-row and 50,000-row fixtures, CSV with embedded delimiters and non-UTF-8 encodings, .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.

  1. Spike: install 3.0.0 on a throwaway branch, read the 1.6.1→3.0.0 diff, run the 100-row and 50,000-row fixtures, and answer the key questions above.
  2. Pilot: wire one internal, low-blast-radius resource (reference data, not customer records) with a downloadable error report.
  3. Harden: file-size and MIME enforcement, canonical template file, audit trail for import events, and a retention/pruning rule for uploaded files.
  4. Pattern: document the resource-side configuration so subsequent resources are copy-paste rather than rediscovery.
  5. Roll out, retiring legacy paths one at a time.

Operational Impact

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.

  • Partial imports reported as success; silent row skips.
  • Storage misconfiguration causing import failure at the write step (the class of bug fixed in 3.0.0) — alert on it rather than letting operators discover it.
  • Encoding/delimiter corruption on CSV; timeout mid-write; memory exhaustion on .xlsx.
  • Duplicate insertion on retry.
  • Files retained on disk well past their useful life.

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.

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.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core