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

Datatable Laravel Package

mrcatz/datatable

A Laravel Livewire DataTable + Form Builder that bundles pagination, sorting, filters, smart search, inline editing, bulk actions, exports, and CRUD scaffolding into one composable API, so you can ship admin pages in minutes while keeping your own Tailwind/DaisyUI stack.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. mrcatz/datatable is a Livewire 3/4 component framework, not a generic PHP library. It layers on top of Laravel's service container (service provider + publishable config/lang/views), a fluent PHP configuration DSL (withColumn(), MrCatzFormField::date(), filters), and a set of Artisan generators (mrcatz:make, mrcatz:remove) that scaffold page + table + form classes. Internally the table component is decomposed into traits (HasFilters, HasExport, HasBulkActions) over a small base class, with string-free event constants (MrCatzEvent) and override-able hooks (baseQuery(), onInlineUpdate(), onRowClick(), saveData(), dropData()). That is a conventional and reasonable shape for a Livewire admin package.

Fit is narrow and explicit:

Fits well Does not fit
Server-rendered Laravel 11/12/13 monolith already on Livewire Inertia/React/Vue SPAs, API-only backends
Teams committed to Tailwind and DaisyUI 4/5 Bootstrap, MUI, custom design systems without DaisyUI
Greenfield or replaceable internal admin screens Long-lived admin UI with heavy bespoke interaction design
Single-tenant or moderate-data admin CRUD High-volume reporting, analytics, or BI-style grids

The hard dependency on DaisyUI (not just Tailwind) is the single biggest architectural constraint: it dictates a component class vocabulary and theme layer across your admin surface. If design owns your UI, this package is a competing opinion, not a neutral tool.

Integration feasibility. Mechanically low effort: composer require, three Blade directives in the base layout (notification include, @livewireScripts, @stack('scripts')), a Tailwind @source glob for vendor/mrcatz/**/*.blade.php, one generator run, one route. A competent Livewire developer reaches a working page in under a day. The catch is that all three of those setup steps are silent-failure prerequisites — the README states the table, modal, and toasts "silently fail" without them, and the @source omission produces a page that renders but is unstyled/broken. That is a poor integration contract for a team package: it moves failures from install time to demo time.

Secondary integration checks: coexistence with Filament or Jetstream (all ship Livewire; Filament brings its own design system, so DaisyUI + Filament on the same app needs a visual and CSS-bloat audit), Docker/CI builds where vendor/ must exist at asset-compile time, and theme scoping so DaisyUI base styles don't leak into the rest of the app.

Technical risk. This is the dominant factor in the evaluation, and the score (0.12) and signals are consistent with it:

  • Bus factor 1. One maintainer, 12 stars, 0 dependents. No evidence of a contributor base, governance, or a funding/support model.
  • Provenance. The README openly states most implementation, tests, and docs were produced with Claude under maintainer direction. That is not disqualifying — the architecture decisions read as deliberate — but it means the review burden for correctness shifts onto you, and it correlates with the failure pattern visible in the changelog: front-end/Blade edge cases (date range silently dropped inside ->asCard() sections, picker min/max not clamping until submit, table-prefixed image keys falling back to initials) shipping as patch releases. The PHPUnit suite (44 → 71 tests, ~168 assertions) clearly does not cover the Blade/JS layer where the defects cluster.
  • API surface is not a stable contract. Changelog 1.0.2 removed strict type hints from override-able methods to stop Declaration compatibility errors in existing projects — i.e., subclassing the component already broke consumers once. Override hooks are the primary extension mechanism, so treat them as unstable across minor bumps.
  • Versioning signal is muddled. Top-level docs reference 1.29.x while the supplied changelog covers 1.0.0–1.3.0, with 1.29.5–1.29.9 as the current patch line. High patch cadence on UI-only fixes implies churn without a visible semver discipline or upgrade guide.
  • Security surface. Inline editing, bulk actions, and destroy operations are dispatched as Livewire events to your Page component; authorization is entirely your responsibility via policies. No SECURITY.md or disclosure process is evident. Generated CRUD scaffolds are a classic path to unintended mass-assignment or missing policy checks.
  • Beta components. Meilisearch driver is explicitly beta; "smart search" relevance scoring and typo tolerance suggest PHP-side scoring over result sets, which has query-plan implications (below).

Key questions to put to the maintainer (or answer internally before adoption):

  1. Is this a maintained product or a portfolio project? What is the intended release/support horizon, and is there a documented upgrade policy between minors?
  2. What is the test coverage split between PHP classes and Blade/JS behavior, and is there a browser-level test harness planned?
  3. How does relevance scoring/typo tolerance execute — SQL-side or in PHP over the fetched page? What are the documented row-count limits per feature?
  4. What is the security disclosure process, and how are generated scaffolds expected to wire authorize()/policies by default?
  5. Are the override-able method signatures (baseQuery, saveData, onInlineUpdate, …) considered public API under semver?
  6. Is Filament coexistence supported, or do the two conflict on Livewire assets and styling?
  7. Where is documentation source-controlled, and how is doc/site drift prevented?

Integration Approach

Stack fit. Adopt only if the target application is Laravel 11/12 on PHP 8.1+ with Livewire 3 already in use and a Tailwind+DaisyUI design layer either present or acceptable. If the team is on Filament, this package is redundant — its own pitch is "Filament productivity without Filament," so the decision is a fork in the road, not a complement. If the team is on Bootstrap or a bespoke design system, stop here.

