diff --git a/composer.json b/composer.json
index 7211e1fc6b2149b6fe4833ff0992162bb7625482..cdf37534af93dc087a22226aa8ab95a2aee1b6ff 100644
--- a/composer.json
+++ b/composer.json
@@ -156,7 +156,7 @@
         "drupal/svg_image": "3.0.2",
         "drupal/token": "1.15",
         "drupal/twig_field_value": "^2.0",
-        "drupal/twig_tweak": "3.3.0",
+        "drupal/twig_tweak": "3.4.0",
         "drupal/ultimate_cron": "^2.0@alpha",
         "drupal/userprotect": "1.3",
         "drupal/video_embed_field": "2.5",
diff --git a/composer.lock b/composer.lock
index ebabc82c25c1de2464cd44187be31aa87adeec0b..62e2fa9940bab11fbb8e4428551203c61cf48568 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "59c19fb4452bc31f9dcd56c6056a1929",
+    "content-hash": "ab37278475d358e74f6fe758eeb44439",
     "packages": [
         {
             "name": "algolia/places",
@@ -6389,24 +6389,23 @@
         },
         {
             "name": "drupal/twig_tweak",
-            "version": "3.3.0",
+            "version": "3.4.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/twig_tweak.git",
-                "reference": "3.3.0"
+                "reference": "3.4.0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.3.0.zip",
-                "reference": "3.3.0",
-                "shasum": "a029ab1775b62f08e573e5ad1ab27bc833e7f5b9"
+                "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.4.0.zip",
+                "reference": "3.4.0",
+                "shasum": "1f47f71b4cfbad97fff11db1adc72c311bb1645e"
             },
             "require": {
-                "drupal/core": "^9.3 || ^10.0",
+                "drupal/core": "^10.3 || ^11.0",
                 "ext-json": "*",
-                "php": ">=7.3",
-                "symfony/polyfill-php80": "^1.17",
-                "twig/twig": "^2.15.3 || ^3.4.3"
+                "php": ">=8.1",
+                "twig/twig": "^3.10.3"
             },
             "suggest": {
                 "symfony/var-dumper": "Better dump() function for debugging Twig variables"
@@ -6414,8 +6413,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "3.3.0",
-                    "datestamp": "1708670116",
+                    "version": "3.4.0",
+                    "datestamp": "1721562308",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -6423,7 +6422,7 @@
                 },
                 "drush": {
                     "services": {
-                        "drush.services.yml": "^9 || ^10 || ^11"
+                        "drush.services.yml": "^10 || ^11"
                     }
                 }
             },
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 0533e49459cb0f9a6995fc478d78a611b60faac4..8eb50e26b636ea55d4f739cb2f1cfb59d7a5f82c 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -6723,25 +6723,24 @@
         },
         {
             "name": "drupal/twig_tweak",
-            "version": "3.3.0",
-            "version_normalized": "3.3.0.0",
+            "version": "3.4.0",
+            "version_normalized": "3.4.0.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/twig_tweak.git",
-                "reference": "3.3.0"
+                "reference": "3.4.0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.3.0.zip",
-                "reference": "3.3.0",
-                "shasum": "a029ab1775b62f08e573e5ad1ab27bc833e7f5b9"
+                "url": "https://ftp.drupal.org/files/projects/twig_tweak-3.4.0.zip",
+                "reference": "3.4.0",
+                "shasum": "1f47f71b4cfbad97fff11db1adc72c311bb1645e"
             },
             "require": {
-                "drupal/core": "^9.3 || ^10.0",
+                "drupal/core": "^10.3 || ^11.0",
                 "ext-json": "*",
-                "php": ">=7.3",
-                "symfony/polyfill-php80": "^1.17",
-                "twig/twig": "^2.15.3 || ^3.4.3"
+                "php": ">=8.1",
+                "twig/twig": "^3.10.3"
             },
             "suggest": {
                 "symfony/var-dumper": "Better dump() function for debugging Twig variables"
@@ -6749,8 +6748,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "3.3.0",
-                    "datestamp": "1708670116",
+                    "version": "3.4.0",
+                    "datestamp": "1721562308",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -6758,7 +6757,7 @@
                 },
                 "drush": {
                     "services": {
-                        "drush.services.yml": "^9 || ^10 || ^11"
+                        "drush.services.yml": "^10 || ^11"
                     }
                 }
             },
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 2c9a2a3fc5569d5bfbeb8c17bdaed506084f1227..74ade7fd4370849d229a5f6d473788013dd683c3 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -3,7 +3,7 @@
         'name' => 'osu-asc-webservices/d8-upstream',
         'pretty_version' => 'dev-main',
         'version' => 'dev-main',
