diff --git a/modules/project_browser_devel/src/Plugin/ProjectBrowserSource/RandomDataPlugin.php b/modules/project_browser_devel/src/Plugin/ProjectBrowserSource/RandomDataPlugin.php
index 747235227fd78094fb37a0d375f97f2bcafa370d..7b4a9cc65add3fd579482ae48dc33bcc9219a3d7 100644
--- a/modules/project_browser_devel/src/Plugin/ProjectBrowserSource/RandomDataPlugin.php
+++ b/modules/project_browser_devel/src/Plugin/ProjectBrowserSource/RandomDataPlugin.php
@@ -163,17 +163,17 @@ final class RandomDataPlugin extends ProjectBrowserSourceBase {
 
     // Filter by project machine name.
     if (!empty($query['machine_name'])) {
-      $projects = array_filter($projects, fn(Project $project) => $project->machineName === $query['machine_name']);
+      $projects = array_filter($projects, fn(Project $project): bool => $project->machineName === $query['machine_name']);
     }
 
     // Filter by categories.
     if (!empty($query['categories'])) {
-      $projects = array_filter($projects, fn(Project $project) => empty(array_intersect(array_column($project->categories, 'id'), explode(',', $query['categories']))));
+      $projects = array_filter($projects, fn(Project $project): bool => empty(array_intersect(array_column($project->categories, 'id'), explode(',', $query['categories']))));
     }
 
     // Filter by search text.
     if (!empty($query['search'])) {
-      $projects = array_filter($projects, fn(Project $project) => stripos($project->title, $query['search']) !== FALSE);
+      $projects = array_filter($projects, fn(Project $project): bool => stripos($project->title, $query['search']) !== FALSE);
     }
 
     return $this->createResultsPage($projects);
diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php
index dfce29d5854fe8bb7d1a9de6f9d470a3d58313de..3429dbd4b629f6723b61ab008c5d3d259709f9eb 100644
--- a/src/Form/SettingsForm.php
+++ b/src/Form/SettingsForm.php
@@ -219,7 +219,7 @@ final class SettingsForm extends ConfigFormBase {
   public function submitForm(array &$form, FormStateInterface $form_state): void {
     $settings = $this->config('project_browser.admin_settings');
     $all_plugins = $form_state->getValue('enabled_sources');
-    $enabled_plugins = array_filter($all_plugins, fn($source) => $source['status'] === 'enabled');
+    $enabled_plugins = array_filter($all_plugins, fn($source): bool => $source['status'] === 'enabled');
     $settings
       ->set('enabled_sources', array_keys($enabled_plugins))
       ->set('allow_ui_install', $form_state->getValue('allow_ui_install'))
diff --git a/src/Plugin/ProjectBrowserSource/DrupalCore.php b/src/Plugin/ProjectBrowserSource/DrupalCore.php
index 2129ede94e950ed4c928e6e54522c9a9abb6a1bb..f8a48728608221ec90463cb15ff7377ae8780535 100644
--- a/src/Plugin/ProjectBrowserSource/DrupalCore.php
+++ b/src/Plugin/ProjectBrowserSource/DrupalCore.php
@@ -92,10 +92,10 @@ final class DrupalCore extends ProjectBrowserSourceBase {
    *   The array containing core modules, keyed by module machine name.
    */
   protected function getCoreModules() {
-    $projects = array_filter($this->moduleExtensionList->reset()->getList(), fn(Extension $project) => $project->origin === 'core');
+    $projects = array_filter($this->moduleExtensionList->reset()->getList(), fn(Extension $project): bool => $project->origin === 'core');
     $include_tests = Settings::get('extension_discovery_scan_tests') || drupal_valid_test_ua();
     if (!$include_tests) {
-      $projects = array_filter($projects, fn(Extension $project) => empty($project->info['hidden']) && $project->info['package'] !== 'Testing');
+      $projects = array_filter($projects, fn(Extension $project): bool => empty($project->info['hidden']) && $project->info['package'] !== 'Testing');
     }
     return $projects;
   }
@@ -123,22 +123,22 @@ final class DrupalCore extends ProjectBrowserSourceBase {
 
     // Filter by project machine name.
     if (!empty($query['machine_name'])) {
-      $projects = array_filter($projects, fn(Project $project) => $project->machineName === $query['machine_name']);
+      $projects = array_filter($projects, fn(Project $project): bool => $project->machineName === $query['machine_name']);
     }
 
     // Filter by coverage.
     if (!empty($query['security_advisory_coverage'])) {
-      $projects = array_filter($projects, fn(Project $project) => $project->isCovered ?? FALSE);
+      $projects = array_filter($projects, fn(Project $project): bool => $project->isCovered ?? FALSE);
     }
 
     // Filter by categories.
     if (!empty($query['categories'])) {
-      $projects = array_filter($projects, fn(Project $project) => empty(array_intersect(array_column($project->categories, 'id'), explode(',', $query['categories']))));
+      $projects = array_filter($projects, fn(Project $project): bool => empty(array_intersect(array_column($project->categories, 'id'), explode(',', $query['categories']))));
     }
 
     // Filter by search text.
     if (!empty($query['search'])) {
-      $projects = array_filter($projects, fn(Project $project) => stripos($project->title, $query['search']) !== FALSE);
+      $projects = array_filter($projects, fn(Project $project): bool => stripos($project->title, $query['search']) !== FALSE);
     }
 
     // Filter by sorting criterion.
diff --git a/src/Plugin/ProjectBrowserSource/Recipes.php b/src/Plugin/ProjectBrowserSource/Recipes.php
index 6b671641242309b7f3ac2b57de08500ace4eef81..a658c1ea0ce075ee5f88ede6da1475674f4c33d6 100644
--- a/src/Plugin/ProjectBrowserSource/Recipes.php
+++ b/src/Plugin/ProjectBrowserSource/Recipes.php
@@ -127,22 +127,22 @@ final class Recipes extends ProjectBrowserSourceBase {
 
     // Filter by project machine name.
     if (!empty($query['machine_name'])) {
-      $projects = array_filter($projects, fn(Project $project) => $project->machineName === $query['machine_name']);
+      $projects = array_filter($projects, fn(Project $project): bool => $project->machineName === $query['machine_name']);
     }
 
     // Filter by coverage.
     if (!empty($query['security_advisory_coverage'])) {
-      $projects = array_filter($projects, fn(Project $project) => $project->isCovered ?? FALSE);
+      $projects = array_filter($projects, fn(Project $project): bool => $project->isCovered ?? FALSE);
     }
 
     // Filter by categories.
     if (!empty($query['categories'])) {
-      $projects = array_filter($projects, fn(Project $project) => empty(array_intersect(array_column($project->categories, 'id'), explode(',', $query['categories']))));
+      $projects = array_filter($projects, fn(Project $project): bool => empty(array_intersect(array_column($project->categories, 'id'), explode(',', $query['categories']))));
     }
 
     // Filter by search text.
     if (!empty($query['search'])) {
-      $projects = array_filter($projects, fn(Project $project) => stripos($project->title, $query['search']) !== FALSE);
+      $projects = array_filter($projects, fn(Project $project): bool => stripos($project->title, $query['search']) !== FALSE);
     }
 
     $total = count($projects);
diff --git a/tests/modules/project_browser_test/src/Plugin/ProjectBrowserSource/ProjectBrowserTestMock.php b/tests/modules/project_browser_test/src/Plugin/ProjectBrowserSource/ProjectBrowserTestMock.php
index 6dbe6c8d67bb3282590960026062f0a8c873913d..248149b423a04414dba27787a99009352545e9b5 100644
--- a/tests/modules/project_browser_test/src/Plugin/ProjectBrowserSource/ProjectBrowserTestMock.php
+++ b/tests/modules/project_browser_test/src/Plugin/ProjectBrowserSource/ProjectBrowserTestMock.php
@@ -383,7 +383,7 @@ final class ProjectBrowserTestMock extends ProjectBrowserSourceBase {
           isCompatible: TRUE,
           isMaintained: in_array($project_data['maintenance_status'], self::MAINTAINED_VALUES),
           isCovered: in_array($project_data['field_security_advisory_coverage'], self::COVERED_VALUES),
-          projectUsageTotal: (int) array_reduce($project_data['project_data']['project_usage'] ?? [], fn($total, $project_usage) => $total + $project_usage) ?: 0,
+          projectUsageTotal: array_reduce($project_data['project_data']['project_usage'] ?? [], fn($total, $project_usage): int => $total + $project_usage) ?: 0,
           machineName: $project_data['field_project_machine_name'],
           body: $this->relativeToAbsoluteUrls($project_data['project_data']['body'], 'https://www.drupal.org'),
           title: $project_data['title'],
@@ -391,7 +391,7 @@ final class ProjectBrowserTestMock extends ProjectBrowserSourceBase {
           packageName: 'drupal/' . $project_data['field_project_machine_name'],
           url: Url::fromUri('https://www.drupal.org/project/' . $project_data['field_project_machine_name']),
           // Add name property to each category, so it can be rendered.
-          categories: array_map(fn($category) => $categories[$category['id']] ?? '', $project_data['project_data']['taxonomy_vocabulary_3'] ?? []),
+          categories: array_map(fn($category): array => $categories[$category['id']] ?? [], $project_data['project_data']['taxonomy_vocabulary_3'] ?? []),
           images: $project_data['project_data']['field_project_images'] ?? [],
           warnings: $this->getWarnings($project_data),
           id: $project_data['field_project_machine_name'],
diff --git a/tests/src/Kernel/CoreExperimentalLabelTest.php b/tests/src/Kernel/CoreExperimentalLabelTest.php
index 05725211e0b743a6d46f8edcefc9c8a496dbe15c..17c787316367deb9f0ca5c49fa40c9a0edf40eba 100644
--- a/tests/src/Kernel/CoreExperimentalLabelTest.php
+++ b/tests/src/Kernel/CoreExperimentalLabelTest.php
@@ -38,7 +38,7 @@ class CoreExperimentalLabelTest extends KernelTestBase {
     $plugin_instance = $this->container->get(ProjectBrowserSourceManager::class)
       ->createInstance('drupal_core');
     $modules_to_test = ['Experimental Test', 'System'];
-    $filtered_projects = array_filter($plugin_instance->getProjects()->list, fn(Project $value) => in_array($value->title, $modules_to_test));
+    $filtered_projects = array_filter($plugin_instance->getProjects()->list, fn(Project $value): bool => in_array($value->title, $modules_to_test));
     $this->assertCount(2, $filtered_projects);
     foreach ($filtered_projects as $project) {
       if ($project->title === 'System') {