htmx: Redirect after request

Join the AI Workshop to learn more about AI and how it can be applied to web development. Next cohort February 1st, 2026

The AI-first Web Development BOOTCAMP cohort starts February 24th, 2026. 10 weeks of intensive training and hands-on projects.


On a site using htmx I had the need of redirecting to the homepage (/) after I did a network DELETE request to the server.

A first implementation I did involved client-side redirect by listening to the htmx:afterRequest event.

The event happened after clicking a button with id button-delete-project, so I used this code:

<script>
  document.addEventListener('htmx:afterRequest',
    function (event) {
    if ((event as CustomEvent).detail.target.id ===
      'button-delete-project') {
       window.location.href = '/'
    }
  })
</script>

An alternative approach, the one I decided to go for, involved setting a custom htmx header in the server response.

After deleting an item, I set the HX-Redirect HTTP header to /.

Using an Astro route, I used this code:

if (Astro.request.method === 'DELETE') {
  await deleteProject(id)

  return new Response(null, {
    status: 204,
    statusText: 'No Content',
    headers: {
      'HX-Redirect': '/',
    },
  })
}

After doing the HTTP request, htmx automatically redirects to that URL, client-side.

You can set a wide variety of custom headers in the response, to do many interesting things like this one, for which you might think you’d have to write custom code, but it’s all built-in for you.

Lessons in this unit:

0: Introduction
1: Why htmx
2: The core idea of htmx
3: Installing htmx
4: Doing a GET request
5: Swap
6: POST request
7: Targets
8: Loading indicator
9: Confirming actions, and prompts
10: Triggers
11: Request headers
12: Response headers
13: Events
14: ▶︎ Redirect after request
15: Send files using htmx.ajax()
16: Perform something on page load
17: Conditionally hide HTML elements based on HTMX request status
18: htmx + Alpine template tag
19: htmx, include hidden input fields outside of a form
20: htmx trigger request via JS event