---
title: WORKFLOW_SERIALIZE
docs_index: /llms.txt
lastUpdated: 2026-10-13
---

> For an index of all documentation, see [/llms.txt](/llms.txt).

`WORKFLOW_SERIALIZE` defines custom serialization for user-defined class instances. The static method accepts an instance and returns serializable data.

## Usage

```typescript lineNumbers
import { WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE } from "@workflow/serde";

class Point {
  constructor(public x: number, public y: number) {}

  static [WORKFLOW_SERIALIZE](instance: Point) {
    return { x: instance.x, y: instance.y };
  }

  static [WORKFLOW_DESERIALIZE](data: { x: number; y: number }) {
    return new Point(data.x, data.y);
  }
}
```

## API signature

```typescript
static [WORKFLOW_SERIALIZE](instance: T): SerializableData
```

### Parameters

### Returns

The method should return serializable data. This can be:

- Primitives (`string`, `number`, `boolean`, `null`, `undefined`, `bigint`)
- Plain objects with serializable values
- Arrays of serializable values
- Built-in serializable types (`Date`, `Map`, `Set`, `RegExp`, `URL`, etc.)
- Other custom classes that implement serialization

## Requirements

> The method must be implemented as a **static** method on the class. Instance methods are not supported.

- Both `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE` must be implemented together.
- The returned data must itself be serializable.
- The SWC compiler plugin automatically detects and registers classes that implement these symbols.

> This method runs inside the workflow context and is subject to the same constraints as `"use workflow"` functions:
>
> - No Node.js-specific APIs (like `fs`, `path`, `crypto`, etc.)
> - No non-deterministic operations (like `Math.random()` or `Date.now()`)
> - No external network calls
> - No side effects on workflow state: the method may run outside deterministic replay, so mutations would not be reconstructed
>
> Keep this method focused on extracting data from the instance.

---

For a semantic overview of all documentation, see [/sitemap.md](/sitemap.md)

For an index of all available documentation, see [/llms.txt](/llms.txt)

For agent-facing discovery, including API and MCP surfaces, see [/agents.md](/agents.md)