- How do I install filament-async-column in a Laravel app?
- Install it with Composer using composer require giacomomasseron/filament-async-column. Then replace Column::make() with AsyncColumn::make() on the specific fields you want to resolve asynchronously and chain resolveUsing() with a closure for each record. The package is a presentation-layer extension for Filament v5 tables, so no queue, cache, or service boundary is required.
- Which Filament versions does giacomomasseron/filament-async-column support?
- The package targets Filament v5 table columns, and the overview positions it as a Filament v5 extension. The provided materials do not publish a support window for other Filament majors, so confirm the constraint in the package composer.json before planning an upgrade. Treat an unsupported major as a blocker rather than a managed risk.
- How is AsyncColumn different from a normal Filament table column?
- A normal Filament Column renders its value during the table render cycle, so a slow lookup can block the whole table. AsyncColumn::make() paints a placeholder first and fills the cell when the resolveUsing() callback returns for that record. It changes perceived performance and loading-state ownership, not the number of calls you make.
- How do I change the loading placeholder in Filament Async Column?
- v1.1.2 adds four CSS loader presets: skeleton as the default, plus spinner, dots, and bar. You select a preset with loader(), and loaderColor() controls its color through Filament's palette. If a column already defines custom loadingState() markup, that markup takes precedence over the loader preset.
- Does filament-async-column support dark mode and reduced motion?
- Yes. All four loader presets stop under prefers-reduced-motion, and loaderColor() resolves through Filament's palette, including FilamentColor::register() entries and dark mode. That covers a common accessibility and theming audit finding without custom CSS.
- How often does resolveUsing() run in Filament Async Column?
- The provided materials do not document whether resolveUsing() fires once per page load or on every sort, filter, search, pagination, or Livewire poll. That re-render amplification is the key unknown to measure on a realistic table before rollout. Instrument the callback and count invocations per interaction, especially against rate-limited APIs.
- Does filament-async-column cache or batch async column values?
- No. The package is a presentation-layer column extension, not a queue, cache, or batching layer. A 25-row page can still produce 25 callback executions against a remote or heavy data source. Caching, deduplication, and concurrency limiting remain your responsibility.
- What happens when resolveUsing() fails or times out?
- Error and timeout behavior is not documented; the materials describe only the happy path. Do not assume a bounded error state, because an indefinite skeleton after a failed call is worse than no async column for support tickets. Wrap resolveUsing() with your own try/catch and fallback, and test failure cases explicitly.
- Will filament-async-column break tables that already use loadingState() markup?
- No. Release notes state backward compatibility: loadingState() retains precedence, and columns that use neither loader() nor loaderColor() render the same skeleton as v1.1.1. The v1.1.2 bump is additive, so the dependency can ride a routine maintenance window while loader adoption stays a separate decision.
- Is filament-async-column safe for production Laravel admin panels?
- It is a small MIT-licensed package with a narrow surface, and v1.1.1 shows hygiene such as SECURITY.md, Dependabot, and a trimmed dist. The main risk is bus factor: a single maintainer, around 10 stars, and 0 dependents, not code quality. Test coverage and CI posture are not described in the provided materials, so verify them before using it in client-facing admin panels.