Migration path. Do not migrate existing admin screens. Pick one net-new internal page with low blast radius (an internal ops/reference table, not a customer-facing or financially material screen). Sequence:

  1. Spike (1–2 days). Install in a scratch branch, scaffold one model, wire the layout directives, confirm styling and toasts in a Docker build — the last part matters because vendor Blade scanning changes your asset pipeline.
  2. Pilot page (1 sprint). Replace the scaffold's data plumbing with your real query via baseQuery(), attach policies to every generated save/delete/bulk/inline path, and add a smoke test asserting the page renders and 403s correctly.
  3. Design review. Confirm the DaisyUI theme matches your admin language and that its base styles are scoped; check mobile card layout against your responsive spec.
  4. Harden. Pin the exact version in composer.json; add the @source glob and a CI assertion that the compiled CSS includes package classes; document the layout directives as a non-negotiable base-layout contract with a test that fails loudly if they are removed.
  5. Optional capability rollout. Excel/PDF export (adds maatwebsite/excel, barryvdh/laravel-dompdf), then search drivers. Keep Meilisearch out of the critical path until out of beta.
  6. Generalize. Once one page survives a sprint in production, template the generator output (mrcatz:make publishes stubs) so subsequent pages bake in your authorization and query conventions.

Compatibility. Verify against the exact Tailwind v3-or-v4 line your build uses (v4 uses @source, v3 uses content globs — the README's snippet is v4-shaped), DaisyUI 4 vs 5, and Livewire 3 vs 4. Add PHP/Laravel/Livewire/Tailwind/DaisyUI versions to your dependency radar; the package's supported matrix is broad (Laravel 11–13, Livewire 3–4, Tailwind 3–4, DaisyUI 4–5), and breadth without depth means your specific combination may be the untested one.

Lock-in mitigation. The real switching cost is not data or schema — it is the page components. Keep domain logic in services, actions, and form requests; let the generated Livewire page be a thin presentation layer. If you later move to Filament, you rewrite presentation and lose nothing else. Budget that rewrite cost at roughly the effort of building the pages originally, and accept it as the insurance premium.

Operational Impact

Maintenance. Expect meaningful ongoing vendor work, not "install and forget." The patch cadence (five patch releases in the 1.29.x window, all UI/field bugfixes) means version bumps carry real regression risk, and pins need deliberate, tested upgrades rather than automated merging. Tailwind vendor scanning couples your asset build to the package's Blade files: a package update can change your CSS output, and your Docker/CI build must have vendor/ populated before compiling assets. Assign a named owner and a monthly review of the release feed.

Support. There is none commercially: GitHub issues, one maintainer, no SLA, no security policy, no LTS branch. Plan for self-support. Mitigations that are cheap now and valuable later: fork to an internal mirror at your pinned version so you can hotfix, keep a short internal patch queue, and record every override hook you rely on so upgrades can be diffed against a known surface. MIT licensing makes this legitimate; the fork carries real cost, so treat it as contingency rather than default.

Scaling. Server-side pagination is standard and fine. The risk concentrates in three places: (a) smart search — multi-keyword relevance scoring, highlighting, and typo tolerance likely execute in PHP over the row set, so profile against your largest expected table and confirm it degrades gracefully or routes to Meilisearch (beta) before you advertise it; (b) exports — Excel/PDF generation over large filtered sets is a memory and request-time hazard, and export-on-demand through a web request should be tested at 10k+ rows and moved to queued jobs if it does not hold; (c) bulk selection — large selection payloads over Livewire can bloat the component state, so cap or paginate selection for big tables. None of these are unusual for admin CRUD; all of them need a measured ceiling documented before rollout, not discovered in production.

Failure modes to instrument against.

Failure Symptom Guard
Missing layout directives Table/modal/toasts silently inert Base-layout test + documented contract
Missing Tailwind @source glob Unstyled components, looks fine in local hot-reload, broken in build CI CSS assertion
DaisyUI/Tailwind version skew Theme breakage, layout drift Pin and test the exact matrix
Generated CRUD without policies Privilege escalation, unintended writes/deletes Policy on every generated action; authz test per page
Inline edit without validation parity Invalid data bypassing model rules Mirror validation in onInlineUpdate()
Export deps absent in an environment Runtime error on a rarely exercised path Feature test per environment
Blade/JS regression on package upgrade Field disappears (cf. 1.29.9 dateRange in card sections) Visual smoke test on every bump
Maintainer abandonment No fixes, no PHP/Laravel forward support Internal fork + scheduled replacement-cost decision

Ramp-up. For a developer already fluent in Livewire and Tailwind, the fluent API and generator are learnable in a day; the Form Builder's chainable modifiers and the override-hook set take a week to use idiomatically. Two frictions to plan for: documentation lives on a separate hosted site rather than versioned in the repo, so you cannot read the docs for the tag you pinned, and there is no offline copy for air-gapped or audited environments. Budget a short internal wiki capturing the override hooks and layout contract you actually depend on — that page is your upgrade safety net and your onboarding artifact.

Recommendation. Approve for a single-page production pilot on an internal admin screen, pinned and policy-hardened, with a pre-agreed exit criterion (page survives one sprint without a package-level blocker, or you revert to hand-rolled Livewire and lose only that page). Do not standardize the admin surface on it, and do not adopt it as the platform for customer-facing or financially material screens until there is evidence of a second maintainer or a funded support path. The productivity upside is real and the integration cost is low; the concentration risk — one maintainer, minimal adoption, unstable extension surface, UI-layer defects escaping tests — is what caps this at a pilot rather than a platform bet.

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.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator