diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..64b372da1c3f8fc7e9e12173dd274a3d421db08c
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,49 @@
+# This file is a template, and might need editing before it works on your project.
+# This is a sample GitLab CI/CD configuration file that should run without any modifications.
+# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts,
+# it uses echo commands to simulate the pipeline execution.
+#
+# A pipeline is composed of independent jobs that run scripts, grouped into stages.
+# Stages run in sequential order, but jobs within stages run in parallel.
+#
+# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages
+#
+# You can copy and paste this template into a new `.gitlab-ci.yml` file.
+# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.
+#
+# To contribute improvements to CI/CD templates, please follow the Development guide at:
+# https://docs.gitlab.com/ee/development/cicd/templates.html
+# This specific template is located at:
+# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml
+
+stages:          # List of stages for jobs, and their order of execution
+  - build
+  - test
+  - deploy
+
+build-job:       # This job runs in the build stage, which runs first.
+  stage: build
+  script:
+    - echo "Compiling the code..."
+    - echo "Compile complete."
+
+unit-test-job:   # This job runs in the test stage.
+  stage: test    # It only starts when the job in the build stage completes successfully.
+  script:
+    - echo "Running unit tests... This will take about 60 seconds."
+    - sleep 60
+    - echo "Code coverage is 90%"
+
+lint-test-job:   # This job also runs in the test stage.
+  stage: test    # It can run at the same time as unit-test-job (in parallel).
+  script:
+    - echo "Linting code... This will take about 10 seconds."
+    - sleep 10
+    - echo "No lint issues found."
+
+deploy-job:      # This job runs in the deploy stage.
+  stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.
+  environment: production
+  script:
+    - echo "Deploying application..."
+    - echo "Application successfully deployed."
diff --git a/fieldblock.info.yml b/fieldblock.info.yml
index 258d4a343296d0b47f35bae74fb2ccd6b550bc3a..6819170d2123073331fd1cb3e369091cd3094c24 100644
--- a/fieldblock.info.yml
+++ b/fieldblock.info.yml
@@ -1,7 +1,7 @@
 name: Field as Block
 description: 'Display fields of the current entity as blocks.'
 type: module
-core_version_requirement: ^8.7.7 || ^9 || ^10
+core_version_requirement: ^9 || ^10 || ^11 || ^12
 dependencies:
   - drupal:block
 configure: fieldblock.field_block_config_form
diff --git a/src/Form/FieldBlockConfigForm.php b/src/Form/FieldBlockConfigForm.php
index f0c84cab443952e0bcd265532241cce21c5762c4..77cf355ede4ad36bc3021a99fd7a2e7cdc7996bd 100644
--- a/src/Form/FieldBlockConfigForm.php
+++ b/src/Form/FieldBlockConfigForm.php
@@ -8,10 +8,9 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Form\ConfigFormBase;
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Config\ConfigFactoryInterface;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Drupal\fieldblock\Controller\FieldBlockController;
 use Drupal\fieldblock\BlockEntityStorage;
+use Drupal\fieldblock\Controller\FieldBlockController;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Configuration for select Entity types and delete blocks of unused types.
@@ -56,8 +55,6 @@ class FieldBlockConfigForm extends ConfigFormBase {
   /**
    * Constructs a \Drupal\fieldblock\Form\FieldBlockConfigForm object.
    *
-   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
-   *   The factory for configuration objects.
    * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entityTypeManager
    *   The entity type manager.
    * @param \Drupal\fieldblock\BlockEntityStorage $storage
@@ -67,8 +64,7 @@ class FieldBlockConfigForm extends ConfigFormBase {
    * @param \Drupal\Core\Block\BlockManager $blockManager
    *   The block manager.
    */
-  public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entityTypeManager, BlockEntityStorage $storage, ModuleHandlerInterface $moduleHandler, BlockManager $blockManager) {
-    parent::__construct($config_factory);
+  public function __construct(EntityTypeManagerInterface $entityTypeManager, BlockEntityStorage $storage, ModuleHandlerInterface $moduleHandler, BlockManager $blockManager) {
     $this->entityTypeManager = $entityTypeManager;
     $this->storage = $storage;
     $this->fieldblockController = new FieldBlockController();
@@ -81,7 +77,6 @@ class FieldBlockConfigForm extends ConfigFormBase {
    */
   public static function create(ContainerInterface $container) {
     return new static(
-      $container->get('config.factory'),
       $container->get('entity_type.manager'),
       $container->get('fieldblock.block_storage'),
       $container->get('module_handler'),
diff --git a/src/Plugin/Block/FieldBlock.php b/src/Plugin/Block/FieldBlock.php
index 8709bba68d39f775fba84b50a5fbd08955ebdd1b..8a5004310087451710fd870a86b758c37c3c4c6d 100644
--- a/src/Plugin/Block/FieldBlock.php
+++ b/src/Plugin/Block/FieldBlock.php
@@ -15,8 +15,8 @@ use Drupal\Core\Field\FormatterInterface;
 use Drupal\Core\Field\FormatterPluginManager;
 use Drupal\Core\Form\FormHelper;
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\Core\Language\LanguageManagerInterface;
 use Drupal\Core\Form\SubformStateInterface;
+use Drupal\Core\Language\LanguageManagerInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Session\AccountInterface;
@@ -158,7 +158,7 @@ class FieldBlock extends BlockBase implements ContainerFactoryPluginInterface {
     $options = $this->formatterPluginManager->getOptions($field_definition->getType());
     foreach ($options as $id => $label) {
       $definition = $this->formatterPluginManager->getDefinition($id, FALSE);
-      $formatter_plugin_class = isset($definition['class']) ? $definition['class'] : NULL;
+      $formatter_plugin_class = $definition['class'] ?? NULL;
       $applicable = $formatter_plugin_class instanceof FormatterInterface && $formatter_plugin_class::isApplicable($field_definition);
       if ($applicable) {
         unset($options[$id]);
@@ -338,8 +338,12 @@ class FieldBlock extends BlockBase implements ContainerFactoryPluginInterface {
   public function blockSubmit($form, FormStateInterface $form_state) {
     $this->configuration['label_from_field'] = $form_state->getValue('label_from_field');
     $this->configuration['field_name'] = $form_state->getValue('field_name');
-    $this->configuration['formatter_id'] = $form_state->getValue(['formatter', 'id'], '');
-    $this->configuration['formatter_settings'] = $form_state->getValue(['formatter', 'settings'], []);
+    $this->configuration['formatter_id'] = $form_state->getValue(['formatter',
+      'id',
+    ], '');
+    $this->configuration['formatter_settings'] = $form_state->getValue(['formatter',
+      'settings',
+    ], []);
   }
 
   /**
diff --git a/src/Plugin/Derivative/FieldBlockDeriver.php b/src/Plugin/Derivative/FieldBlockDeriver.php
index 8ac358845a902a9968900d438c83c03721d5aefa..46aa77b4be0a3ec2c520cb7cfbd24167a92583a2 100644
--- a/src/Plugin/Derivative/FieldBlockDeriver.php
+++ b/src/Plugin/Derivative/FieldBlockDeriver.php
@@ -6,8 +6,8 @@ use Drupal\Component\Plugin\Derivative\DeriverBase;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
-use Symfony\Component\DependencyInjection\ContainerInterface;
 use Drupal\fieldblock\Controller\FieldBlockController;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Provides block plugin definitions for fieldblock blocks.