You're browsing the documentation for Livewire v4 beta. Go to stable v3 docs →

Renderless

Are you a visual learner?
Master Livewire with our in-depth screencasts
Watch now

The #[Renderless] attribute skips the rendering phase of Livewire's lifecycle when an action is called, improving performance for actions that don't modify the component's view.

Basic usage

Apply the #[Renderless] attribute to any action method that doesn't need to re-render the component:

<?php // resources/views/components/post/⚡show.blade.php
 
use Livewire\Attributes\Renderless;
use Livewire\Component;
use App\Models\Post;
 
new class extends Component {
public Post $post;
 
public function mount(Post $post)
{
$this->post = $post;
}
 
#[Renderless]
public function incrementViewCount()
{
$this->post->incrementViewCount();
}
};
<div>
<h1>{{ $post->title }}</h1>
<p>{{ $post->content }}</p>
 
<div wire:intersect="incrementViewCount"></div>
</div>

The example above uses wire:intersect to call incrementViewCount() when the user scrolls to the bottom. Since #[Renderless] is applied, the view count is logged but the template doesn't re-render—no part of the page is affected.

When to use

Use #[Renderless] when an action:

  • Only performs backend operations (logging, analytics, tracking)
  • Doesn't modify any properties that affect the rendered view
  • Needs to run frequently without causing unnecessary re-renders

Common use cases include:

  • Tracking user interactions (clicks, scrolls, time on page)
  • Sending analytics events
  • Updating counters or metrics
  • Performing background operations

Alternative approaches

Using skipRender()

If you need to conditionally skip rendering or prefer not to use attributes, you can call skipRender() directly in your action:

<?php // resources/views/components/post/⚡show.blade.php
 
use Livewire\Component;
use App\Models\Post;
 
new class extends Component {
public Post $post;
 
public function incrementViewCount()
{
$this->post->incrementViewCount();
 
$this->skipRender();
}
};

Using the .renderless modifier

You can also skip rendering directly from the element using the .renderless modifier:

<button type="button" wire:click.renderless="incrementViewCount">
Track View
</button>

This approach is useful for one-off cases where you don't want to add an attribute to the method.

Learn more

For more information about actions and performance optimization, see the Actions documentation.