liberusoftware/import-export
A Laravel package for importing and exporting data with configurable sources, formats, and field mappings. Define import/export workflows, handle validation and transformations, and move data between files and your application cleanly.
Build vs. buy on a recurring, low-differentiation capability. Bulk import/export is a feature nearly every B2B admin surface eventually needs, and it is deceptively expensive to build well: schema definition, column mapping, dry runs, row-level validation, queued execution with progress, per-row error reports, authorization scoping, and data retention are all table stakes that customers rarely pay a premium for. This package frames that entire scope as a single adoption decision rather than a multi-sprint roadmap line.
Roadmap sequencing for data-onboarding features. Concretely, it unblocks decisions like:
Support-cost and activation decisions. Dry runs plus downloadable error reports directly attack the largest hidden cost of import features: support tickets from users who upload malformed files. A PM can justify the feature on ticket deflection and first-import success rate alone, independent of any new revenue.
Compliance and enterprise-readiness scope. Authorization and retention are usually discovered late, during a security review or an enterprise deal. Having them as first-class concepts means the PM can commit to data-retention answers in an RFP instead of retrofitting them under deal pressure.
Use cases to evaluate against: CRM/contact ingestion, product catalog and pricing sync, historical data migration off a competitor, finance/ops exports for reconciliation, and subject-access or portability exports for GDPR-style requests.
Signal to weigh in the decision: the opportunity score (≈45) suggests the problem space is real and underserved; the adoption signals (0 stars, 0 dependents, low composite score) suggest the package itself is unproven. Treat this as "validated problem, unvalidated vendor" — the PM decision is less "is import/export worth building?" and more "is this specific implementation a cheaper path than our own 3–6 week build?"
Adopt when:
Look elsewhere or build when:
Diligence checklist before committing: test coverage and CI status, supported Laravel/PHP versions, commit recency versus release date, open issues and response pattern, whether the maintainer is a company (Liberu) with a commercial motive to keep it alive, and a spike proving your three hardest real-world files — including a 250k-row file with intentional errors — import correctly with acceptable memory and queue behavior.
To executives: This is a pre-built implementation of a capability every serious B2B product eventually ships — data in and out via spreadsheets — covering the parts that are tedious rather than differentiating: mapping, validation, dry runs, background processing, progress, error reporting, permissions, and retention. The license is MIT, so cost-of-acquisition is near zero; the real cost is a short integration and hardening effort plus the risk of depending on a young, single-maintainer project. Framed as build vs. buy, it potentially compresses a multi-sprint effort into a fraction of that, and it lets us say "yes" to enterprise security questions about import audit trails and data retention earlier than we otherwise could. The recommendation is a time-boxed spike, not a commitment: validate it against our three worst real-world files, then decide.
To engineering: The package already models the domain we'd otherwise reinvent — schema definitions, field mapping, dry-run validation, queued execution with progress, structured error reports, authorization scoping, and retention. That maps to roughly the chunk of an import epic that's pure plumbing and the least fun to maintain. The tradeoff is explicit: it has no adoption footprint (0 stars, 0 dependents), so we should treat it as vendored source rather than a trusted dependency — pin the version, read the critical paths, wrap it behind our own service boundary so it's replaceable, and add integration tests around our own schemas. If the spike shows the queue/progress internals are sound, we save weeks; if not, we've spent a few days and we keep the domain model as a spec for our own build.
How can I help you explore Laravel packages today?