Hi, I’m on Filament v4 and I’m seeing a strange behaviour on the View page of a resource that uses an infolist.
Setup
Laravel 11.48.0, Filament Panels v4
A ViewRepair page (extends ViewRecord) with an infolist defined on the resource
Infolist has a Section with a grid of TextEntrys, including:
TextEntry::make('customer.full_name')
TextEntry::make('customer.email')
TextEntry::make('customer.mobile')
Plus other fields (device, serial number, tracking, dates, status badges, etc.)
Repair has a customer relation; the same data works everywhere else (forms, actions, etc.).
What happens
On first load of the View page, most fields render correctly (e.g. customer.full_name, device, serial number, tracking, dates).
customer.email and customer.mobile stay empty until I trigger any Livewire request (e.g. open a modal, switch tab, click something). After that, they show and stay correct.
In Filament v3 the same infolist worked: email and mobile showed on first load.
What I already tried
Eager loading: loadMissing('customer') in ViewRepair::mount() and in getRecord().
Overriding defaultInfolist() to set $schema->record($this->getRecord()) so the schema always gets the record with customer loaded.
Using TextEntry::make('customer_email')->state(fn (Repair $record) => $record->customer?->email) (and similar for mobile) instead of dot notation.
Using closures that get the record via the Livewire component.
Same result: email and mobile only appear after the first UI interaction.
Question
Is this a known issue in v4 with infolist state / dot notation on relations on ViewRecord, or is there a recommended way to make customer.email and customer.mobile render on first load without workarounds? I can provide a minimal example if useful.
Thanks.