diff --git a/list_predefined_options.module b/list_predefined_options.module
index e6cae8e421d54e9680ed72dec56efe62fffb8b04..0fe9c2f3b8ba5d6d254e7d140d917d93ab26afcd 100644
--- a/list_predefined_options.module
+++ b/list_predefined_options.module
@@ -9,25 +9,46 @@ use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
+use Drupal\field\FieldStorageConfigInterface;
+
+/**
+ * Implements hook_form_FORM_ID_alter(): field_config_edit_form.
+ *
+ * For core >=11.x.
+ */
+function list_predefined_options_form_field_config_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
+  $subform =& $form['field_storage']['subform'];
+  /** @var \Drupal\field\FieldConfigInterface $fieldConfig */
+  $fieldConfig = $form_state->getFormObject()->getEntity();
+  /** @var \Drupal\field\FieldStorageConfigInterface $fieldStorageConfig */
+  $fieldStorageConfig = $fieldConfig->getFieldStorageDefinition();
+  _list_predefined_options_storage_form_alter($subform, $fieldStorageConfig);
+}
 
 /**
  * Implements hook_form_FORM_ID_alter(): field_storage_config_edit_form.
+ *
+ * For core <10/11.x.
  */
 function list_predefined_options_form_field_storage_config_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
-  /** @var \Drupal\Core\Field\FieldConfigInterface $field */
-  $field = $form_state->getFormObject()->getEntity();
+  /** @var \Drupal\field\FieldStorageConfigInterface $fieldStorageConfig */
+  $fieldStorageConfig = $form_state->getFormObject()->getEntity();
+  _list_predefined_options_storage_form_alter($form, $fieldStorageConfig);
+}
 
+function _list_predefined_options_storage_form_alter(array &$form, FieldStorageConfigInterface $fieldStorageConfig): void {
   $field_types = [
     'list_float',
     'list_integer',
     'list_string',
   ];
 
-  if (in_array($field->getType(), $field_types)) {
-    $options = \Drupal::service('plugin.manager.list_options')->listOptions($field->getType());
+  if (in_array($fieldStorageConfig->getType(), $field_types)) {
+    $options = \Drupal::service('plugin.manager.list_options')
+      ->listOptions($fieldStorageConfig->getType());
     $options = ['' => t('Custom')] + $options;
 
-    $settings = $field->getThirdPartySettings('list_predefined_options');
+    $settings = $fieldStorageConfig->getThirdPartySettings('list_predefined_options');
     $form['list_predefined_options_plugin_id'] = [
       '#type' => 'select',
       '#title' => t('Allowed values'),
@@ -77,7 +98,7 @@ function list_predefined_options_form_field_storage_config_edit_form_alter(&$for
     // function, but by the time we get here, both the form state and the field
     // config entity see it as empty, probably because of our entity builder
     // having acted.
-    $allowed_values_function_setting = $field->getSetting('allowed_values_function');
+    $allowed_values_function_setting = $fieldStorageConfig->getSetting('allowed_values_function');
     if (empty($allowed_values_function_setting) || $allowed_values_function_setting == 'list_predefined_options_allowed_values') {
       $form['settings']['allowed_values']['#access'] = TRUE;
       $form['allowed_values_function']['#access'] = FALSE;
@@ -90,7 +111,7 @@ function list_predefined_options_form_field_storage_config_edit_form_alter(&$for
 /**
  * Entity builder callback to save our settings into the field storage config.
  */
-function list_predefined_options_form_field_storage_config_edit_form_builder($entity_type, $entity, &$form, FormStateInterface $form_state) {
+function list_predefined_options_form_field_storage_config_edit_form_builder($entity_type, FieldStorageConfigInterface $entity, &$form, FormStateInterface $form_state) {
   $plugin_id = $form_state->getValue('list_predefined_options_plugin_id');
   if (!empty($plugin_id)) {
     $entity->setThirdPartySetting('list_predefined_options', 'plugin_id', $plugin_id);
@@ -109,7 +130,7 @@ function list_predefined_options_form_field_storage_config_edit_form_builder($en
 /**
  * Implements hook_ENTITY_TYPE_presave(): field_storage_config
  */
-function list_predefined_options_field_storage_config_presave(EntityInterface $entity) {
+function list_predefined_options_field_storage_config_presave(FieldStorageConfigInterface $entity) {
   // Workaround for https://www.drupal.org/project/drupal/issues/3016895 -
   // though because of https://www.drupal.org/project/drupal/issues/3366218
   // this is currently pointless.