# RenderLifecycle

Package: `@threadplane/render` · 0.3.4

Reference: /docs/api/render/RenderLifecycle

```typescript
import type { RenderLifecycle } from '@threadplane/render';
```

## RenderLifecycle

Reactive mount, state-change, and handler-invocation measurements for the render lifecycle service.

```typescript
export interface RenderLifecycle  {
  readonly firstMountAt: Signal<{
        kind: 'spec' | 'element';
        elementType?: string;
        at: number;
    } | null>;
  readonly lastHandlerInvokedAt: Signal<{
        action: string;
        at: number;
    } | null>;
  readonly lastMountAt: Signal<number | null>;
  readonly lastStateChangeAt: Signal<number | null>;
  readonly mountCount: Signal<number>;
}
```

### firstMountAt

First mount event in this render context. Sticky — does not reset.

```typescript
readonly firstMountAt: Signal<{
        kind: 'spec' | 'element';
        elementType?: string;
        at: number;
    } | null>;
```

### lastHandlerInvokedAt

Most recent handler invocation.

```typescript
readonly lastHandlerInvokedAt: Signal<{
        action: string;
        at: number;
    } | null>;
```

### lastMountAt

Epoch ms of the most recent mount event.

```typescript
readonly lastMountAt: Signal<number | null>;
```

### lastStateChangeAt

Epoch ms of the most recent state-change event.

```typescript
readonly lastStateChangeAt: Signal<number | null>;
```

### mountCount

Total mount count since render context started.

```typescript
readonly mountCount: Signal<number>;
```