> This page is for SDKs, version Current (default).
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

# TypeScript serde layer

> Learn how to enable the TypeScript serde layer in Fern SDK generator to transform API field names to camelCase and validate requests at runtime.

Fern's TypeScript SDK generator includes an optional serde layer that determines whether the generated SDK matches your original API naming conventions (snake_case vs. camelCase, case-sensitive fields) or follows TypeScript conventions. This serde layer is controlled by the `serdeLayer` option in the TypeScript target's `generation` block in `sdk-config.yml`.

By default, the serde layer is **disabled**, meaning field names are preserved exactly as they appear in your API specification.

## When to enable the serde layer

**`sdk-config.yml`**

```yaml title="sdk-config.yml" {4}
targets:
  - language: typescript
    generation:
      serdeLayer: true # Enable serde layer
```

When you turn on the serde layer (`serdeLayer: true`), the TypeScript SDK generator includes custom serialization code that:

* Transforms all property names from your API to camelCase
* Validates requests and responses at runtime
* Supports complex types like `Date` and `Set`.

Enable the serde layer when you want idiomatic TypeScript conventions and don't have case-sensitive field conflicts. Keep it disabled when your API has fields that differ only by casing or when you need exact field name preservation.

## Additional configuration options

Set `useBigInt: true` alongside an enabled serde layer to preserve precision for large numbers. It only takes effect when the serde layer is enabled (`serdeLayer: true`), as it requires the custom serialization infrastructure.

`sdk-config.yml` doesn't have the `skipResponseValidation` and `allowExtraFields` options yet. To use them with `generators.yml`, see the [Legacy TypeScript serde layer](/learn/sdks/legacy/generators/typescript/serde-layer#additional-configuration-options) page.

**`sdk-config.yml`**

```yaml title="sdk-config.yml" {4-5}
targets:
  - language: typescript
    generation:
      serdeLayer: true # Enable serde layer
      useBigInt: true  # Preserve precision for large numbers
```

For the complete list of all TypeScript configuration options, go to [TypeScript configuration](/learn/sdks/generators/typescript/configuration).