diff --git a/src/Plugin/monitoring/SensorPlugin/CoreRequirementsSensorPlugin.php b/src/Plugin/monitoring/SensorPlugin/CoreRequirementsSensorPlugin.php
index 6aec2e6..30fd8bb 100644
--- a/src/Plugin/monitoring/SensorPlugin/CoreRequirementsSensorPlugin.php
+++ b/src/Plugin/monitoring/SensorPlugin/CoreRequirementsSensorPlugin.php
@@ -86,27 +86,34 @@ class CoreRequirementsSensorPlugin extends SensorPluginBase implements ExtendedI
       $row['severity'] = $severity;
 
       // Map column message with title and description.
-      $title = [];
+      $titles = [];
       if (isset($value['title'])) {
-        $title[] = $value['title'];
+        $titles[] = $value['title'];
       }
       if (isset($value['value'])) {
-        $title[] = $value['value'];
+        $titles[] = $value['value'];
       }
       $description = '';
       if (isset($value['description'])) {
         if (is_array($value['description'])) {
           // A few requirements such as cron attach a render array.
-          $description = \Drupal::service('renderer')
-            ->renderPlain($value['description']);
+          $description = \Drupal::service('renderer')->renderPlain($value['description']);
         }
         else {
           $description = $value['description'];
         }
       }
+
+      $titles = array_map(function ($title) {
+        if (is_array($title)) {
+          $title = \Drupal::service('renderer')->renderPlain($title);
+        }
+        return $title;
+      }, $titles);
+
       $message = array(
         '#type' => 'item',
-        '#title' => implode(' ', $title),
+        '#title' => implode(' ', $titles),
         '#markup' => $description,
       );
       $row['message'] = \Drupal::service('renderer')->renderPlain($message);
diff --git a/src/Result/SensorResult.php b/src/Result/SensorResult.php
index 84b31c4..ea49c58 100644
--- a/src/Result/SensorResult.php
+++ b/src/Result/SensorResult.php
@@ -256,9 +256,16 @@ class SensorResult implements SensorResultInterface {
         $messages[] = $threshold_message;
       }
 
+      $renderer = \Drupal::service('renderer');
+
       // Append all status messages which were added by the sensor.
       foreach ($this->statusMessages as $msg) {
-        $messages[] = SafeMarkup::format($msg['message'], array_merge($default_variables, $msg['variables']));
+        if (is_array($msg['message'])) {
+          $messages[] = SafeMarkup::format($renderer->renderPlain($msg['message']), array_merge($default_variables, $msg['variables']));
+        }
+        else {
+          $messages[] = SafeMarkup::format($msg['message'], array_merge($default_variables, $msg['variables']));
+        }
       }
 
       $message = strip_tags(implode(', ', $messages));
diff --git a/tests/src/Kernel/MonitoringCoreKernelTest.php b/tests/src/Kernel/MonitoringCoreKernelTest.php
index 4c6ab55..ec4b336 100644
--- a/tests/src/Kernel/MonitoringCoreKernelTest.php
+++ b/tests/src/Kernel/MonitoringCoreKernelTest.php
@@ -406,6 +406,26 @@ class MonitoringCoreKernelTest extends MonitoringUnitTestBase {
     $this->assertText('requirement that should be excluded from monitoring by the sensor');
     $this->assertText('requirement2');
     $this->assertText('requirement2 description');
+
+    // Add error state.
+    $requirements = [
+      'requirement4' => [
+        'title' => ['#markup' => 'requirement 4'],
+        'description' => ['#markup' => 'Description as a render array'],
+        'severity' => REQUIREMENT_WARNING,
+      ],
+    ];
+    \Drupal::state()->set('monitoring_test.requirements', $requirements);
+
+    // Check verbose message. Make sure that the render array is converted to
+    // a string.
+    $result = $this->runSensor('core_requirements_monitoring_test');
+    $this->assertTrue($result->isWarning());
+    $this->assertEquals('requirement 4, Description as a render array', $result->getMessage());
+    $verbose_output = $result->getVerboseOutput();
+    $this->setRawContent(\Drupal::service('renderer')->renderPlain($verbose_output));
+    $this->assertText('requirement 4');
+    $this->assertText('Description as a render array');
   }
 
   /**