-        'reference' => 'cbe507440a7230022e823506d1e7857b0dff3072',
+        'reference' => 'f5bcc9ef2f78f4b3bfda17c862726efd7e74834f',
         'type' => 'project',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -1124,9 +1124,9 @@
             'dev_requirement' => false,
         ),
         'drupal/twig_tweak' => array(
-            'pretty_version' => '3.3.0',
-            'version' => '3.3.0.0',
-            'reference' => '3.3.0',
+            'pretty_version' => '3.4.0',
+            'version' => '3.4.0.0',
+            'reference' => '3.4.0',
             'type' => 'drupal-module',
             'install_path' => __DIR__ . '/../../web/modules/twig_tweak',
             'aliases' => array(),
@@ -1564,7 +1564,7 @@
         'osu-asc-webservices/d8-upstream' => array(
             'pretty_version' => 'dev-main',
             'version' => 'dev-main',
-            'reference' => 'cbe507440a7230022e823506d1e7857b0dff3072',
+            'reference' => 'f5bcc9ef2f78f4b3bfda17c862726efd7e74834f',
             'type' => 'project',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
diff --git a/web/modules/twig_tweak/.gitlab-ci.yml b/web/modules/twig_tweak/.gitlab-ci.yml
index 26dc23d262fd3a45aa6af7017fd4446fae7c8c0a..a425a535104ca761c8d1a12e5d1b5f3548bec77e 100644
--- a/web/modules/twig_tweak/.gitlab-ci.yml
+++ b/web/modules/twig_tweak/.gitlab-ci.yml
@@ -6,4 +6,20 @@ include:
       - '/includes/include.drupalci.variables.yml'
       - '/includes/include.drupalci.workflows.yml'
 variables:
-  CORE_PHP_MIN: '8.1'
+  CORE_PHP_MIN: '8.3'
+  OPT_IN_TEST_MAX_PHP: 1
+  OPT_IN_TEST_NEXT_MINOR: 1
+  OPT_IN_TEST_NEXT_MAJOR: 1
+  _CSPELL_WORDS: '"selfdoc", "Привет", "sqlq" '
+
+composer-lint: {allow_failure: false}
+eslint: {allow_failure: false}
+cspell: {allow_failure: false}
+phpcs: {allow_failure: false}
+phpstan: {allow_failure: false}
+phpstan (max PHP version): {allow_failure: false}
+phpstan (next minor): {allow_failure: false}
+phpstan (next major): {allow_failure: true} # @todo Fix this in 4.x
+phpunit (max PHP version): {allow_failure: false}
+phpunit (next minor): {allow_failure: false}
+phpunit (next major): {allow_failure: false}
diff --git a/web/modules/twig_tweak/composer.json b/web/modules/twig_tweak/composer.json
index 641f536ea329d77a504be2ae8ea02ac6c8824ce7..84c16ee9a63e04251b2907a6cde76b39780d56a9 100644
--- a/web/modules/twig_tweak/composer.json
+++ b/web/modules/twig_tweak/composer.json
@@ -10,11 +10,10 @@
         "source": "https://git.drupalcode.org/project/twig_tweak"
     },
     "require": {
-        "php": ">=7.3",
+        "php": ">=8.1",
         "ext-json": "*",
-        "drupal/core": "^9.3 || ^10.0",
-        "twig/twig": "^2.15.3 || ^3.4.3",
-        "symfony/polyfill-php80": "^1.17"
+        "drupal/core": "^10.3 || ^11.0",
+        "twig/twig": "^3.10.3"
     },
     "suggest": {
         "symfony/var-dumper": "Better dump() function for debugging Twig variables"
@@ -22,7 +21,7 @@
     "extra": {
         "drush": {
             "services": {
-                "drush.services.yml": "^9 || ^10 || ^11"
+                "drush.services.yml": "^10 || ^11"
             }
         }
     }
diff --git a/web/modules/twig_tweak/src/Command/LintCommand.php b/web/modules/twig_tweak/src/Command/LintCommand.php
index 9e3e45a34ff8171b1715b960645434738451e33e..882b19d2f42b65f343c88eebcc8be6a33d126a35 100644
--- a/web/modules/twig_tweak/src/Command/LintCommand.php
+++ b/web/modules/twig_tweak/src/Command/LintCommand.php
@@ -12,6 +12,7 @@
 // @codingStandardsIgnoreFile
 // This code is a literal copy of Symfony's LintCommand.
 // @see https://github.com/symfony/symfony/blob/5.x/src/Symfony/Bridge/Twig/Command/LintCommand.php
+// @cspell:ignore Weistroff Tamarelle Fabien Potencier
 namespace Drupal\twig_tweak\Command;
 
 use Symfony\Component\Console\Command\Command;
@@ -35,7 +36,7 @@
  * @author Marc Weistroff <marc.weistroff@sensiolabs.com>
  * @author Jérôme Tamarelle <jerome@tamarelle.net>
  */
-class LintCommand extends Command
+abstract class LintCommand extends Command
 {
     protected static $defaultName = 'lint:twig';
 
@@ -77,7 +78,7 @@ protected function configure()
         ;
     }
 
-    protected function execute(InputInterface $input, OutputInterface $output)
+    protected function execute(InputInterface $input, OutputInterface $output): int
     {
         $io = new SymfonyStyle($input, $output);
         $filenames = $input->getArgument('filename');
diff --git a/web/modules/twig_tweak/src/Command/ValidateCommand.php b/web/modules/twig_tweak/src/Command/ValidateCommand.php
index 57c66453c7e467deabb1533be33722d3ba23ded3..6e331bdcd0a0ac8a2f5cb9b48f8509e81fecf9e5 100644
--- a/web/modules/twig_tweak/src/Command/ValidateCommand.php
+++ b/web/modules/twig_tweak/src/Command/ValidateCommand.php
@@ -6,14 +6,13 @@
 
 /**
  * Implements twig-tweak:lint console command.
+ *
+ * @cspell:ignore friendsoftwig, twigcs
+ *
+ * @todo Remove this in 4.x.
  */
 final class ValidateCommand extends LintCommand {
 
-  /**
-   * {@inheritdoc}
-   */
-  protected static $defaultName = 'twig-tweak:validate';
-
   /**
    * {@inheritdoc}
    */
@@ -24,6 +23,7 @@ protected function configure(): void {
     }
 
     parent::configure();
+    $this->setName('twig-tweak:validate');
     $this->setAliases(['twig-validate']);
     $this->setHelp(
       $this->getHelp() . <<< 'TEXT'
diff --git a/web/modules/twig_tweak/src/TwigTweakExtension.php b/web/modules/twig_tweak/src/TwigTweakExtension.php
index 36e3004d0d0354bfe2e7e943bb230bb8b32d352a..b3256a591026dbd8aa2c925847eb7eb977f5d26c 100644
--- a/web/modules/twig_tweak/src/TwigTweakExtension.php
+++ b/web/modules/twig_tweak/src/TwigTweakExtension.php
@@ -15,6 +15,7 @@
 use Drupal\Core\Render\Element;
 use Drupal\Core\Render\Markup;
 use Drupal\Core\Site\Settings;
+use Drupal\Core\StringTranslation\ByteSizeMarkup;
 use Drupal\Core\Theme\ThemeManagerInterface;
 use Drupal\Core\Url;
 use Drupal\image\Entity\ImageStyle;
@@ -106,7 +107,7 @@ public function getFilters(): array {
       new TwigFilter('image_style', [self::class, 'imageStyleFilter']),
       new TwigFilter('transliterate', [self::class, 'transliterateFilter']),
       new TwigFilter('check_markup', 'check_markup'),
-      new TwigFilter('format_size', 'format_size'),
+      new TwigFilter('format_size', [ByteSizeMarkup::class, 'create']),
       new TwigFilter('truncate', [Unicode::class, 'truncate']),
       new TwigFilter('view', [self::class, 'viewFilter']),
       new TwigFilter('with', [self::class, 'withFilter']),
@@ -717,6 +718,7 @@ public static function cacheMetadata($input): array {
    */
   public static function phpFilter(array $context, string $code) {
     // Make Twig variables available in PHP code.
+    // @cspell:disable-next-line
     extract($context, EXTR_SKIP);
     ob_start();
     // phpcs:ignore Drupal.Functions.DiscouragedFunctions.Discouraged
diff --git a/web/modules/twig_tweak/src/View/BlockViewBuilder.php b/web/modules/twig_tweak/src/View/BlockViewBuilder.php
index f06fda92382c2bd0e19f6be209731101dd28703f..af207824168c321aaa67a2cb1e742ca4a0d656d7 100644
--- a/web/modules/twig_tweak/src/View/BlockViewBuilder.php
+++ b/web/modules/twig_tweak/src/View/BlockViewBuilder.php
@@ -79,7 +79,7 @@ public function __construct(
     AccountInterface $account,
     RequestStack $request_stack,
     RouteMatchInterface $route_match,
-    TitleResolverInterface $title_resolver
+    TitleResolverInterface $title_resolver,
   ) {
     $this->pluginManagerBlock = $plugin_manager_block;
     $this->contextRepository = $context_repository;
diff --git a/web/modules/twig_tweak/src/View/FieldViewBuilder.php b/web/modules/twig_tweak/src/View/FieldViewBuilder.php
index 35af7c3d97a22894e7b5d0306896fe38e5919ead..4cc2dc3fb1593388a712e2cf905a989551b9056e 100644
--- a/web/modules/twig_tweak/src/View/FieldViewBuilder.php
+++ b/web/modules/twig_tweak/src/View/FieldViewBuilder.php
@@ -50,7 +50,7 @@ public function build(
     string $field_name,
     $view_mode = 'full',
     string $langcode = NULL,
-    bool $check_access = TRUE
+    bool $check_access = TRUE,
   ): array {
 
     $build = [];
diff --git a/web/modules/twig_tweak/src/View/MenuViewBuilder.php b/web/modules/twig_tweak/src/View/MenuViewBuilder.php
index 1f91ee2e9a76d541a5ca6cb65f0ee9694cd3c66a..aa0684f2dff6c35e24b989266d033b4d40486eee 100644
--- a/web/modules/twig_tweak/src/View/MenuViewBuilder.php
+++ b/web/modules/twig_tweak/src/View/MenuViewBuilder.php
@@ -76,6 +76,7 @@ public function build(string $menu_name, int $level = 1, int $depth = 0, bool $e
       ];
     }
 
+    $build['#cache']['tags'][] = 'config:system.menu.' . $menu_name;
     $build['#cache']['contexts'][] = 'route.menu_active_trails:' . $menu_name;
 
     return $build;
diff --git a/web/modules/twig_tweak/src/View/RegionViewBuilder.php b/web/modules/twig_tweak/src/View/RegionViewBuilder.php
index 45330120605dcc1f88972e3e9ee98c036594f7a9..da721d9f72fd1826d16988d3871fee30119b480f 100644
--- a/web/modules/twig_tweak/src/View/RegionViewBuilder.php
+++ b/web/modules/twig_tweak/src/View/RegionViewBuilder.php
@@ -50,7 +50,7 @@ public function __construct(
     EntityTypeManagerInterface $entity_type_manager,
     ConfigFactoryInterface $config_factory,
     RequestStack $request_stack,
-    TitleResolverInterface $title_resolver
+    TitleResolverInterface $title_resolver,
   ) {
     $this->entityTypeManager = $entity_type_manager;
     $this->configFactory = $config_factory;
diff --git a/web/modules/twig_tweak/tests/src/Functional/TwigTweakTest.php b/web/modules/twig_tweak/tests/src/Functional/TwigTweakTest.php
index a22b4ce7a5c38cd76a7dcf7382c732f26f1f6c2c..7189085ac186fd86984b5091471b9f0d77174b4e 100644
--- a/web/modules/twig_tweak/tests/src/Functional/TwigTweakTest.php
+++ b/web/modules/twig_tweak/tests/src/Functional/TwigTweakTest.php
@@ -351,6 +351,7 @@ public function testOutput(): void {
     $this->assertXpath($xpath);
 
     // -- 'children'.
+    // cspell:disable-next-line
     $xpath = '//div[@class = "tt-children" and text() = "doremi"]';
     $this->assertXpath($xpath);
 
diff --git a/web/modules/twig_tweak/tests/src/Kernel/BlockViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/BlockViewBuilderTest.php
index 451965fa494997f8a790ec06eedbbf854ce04e2d..4d0611d9089e861fa8ea7e51d7a4b6c86ace1022 100644
--- a/web/modules/twig_tweak/tests/src/Kernel/BlockViewBuilderTest.php
+++ b/web/modules/twig_tweak/tests/src/Kernel/BlockViewBuilderTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\twig_tweak\Kernel;
 
+use Drupal\Component\Utility\DeprecationHelper;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\Tests\user\Traits\UserCreationTrait;
 
@@ -164,8 +165,14 @@ public function testBlockViewBuilder(): void {
    * Renders a render array.
    */
   private function renderPlain(array $build): string {
+    /** @var \Drupal\Core\Render\RendererInterface $renderer */
     $renderer = $this->container->get('renderer');
-    return rtrim(preg_replace('#\s{2,}#', '', $renderer->renderPlain($build)));
+    $content = (string) DeprecationHelper::backwardsCompatibleCall(
+      \Drupal::VERSION, '10.3.0',
+      fn () => $renderer->renderInIsolation($build),
+      fn () => $renderer->renderPlain($build),
+    );
+    return rtrim(preg_replace('#\s{2,}#', '', $content));
   }
 
 }
diff --git a/web/modules/twig_tweak/tests/src/Kernel/EntityFormViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/EntityFormViewBuilderTest.php
index b349b665f06660c0f83011d5cc6e956fad135135..805375f3c3e04861ff5ff50c0a4cd16b2e313950 100644
--- a/web/modules/twig_tweak/tests/src/Kernel/EntityFormViewBuilderTest.php
+++ b/web/modules/twig_tweak/tests/src/Kernel/EntityFormViewBuilderTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\twig_tweak\Kernel;
 
+use Drupal\Component\Utility\DeprecationHelper;
 use Drupal\Core\Cache\Cache;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
@@ -75,6 +76,7 @@ public function testEntityFormViewBuilder(): void {
         'user.roles:authenticated',
       ],
       'tags' => [
+        'CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD:form',
         'config:core.entity_form_display.node.article.default',
         'node:1',
         'tag_from_twig_tweak_test_node_access',
@@ -111,6 +113,7 @@ public function testEntityFormViewBuilder(): void {
         'user.roles:authenticated',
       ],
       'tags' => [
+        'CACHE_MISS_IF_UNCACHEABLE_HTTP_METHOD:form',
         'config:core.entity_form_display.node.article.default',
         'node:2',
       ],
@@ -124,7 +127,13 @@ public function testEntityFormViewBuilder(): void {
    * Renders a render array.
    */
   private function renderPlain(array $build): string {
-    return $this->container->get('renderer')->renderPlain($build);
+    /** @var \Drupal\Core\Render\RendererInterface $renderer */
+    $renderer = $this->container->get('renderer');
+    return DeprecationHelper::backwardsCompatibleCall(
+      \Drupal::VERSION, '10.3.0',
+      fn () => $renderer->renderInIsolation($build),
+      fn () => $renderer->renderPlain($build),
+    );
   }
 
 }
diff --git a/web/modules/twig_tweak/tests/src/Kernel/EntityViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/EntityViewBuilderTest.php
index 5f3c6656233c748802bfd14a9ce2dcd981a55c2d..548d338d4657999763cc6d63c702bf69f8b3b700 100644
--- a/web/modules/twig_tweak/tests/src/Kernel/EntityViewBuilderTest.php
+++ b/web/modules/twig_tweak/tests/src/Kernel/EntityViewBuilderTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\twig_tweak\Kernel;
 
+use Drupal\Component\Utility\DeprecationHelper;
 use Drupal\Core\Cache\Cache;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
@@ -187,7 +188,13 @@ public function testEntityViewBuilder(): void {
    * Renders a render array.
    */
   private function renderPlain(array $build): string {
-    $actual_html = $this->container->get('renderer')->renderPlain($build);
+    /** @var \Drupal\Core\Render\RendererInterface $renderer */
+    $renderer = $this->container->get('renderer');
+    $actual_html = DeprecationHelper::backwardsCompatibleCall(
+      \Drupal::VERSION, '10.3.0',
+      fn () => $renderer->renderInIsolation($build),
+      fn () => $renderer->renderPlain($build),
+    );
     $actual_html = preg_replace('#<footer>.+</footer>#s', '', $actual_html);
     return $actual_html;
   }
diff --git a/web/modules/twig_tweak/tests/src/Kernel/FieldViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/FieldViewBuilderTest.php
index a4627115dc9552eca4b8b330702f3cecbd104478..0a5e75f6c96032b56110770f8cd003359d7548bb 100644
--- a/web/modules/twig_tweak/tests/src/Kernel/FieldViewBuilderTest.php
+++ b/web/modules/twig_tweak/tests/src/Kernel/FieldViewBuilderTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\twig_tweak\Kernel;
 
+use Drupal\Component\Utility\DeprecationHelper;
 use Drupal\Core\Cache\Cache;
 use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
@@ -131,7 +132,13 @@ public function testFieldViewBuilder(): void {
    * Renders a render array.
    */
   private function renderPlain(array $build): string {
-    $actual_html = $this->container->get('renderer')->renderPlain($build);
+    /** @var \Drupal\Core\Render\RendererInterface $renderer */
+    $renderer = $this->container->get('renderer');
+    $actual_html = DeprecationHelper::backwardsCompatibleCall(
+      \Drupal::VERSION, '10.3.0',
+      fn () => $renderer->renderInIsolation($build),
+      fn () => $renderer->renderPlain($build),
+    );
     $actual_html = preg_replace('#<footer>.+</footer>#s', '', $actual_html);
     $actual_html = preg_replace(['#\s{2,}#', '#\n#'], '', $actual_html);
     return $actual_html;
diff --git a/web/modules/twig_tweak/tests/src/Kernel/ImageViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/ImageViewBuilderTest.php
index 88226d7e315331520e4b74b66357cbd8f0cfc606..f0d51827001c3468cbab73f6479ef81f8e1d5382 100644
--- a/web/modules/twig_tweak/tests/src/Kernel/ImageViewBuilderTest.php
+++ b/web/modules/twig_tweak/tests/src/Kernel/ImageViewBuilderTest.php
@@ -2,8 +2,10 @@
 
 namespace Drupal\Tests\twig_tweak\Kernel;
 
+use Drupal\Component\Utility\DeprecationHelper;
 use Drupal\Core\Cache\Cache;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
+use Drupal\Core\File\FileExists;
 use Drupal\Core\File\FileSystemInterface;
 use Drupal\file\Entity\File;
 use Drupal\file\FileInterface;
@@ -101,7 +103,7 @@ public function setUp(): void {
 
     // Create a copy of a test image file in root. Original sizes: 40x20px.
     $this->publicImageUri = 'public://image-test-do.jpg';
-    $file_system->copy('core/tests/fixtures/files/image-test.jpg', $this->publicImageUri, FileSystemInterface::EXISTS_REPLACE);
+    $file_system->copy('core/tests/fixtures/files/image-test.jpg', $this->publicImageUri, FileExists::Replace);
     $this->assertFileExists($this->publicImageUri);
     $this->publicImage = File::create([
       'uri' => $this->publicImageUri,
@@ -111,7 +113,7 @@ public function setUp(): void {
 
     // Create a copy of a test image file in root. Original sizes: 40x20px.
     $this->privateImageUri = 'private://image-test-do.png';
-    $file_system->copy('core/tests/fixtures/files/image-test.png', $this->privateImageUri, FileSystemInterface::EXISTS_REPLACE);
+    $file_system->copy('core/tests/fixtures/files/image-test.png', $this->privateImageUri, FileExists::Replace);
     $this->assertFileExists($this->privateImageUri);
     $this->privateImage = File::create([
       'uri' => $this->privateImageUri,
@@ -133,6 +135,11 @@ public function register(ContainerBuilder $container) {
    * Test callback.
    */
   public function testImageViewBuilder(): void {
+    // @todo Remove this once we drop support for Drupal 10.
+    if (version_compare(\Drupal::VERSION, '11.0.dev', '<')) {
+      self::markTestSkipped();
+    }
+
     $view_builder = $this->container->get('twig_tweak.image_view_builder');
 
     $uri = $this->publicImage->getFileUri();
@@ -210,7 +217,7 @@ public function testImageViewBuilder(): void {
       ],
     ];
     self::assertRenderArray($expected_build, $build);
-    self::assertSame('<picture><img src="/files/styles/small/public/image-test-do.jpg?itok=abc" width="10" height="10" alt="Image Test Do" loading="lazy" /></picture>', $this->renderPlain($build));
+    self::assertSame('<picture><img width="10" height="10" src="/files/styles/small/public/image-test-do.jpg?itok=abc" alt="Image Test Do" loading="lazy" /></picture>', $this->renderPlain($build));
 
     // -- Private image with access check.
     $build = $view_builder->build($this->privateImage);
@@ -247,7 +254,13 @@ public function testImageViewBuilder(): void {
    * Renders a render array.
    */
   private function renderPlain(array $build): string {
-    $html = $this->container->get('renderer')->renderPlain($build);
+    /** @var \Drupal\Core\Render\RendererInterface $renderer */
+    $renderer = $this->container->get('renderer');
+    $html = DeprecationHelper::backwardsCompatibleCall(
+      \Drupal::VERSION, '10.3.0',
+      fn () => $renderer->renderInIsolation($build),
+      fn () => $renderer->renderPlain($build),
+    );
     $html = preg_replace('#src=".+/files/#s', 'src="/files/', $html);
     $html = preg_replace('#\?itok=.+?"#', '?itok=abc"', $html);
     $html = preg_replace(['#\s{2,}#', '#\n#'], '', $html);
diff --git a/web/modules/twig_tweak/tests/src/Kernel/MenuViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/MenuViewBuilderTest.php
index 2a2eb6803a869a0dbfe7d4f4fe470c40fe846586..cd8bc11905348fc96d7e2b108aea52336f4fdaed 100644
--- a/web/modules/twig_tweak/tests/src/Kernel/MenuViewBuilderTest.php
+++ b/web/modules/twig_tweak/tests/src/Kernel/MenuViewBuilderTest.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Tests\twig_tweak\Kernel;
 
+use Drupal\Component\Utility\DeprecationHelper;
 use Drupal\KernelTests\KernelTestBase;
 use Drupal\menu_link_content\Entity\MenuLinkContent;
 
@@ -116,8 +117,14 @@ public function testMenuViewBuilder(): void {
    */
   private function assertMarkup(string $expected_markup, array $build): void {
     $expected_markup = preg_replace('#\s{2,}#', '', $expected_markup);
+    /** @var \Drupal\Core\Render\RendererInterface $renderer */
     $renderer = $this->container->get('renderer');
-    $actual_markup = preg_replace('#\s{2,}#', '', $renderer->renderPlain($build));
+    $actual_html = DeprecationHelper::backwardsCompatibleCall(
+      \Drupal::VERSION, '10.3.0',
+      fn () => $renderer->renderInIsolation($build),
+      fn () => $renderer->renderPlain($build),
+    );
+    $actual_markup = preg_replace('#\s{2,}#', '', $actual_html);
     self::assertSame($expected_markup, $actual_markup);
   }
 
diff --git a/web/modules/twig_tweak/tests/src/Kernel/RegionViewBuilderTest.php b/web/modules/twig_tweak/tests/src/Kernel/RegionViewBuilderTest.php
index 40a1eb828c48ed5d2baaeb7ae277242b4866ed98..477b2969484c76cd2713cafa6fb903f1859543d7 100644
--- a/web/modules/twig_tweak/tests/src/Kernel/RegionViewBuilderTest.php
+++ b/web/modules/twig_tweak/tests/src/Kernel/RegionViewBuilderTest.php
@@ -3,6 +3,7 @@
 namespace Drupal\Tests\twig_tweak\Kernel;
 
 use Drupal\block\Entity\Block;
+use Drupal\Component\Utility\DeprecationHelper;
 use Drupal\Component\Utility\Html;
 use Drupal\Core\Cache\Cache;
 use Drupal\Tests\user\Traits\UserCreationTrait;
@@ -58,6 +59,7 @@ public function setUp(): void {
   public function testRegionViewBuilder(): void {
 
     $view_builder = $this->container->get('twig_tweak.region_view_builder');
+    /** @var \Drupal\Core\Render\RendererInterface $renderer */
     $renderer = $this->container->get('renderer');
 
     $build = $view_builder->build('sidebar_first');
@@ -126,7 +128,11 @@ public function testRegionViewBuilder(): void {
         </div>
       </div>
     HTML;
-    $actual_html = $renderer->renderPlain($build);
+    $actual_html = DeprecationHelper::backwardsCompatibleCall(
+      \Drupal::VERSION, '10.3.0',
+      fn () => $renderer->renderInIsolation($build),
+      fn () => $renderer->renderPlain($build),
+    );
     self::assertSame(self::normalizeHtml($expected_html), self::normalizeHtml($actual_html));
 
     // Set 'stark' as default site theme and check if the view builder without
@@ -140,7 +146,11 @@ public function testRegionViewBuilder(): void {
     self::assertRenderArray($expected_build, $build);
 
     Html::resetSeenIds();
-    $actual_html = $renderer->renderPlain($expected_build);
+    $actual_html = DeprecationHelper::backwardsCompatibleCall(
+      \Drupal::VERSION, '10.3.0',
+      fn () => $renderer->renderInIsolation($build),
+      fn () => $renderer->renderPlain($expected_build),
+    );
     self::assertSame(self::normalizeHtml($expected_html), self::normalizeHtml($actual_html));
   }
 
diff --git a/web/modules/twig_tweak/tests/twig_tweak_test/config/install/node.type.page.yml b/web/modules/twig_tweak/tests/twig_tweak_test/config/install/node.type.page.yml
index a6ddd46c488d3f5f5ea25ab3500389b7c397ab75..57dcc0c9926f11a617ca22ba0e3073b426d20d66 100644
--- a/web/modules/twig_tweak/tests/twig_tweak_test/config/install/node.type.page.yml
+++ b/web/modules/twig_tweak/tests/twig_tweak_test/config/install/node.type.page.yml
@@ -1,8 +1,6 @@
 langcode: en
 status: true
 dependencies: {  }
-_core:
-  default_config_hash: KuyA4NHPXcmKAjRtwa0vQc2ZcyrUJy6IlS2TAyMNRbc
 name: 'Basic page'
 type: page
 description: 'Use <em>basic pages</em> for your static content, such as an ''About us'' page.'
diff --git a/web/modules/twig_tweak/tests/twig_tweak_test/config/install/views.view.twig_tweak_test.yml b/web/modules/twig_tweak/tests/twig_tweak_test/config/install/views.view.twig_tweak_test.yml
index 0b1a552931fbce674cbf5273b284e88bac3daec8..bba2a980a919d4ae3f04fa1f79588541f36d58b2 100644
--- a/web/modules/twig_tweak/tests/twig_tweak_test/config/install/views.view.twig_tweak_test.yml
+++ b/web/modules/twig_tweak/tests/twig_tweak_test/config/install/views.view.twig_tweak_test.yml
@@ -1,3 +1,4 @@
+uuid: cd35651d-f143-4c91-b13a-a1f7b2efe67f
 langcode: en
 status: true
 dependencies:
@@ -13,75 +14,34 @@ base_table: node_field_data
 base_field: nid
 display:
   default:
-    display_plugin: default
     id: default
     display_title: Master
+    display_plugin: default
     position: 0
     display_options:
-      access:
-        type: perm
-        options:
-          perm: 'access content'
-      cache:
-        type: tag
-        options: {  }
-      query:
-        type: views_query
-        options:
-          disable_sql_rewrite: false
-          distinct: false
-          replica: false
-          query_comment: ''
-          query_tags: {  }
-      exposed_form:
-        type: basic
-        options:
-          submit_button: Apply
-          reset_button: false
-          reset_button_label: Reset
-          exposed_sorts_label: 'Sort by'
-          expose_sort_order: true
-          sort_asc_label: Asc
-          sort_desc_label: Desc
-      pager:
-        type: none
-        options:
-          offset: 0
-      style:
-        type: html_list
-      row:
-        type: fields
-        options:
-          default_field_elements: true
-          inline: {  }
-          separator: ''
-          hide_empty: false
+      title: 'Twig tweak test'
       fields:
         title:
           id: title
           table: node_field_data
           field: title
+          relationship: none
+          group_type: group
+          admin_label: ''
           entity_type: node
           entity_field: title
+          plugin_id: field
           label: ''
+          exclude: false
           alter:
             alter_text: false
             make_link: false
             absolute: false
-            trim: false
             word_boundary: false
             ellipsis: false
             strip_tags: false
+            trim: false
             html: false
-          hide_empty: false
-          empty_zero: false
-          settings:
-            link_to_entity: true
-          plugin_id: field
-          relationship: none
-          group_type: group
-          admin_label: ''
-          exclude: false
           element_type: ''
           element_class: ''
           element_label_type: ''
@@ -91,9 +51,13 @@ display:
           element_wrapper_class: ''
           element_default_classes: true
           empty: ''
+          hide_empty: false
+          empty_zero: false
           hide_alter_empty: true
           click_sort_column: value
           type: string
+          settings:
+            link_to_entity: true
           group_column: value
           group_columns: {  }
           group_rows: true
@@ -104,7 +68,28 @@ display:
           multi_type: separator
           separator: ', '
           field_api_classes: false
-      filters: {  }
+      pager:
+        type: none
+        options:
+          offset: 0
+      exposed_form:
+        type: basic
+        options:
+          submit_button: Apply
+          reset_button: false
+          reset_button_label: Reset
+          exposed_sorts_label: 'Sort by'
+          expose_sort_order: true
+          sort_asc_label: Asc
+          sort_desc_label: Desc
+      access:
+        type: perm
+        options:
+          perm: 'access content'
+      cache:
+        type: tag
+        options: {  }
+      empty: {  }
       sorts:
         nid:
           id: nid
@@ -113,18 +98,13 @@ display:
           relationship: none
           group_type: group
           admin_label: ''
-          order: ASC
-          exposed: false
-          expose:
-            label: ''
           entity_type: node
           entity_field: nid
           plugin_id: standard
-      title: 'Twig tweak test'
-      header: {  }
-      footer: {  }
-      empty: {  }
-      relationships: {  }
+          order: ASC
+          expose:
+            label: ''
+          exposed: false
       arguments:
         nid:
           id: nid
@@ -133,6 +113,9 @@ display:
           relationship: none
           group_type: group
           admin_label: ''
+          entity_type: node
+          entity_field: nid
+          plugin_id: node_nid
           default_action: ignore
           exception:
             value: all
@@ -143,12 +126,11 @@ display:
           default_argument_type: fixed
           default_argument_options:
             argument: ''
-          default_argument_skip_url: false
           summary_options:
             base_path: ''
             count: true
-            items_per_page: 25
             override: false
+            items_per_page: 25
           summary:
             sort_order: asc
             number_of_records: 0
@@ -160,9 +142,27 @@ display:
           validate_options: {  }
           break_phrase: false
           not: false
-          entity_type: node
-          entity_field: nid
-          plugin_id: node_nid
+      filters: {  }
+      style:
+        type: html_list
+      row:
+        type: fields
+        options:
+          default_field_elements: true
+          inline: {  }
+          separator: ''
+          hide_empty: false
+      query:
+        type: views_query
+        options:
+          query_comment: ''
+          disable_sql_rewrite: false
+          distinct: false
+          replica: false
+          query_tags: {  }
+      relationships: {  }
+      header: {  }
+      footer: {  }
       display_extenders: {  }
     cache_metadata:
       max-age: -1
@@ -174,9 +174,9 @@ display:
         - user.permissions
       tags: {  }
   page_1:
-    display_plugin: page
     id: page_1
     display_title: Page
+    display_plugin: page
     position: 1
     display_options:
       display_extenders: {  }
diff --git a/web/modules/twig_tweak/tests/twig_tweak_test/templates/twig-tweak-test.html.twig b/web/modules/twig_tweak/tests/twig_tweak_test/templates/twig-tweak-test.html.twig
index 09ae148351bc7de4cc85fadc120d177d0cf9d859..57d3fec50096e40c02209b344e1e1d26fc4acd31 100644
--- a/web/modules/twig_tweak/tests/twig_tweak_test/templates/twig-tweak-test.html.twig
+++ b/web/modules/twig_tweak/tests/twig_tweak_test/templates/twig-tweak-test.html.twig
@@ -1,3 +1,4 @@
+{# @cspell:ignore doremi #}
 {% set image_attributes = {style: 'width: 30px; height 30px;'} %}
 <style>
   main {
diff --git a/web/modules/twig_tweak/tests/twig_tweak_test/twig_tweak_test.info.yml b/web/modules/twig_tweak/tests/twig_tweak_test/twig_tweak_test.info.yml
index d6c1c2ba89f81d4107fa1d83735f8930f9e8492c..755899c4fe872e6c80c1f68ba65558412ac448fc 100644
--- a/web/modules/twig_tweak/tests/twig_tweak_test/twig_tweak_test.info.yml
+++ b/web/modules/twig_tweak/tests/twig_tweak_test/twig_tweak_test.info.yml
@@ -2,16 +2,16 @@ name: Twig tweak test
 type: module
 description: Support module for Twig tweak testing.
 package: Testing
-core_version_requirement: ^9 || ^10
+core_version_requirement: ^10 || ^11
 dependencies:
-  - drupal:system (>= 9.0)
+  - drupal:system (>=10.3)
   - drupal:block
   - drupal:media
   - drupal:node
   - drupal:path
   - drupal:twig_tweak
 
-# Information added by Drupal.org packaging script on 2024-02-23
-version: '3.3.0'
+# Information added by Drupal.org packaging script on 2024-07-21
+version: '3.4.0'
 project: 'twig_tweak'
-datestamp: 1708670118
+datestamp: 1721562309
diff --git a/web/modules/twig_tweak/twig_tweak.info.yml b/web/modules/twig_tweak/twig_tweak.info.yml
index 3f7eefc9a1747843031f476a7cc3062f0aa449e7..7f08ee8b62ec5b7878a9cc4cbe7f2a42c8e9bab7 100644
--- a/web/modules/twig_tweak/twig_tweak.info.yml
+++ b/web/modules/twig_tweak/twig_tweak.info.yml
@@ -1,11 +1,11 @@
 name: Twig Tweak
 type: module
 description: Provides some extra Twig functions and filters.
-core_version_requirement: ^9 || ^10
+core_version_requirement: ^10 || ^11
 dependencies:
-  - drupal:system (>=9.0)
+  - drupal:system (>=10.3)
 
-# Information added by Drupal.org packaging script on 2024-02-23
-version: '3.3.0'
+# Information added by Drupal.org packaging script on 2024-07-21
+version: '3.4.0'
 project: 'twig_tweak'
-datestamp: 1708670118
+datestamp: 1721562309