---
title: "Feature: #108843 - User settings configuration migrated to TCA"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:feature-108843-1738600001"
source: "Changelog/14.2/Feature-108843-UserSettingsConfigurationMigratedToTCA.rst"
typo3-version: "14.2"
typo3-major: 14
type: "feature"
issue: 108843
forge: "https://forge.typo3.org/issues/108843"
tags: ["Backend", "TCA", "PHP-API", "ext:setup"]
rendered: "2026-10-01T16:39:42+00:00"
---

# Feature: #108843 - User settings configuration migrated to TCA {#feature-108843-1738600001}

See [forge#108843](https://forge.typo3.org/issues/108843)
See [forge#108832](https://forge.typo3.org/issues/108832)

## Description {#description}

The backend user profile settings configuration that was previously stored in
`$GLOBALS['TYPO3_USER_SETTINGS']` is now available in TCA at
`$GLOBALS['TCA']['be_users']['columns']['user_settings']`.

This allows user settings to benefit from TCA-based tooling and provides
a consistent API that extensions already use for other configuration.

A new method
`ExtensionManagementUtility::addUserSetting()` has been introduced to
simplify adding custom fields to user profile settings.

## Impact {#impact}

Extensions can add custom fields to backend user profile settings using
the new `addUserSetting()` method in
`Configuration/TCA/Overrides/be_users.php`:

```php
// Configuration/TCA/Overrides/be_users.php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserSetting(
    'myCustomSetting',
    [
        'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang.xlf:myCustomSetting',
        'config' => [
            'type' => 'check',
            'renderType' => 'checkboxToggle',
        ],
    ],
    'after:emailMeAtLogin'
);
```

Alternatively, extensions can directly modify the TCA:

```php
// Configuration/TCA/Overrides/be_users.php
$GLOBALS['TCA']['be_users']['columns']['user_settings']['columns']['myCustomSetting'] = [
    'label' => 'LLL:my_extension.messages:myCustomSetting',
    'config' => [
        'type' => 'check',
        'renderType' => 'checkboxToggle',
    ],
];

// Add to showitem
$GLOBALS['TCA']['be_users']['columns']['user_settings']['showitem'] .= ',myCustomSetting';
```

### Structure {#structure}

The `user_settings` TCA column has the following structure:

-   **`columns`**

    Array of field configurations, each containing:

    -   **`label`**

        The field label (LLL reference or string)

    -   **`config`**

        Standard TCA config array (type, renderType, items, etc.)

    -   **`table` (optional)**

        Set to `'be_users'` if the field is stored in a
        `be_users` table column

-   **`showitem`**

    Comma-separated list of fields to display; supports
    `--div--;` for tabs

### Available field types {#available-field-types}

-   `input` \- Text input field
-   `number` \- Number input field
-   `email` \- Email input field
-   `password` \- Password input field
-   `check` with `renderType => 'checkboxToggle'` \-
    Checkbox or toggle
-   `select` with `renderType => 'selectSingle'` \-
    Select field
-   `language` \- Language selector

### Backward compatibility {#backward-compatibility}

For backward compatibility, the legacy
`$GLOBALS['TYPO3_USER_SETTINGS']` array is still supported. Third-party
additions are automatically migrated to TCA after all
`ext_tables.php` files have been loaded. However, this approach is
deprecated, and extensions should migrate to the new TCA-based API.
