---
title: "entries:updated Hook · v2 · Unhead"
meta:
  "og:description": "Learn about the entries:updated hook in Unhead that's triggered when head entries are modified"
  "og:title": "entries:updated Hook · v2 · Unhead"
  description: "Learn about the entries:updated hook in Unhead that's triggered when head entries are modified"
---

**Hooks**

# **entries:updated Hook**

**On this page **

- [Lifecycle Position](#lifecycle-position)
- [Hook Signature](#hook-signature)
- [Usage Example](#usage-example)
- [Use Cases](#use-cases)

The `entries:updated` hook is called whenever the collection of head entries is modified, either by adding new entries, updating existing ones, or removing entries. This hook provides a way to react to changes in the application's head content.

## [Lifecycle Position](#lifecycle-position)

This is the first hook in the entry processing chain. It runs before [`entries:resolve`](https://unhead.unjs.io/docs/v2/head/api/hooks/entries-resolve).

## [Hook Signature](#hook-signature)

```
export interface Hook {
  'entries:updated': (ctx: Unhead<any>) => HookResult
}
```

### [Parameters](#parameters)

| **Name** | **Type** | **Description** |
| --- | --- | --- |
| `ctx` | `Unhead<any>` | The Unhead instance containing the updated entries |

### [Returns](#returns)

`HookResult` which is either `void` or `Promise<void>`

## [Usage Example](#usage-example)

```
import { createHead } from '#imports'

const head = createHead({
  hooks: {
    'entries:updated': (head) => {
      // Log when entries are updated
      console.log('Head entries have been updated!')
      console.log(\`Current entry count: ${head.headEntries().length}\`)
    }
  }
})
```

## [Use Cases](#use-cases)

### [Tracking Head Changes](#tracking-head-changes)

You can use this hook to track and log changes to head entries throughout your application lifecycle:

```
import { defineHeadPlugin } from '#imports'

export const headChangeTrackingPlugin = defineHeadPlugin({
  hooks: {
    'entries:updated': (head) => {
      // Get current timestamp
      const timestamp = new Date().toISOString()

      // Log the updated state
      console.log(\`[${timestamp}] Head entries updated:\`, head.headEntries().map(entry => ({
        id: entry._i,
        input: entry.input
      })))
    }
  }
})
```

### [Triggering Side Effects](#triggering-side-effects)

The hook can be used to trigger side effects when head entries change:

```
import { defineHeadPlugin } from '#imports'

export const headChangeReactionPlugin = defineHeadPlugin({
  hooks: {
    'entries:updated': (head) => {
      // Check if title has changed
      const titleEntry = head.headEntries().find(entry =>
        entry.input && typeof entry.input === 'object' && 'title' in entry.input
      )

      if (titleEntry) {
        // Perform side effect when title changes
        notifyTitleChange(titleEntry.input.title)
      }
    }
  }
})

function notifyTitleChange(title) {
  // Custom notification logic
  console.log(\`Title changed to: ${title}\`)
}
```

[Edit this page](https://github.com/unjs/unhead/edit/v2.1.2/docs/v2/head/7.api/hooks/02.entries-updated.md)

**Did this page help you? **

[**init** Learn about the initialization hook in Unhead that's called when a head instance is created](https://unhead.unjs.io/docs/v2/head/api/hooks/init) [**entries:resolve** Learn about the entries:resolve hook in Unhead that processes entries before they're converted to tags](https://unhead.unjs.io/docs/v2/head/api/hooks/entries-resolve)

**On this page **

- [Lifecycle Position](#lifecycle-position)
- [Hook Signature](#hook-signature)
- [Usage Example](#usage-example)
- [Use Cases](#use-cases)