---
title: "ext_tables.php (Deprecated)"
manual: "TYPO3 Explained"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3coreapi:admin-tools-upgrade-tca-ext-tables@main"
source: "ExtensionArchitecture/FileStructure/ExtTables.rst"
modified: "2026-09-16T13:05:25+00:00"
---

# `ext_tables.php` (Deprecated)

> [!WARNING]
> **Deprecated since version 14.3**
>
> Using the `ext_tables.php` file in extensions is deprecated.

-   **ext_tables.php**

    -   *Scope:* extension
    -   *Path (Composer):* packages/my_extension/ext_tables.php
    -   *Path (Classic):* typo3conf/ext/my_extension/ext_tables.php

    This file is deprecated. It was historically used to register backend
    modules, page doktypes, user settings, and other runtime configuration.
    All of these use cases now have dedicated alternatives in modern TYPO3.

## Migration: move registrations from `ext_tables.php`

Move all registrations from [`ext_tables.php`](#file-extension-ext-tables-php) to the appropriate
configuration files.

**User settings:**

User settings previously registered via
`ExtensionManagementUtility::addFieldsToUserSettings()` in
[`ext_tables.php`](#file-extension-ext-tables-php) should now be added via
`ExtensionManagementUtility::addUserSetting()` in
[`Configuration/TCA/Overrides/be_users.php`](Configuration/TCA/Index.md#file-extension-configuration-tca-overridessomefile-php).

Before:

**ext_tables.php**

```php
<?php

use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;

$GLOBALS['TYPO3_USER_SETTINGS']['columns']['myCustomSetting'] = [
  'type' => 'check',
  'label' => 'my_ext.messages:myCustomSetting',
];
ExtensionManagementUtility::addFieldsToUserSettings(
  'myCustomSetting',
  'after:emailMeAtLogin',
);

```

After:

**Configuration/TCA/Overrides/be_users.php**

```php
<?php

use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;

ExtensionManagementUtility::addUserSetting(
  'myCustomSetting',
  [
    'label' => 'my_ext.messages:myCustomSetting',
    'config' => [
      'type' => 'check',
      'renderType' => 'checkboxToggle',
    ],
  ],
  'after:emailMeAtLogin',
);

```

**Page type allowed record types:**

Page doktypes previously registered via `PageDoktypeRegistry->add()` in
[`ext_tables.php`](#file-extension-ext-tables-php) should now use the TCA option
`allowedRecordTypes` in [`Configuration/TCA/Overrides/pages.php`](Configuration/TCA/Index.md#file-extension-configuration-tca-overridessomefile-php).

> [!NOTE]
> **See also**
>
> [Create new page type](https://docs.typo3.org/permalink/t3coreapi:page-types-example@main)

Before:

**ext_tables.php**

```php
<?php

use TYPO3\CMS\Core\DataHandling\PageDoktypeRegistry;
use TYPO3\CMS\Core\Utility\GeneralUtility;

GeneralUtility::makeInstance(PageDoktypeRegistry::class)->add(116, [
  'allowedTables' => ['tt_content', 'my_custom_record'],
]);

```

After:

**Configuration/TCA/Overrides/pages.php**

```php
<?php

$GLOBALS['TCA']['pages']['types']['116']['allowedRecordTypes'] = [
  'tt_content',
  'my_custom_record',
];

```

Once all registrations have been moved and TYPO3 V13 support is dropped, the
[`ext_tables.php`](#file-extension-ext-tables-php) file can be removed from the extension.
