Laravel Tutorials

Optimizing Laravel Livewire Performance with Computed Properties

Published
Optimizing Laravel Livewire Performance with Computed Properties image

Livewire developers continuously seek methods to enhance component efficiency and boost application performance. One essential technique involves leveraging computed properties with caching capabilities to prevent expensive re-computations.

Understanding Computed Properties Computed properties in Livewire provide a powerful mechanism for caching expensive operations. When you mark a method with #[Computed], Livewire caches the result and only re-evaluates it when necessary, significantly improving performance for complex calculations and data retrievals.

How to Use Computed Properties Here's how to implement cached computed properties in your Livewire components:

use Livewire\Component;
use Livewire\Attributes\Computed;
 
class Dashboard extends Component
{
public $filter = 'week';
 
#[Computed]
public function stats()
{
return [
'users' => User::count(),
'posts' => Post::where('created_at', '>=', now()->sub($this->filter))->count(),
'comments' => Comment::where('created_at', '>=', now()->sub($this->filter))->count(),
];
}
 
public function render()
{
return view('livewire.dashboard', [
'stats' => $this->stats,
]);
}
}

In this example, the stats() method uses #[Computed] to cache expensive database queries. The method only re-executes when the component re-renders, providing automatic optimization.

Performance Benefits Computed properties deliver substantial advantages: they eliminate redundant calculations during a single request lifecycle, reduce database query overhead for complex operations, and optimize resource utilization by caching results intelligently.

Advanced Caching Strategies For more sophisticated caching needs, Livewire offers persistent and global caching options:

use Livewire\Component;
use Livewire\Attributes\Computed;
 
class AnalyticsDashboard extends Component
{
public $dateRange = 'last7days';
public $selectedMetric = 'pageviews';
 
#[Computed(persist: true)]
public function analyticsData()
{
return AnalyticsService::fetch($this->dateRange, $this->selectedMetric);
}
 
#[Computed(cache: true, key: 'top-performers')]
public function topPerformers()
{
return PerformanceAnalyzer::getTop10($this->dateRange);
}
 
public function render()
{
return view('livewire.analytics-dashboard');
}
}

Here's a comprehensive service demonstrating various computed property patterns:

class ReportingService extends Component
{
public $reportType = 'monthly';
public $userId;
 
#[Computed(persist: true)]
public function userMetrics()
{
return User::with('posts', 'comments')
->where('id', $this->userId)
->first()
->calculateMetrics($this->reportType);
}
 
#[Computed(cache: true, seconds: 3600)]
public function systemStats()
{
return [
'active_users' => $this->getActiveUserCount(),
'server_health' => $this->checkServerHealth(),
'performance_metrics' => $this->calculatePerformanceMetrics()
];
}
 
#[Computed]
public function filteredReports()
{
return Report::where('type', $this->reportType)
->where('user_id', $this->userId)
->with('attachments')
->get()
->map(function($report) {
return $report->processComplexCalculations();
});
}
 
private function getActiveUserCount()
{
return Cache::remember('active_users', 300, function() {
return User::where('last_active', '>=', now()->subMinutes(15))->count();
});
}
}

This service showcases persistent caching for component-specific data, global caching with custom duration for system-wide metrics, and standard computed properties for filtered data processing.

Livewire's computed properties transform expensive operations into efficient, cached methods that dramatically improve application responsiveness and reduce server load through intelligent result caching.

Harris Raftopoulos photo

Senior Software Engineer • Staff & Educator @ Laravel News • Co-organizer @ Laravel Greece Meetup

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
Image Dominant Color and HEIC Support in Laravel 13.24 image

Image Dominant Color and HEIC Support in Laravel 13.24

Read article
Official Laravel Zed Extension: LSP for PHP & Blade image

Official Laravel Zed Extension: LSP for PHP & Blade

Read article
Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD image

Laravel Head: Manage Meta Tags, Open Graph, and JSON-LD

Read article
PhpStorm 2026.2 Released image

PhpStorm 2026.2 Released

Read article
Laravel Doctor: Diagnose Your App With One Artisan Command image

Laravel Doctor: Diagnose Your App With One Artisan Command

Read article
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article