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

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Laravel Auditor Audits Your App With Your Own AI Agent image

Laravel Auditor Audits Your App With Your Own AI Agent

Read article
A simple form builder that stays out of your way image

A simple form builder that stays out of your way

Read article
Laravel AI: Trace Agent Runs With Lifecycle Events image

Laravel AI: Trace Agent Runs With Lifecycle Events

Read article
Laravel AI: Get Raw HTTP Responses and Rate Limits image

Laravel AI: Get Raw HTTP Responses and Rate Limits

Read article
Agent Run Observability in Laravel AI SDK 0.11 image

Agent Run Observability in Laravel AI SDK 0.11

Read article
Debounced Queued Event Listeners in Laravel image

Debounced Queued Event Listeners in Laravel

Read article