# A tidier CMA format for focal points

[date: 2026-06-10T16:08:20.794+02:00]

Focal points are now non-localized: every asset has a single focal point, shared across all locales. That change is already live in every project and asks nothing of you. (If you missed it, [here's the full story](https://www.datocms.com/product-updates/one-focal-point-per-asset.md).)

This post is about the one part that *is* opt-in: the shape of `default_field_metadata` in the Content Management API.

By default, nothing changes for your integrations. The CMA keeps returning and accepting the existing locale-keyed shape, so your current code keeps working untouched. The only difference is that the focal point is now the same value in every locale entry: the one real value, replicated for backward compatibility.

When you want an API that reflects the new reality, opt in. With the flag on, `default_field_metadata` switches to a field-keyed shape: `alt`, `title,` and `custom_data` remain locale-keyed, but focal\_point appears once at the top level. The legacy locale-keyed shape is then no longer accepted on write, so update any code that writes `default_field_metadata` to the new shape before you activate it.

#### **Before opt-in migration: Current locale-keyed shape**

```json
{
  "data": {
    "id": "12345678",
    "type": "upload",
    "attributes": {
      "default_field_metadata": { // Locales first, then fields
        "en": { // Primary locale
          "alt": "English alt text",
          "title": "English title",
          "custom_data": {
            "english_custom_data": "hi"
          },
          "focal_point": {
            "x": 0.12,
            "y": 0.34
          }
        },
        "it": {
          "alt": "Italian alt text",
          "title": "Italian title",
          "custom_data": {
            "italian_custom_data": "ciao"
          },
          "focal_point": { // This is silently ignored now; overridden by primary
            "x": 0.56,
            "y": 0.78
          }
        }
      }
    }
  }
}
```

#### After opt-in migration: New field-keyed shape

```json
{
  "data": {
    "id": "12345678",
    "type": "upload",
    "attributes": {
      "default_field_metadata": { // Fields first, then locales
        "alt": {
          "en": "English alt text",
          "it": "Italian alt text"
        },
        "title": {
          "en": "English title",
          "it": "Italian title"
        },
        "custom_data": {
          "en": {
            "english_custom_data": "hi"
          },
          "it": {
            "italian_custom_data": "ciao"
          }
        },
        "focal_point": { // No longer locale-specific
          "x": 0.12,
          "y": 0.34
        }
      }
    }
  }
}
```

### Activating the opt-in

#### Existing Projects (created before 2026-06-11)

In an environment's **Configuration** screen (not Project settings), under **Available updates**, you should see a new opt-in update:

(Image content)

It's set per environment, and it's a one-way switch: once `non_localized_focal_points` is on, you can't turn it back off. If you have integrations that write `default_field_metadata` through the CMA, we strongly recommend enabling it first in a separate Sandbox environment, updating and verifying your integrations there, and only then activating it on your primary environment.

If you don't write this data programmatically, there's nothing to do here. The default shape continues to work, and the focal point is already consolidated across all assets.

#### New projects (created after 2026-06-11)

The opt-in is automatically enabled for new projects and will use the new field-keyed format.

*JS clients' support for the new shape is available from* [*version 5.5.0*](https://github.com/datocms/js-rest-api-clients/releases/tag/v5.5.0)*.*