diff --git a/src/Kernel.php b/src/Kernel.php
index 75e48cc73e6175972d465d4d5083d683dc196f62..0416c854d192d5f989dc6b6526334cd03c6538d2 100644
--- a/src/Kernel.php
+++ b/src/Kernel.php
@@ -92,10 +92,10 @@ final class Kernel {
 		return preg_replace( '/[^\w_]/', '_', implode("_", [ $plugin->get_slug(), $plugin->get_version(), 'container' ]) );
 	}
 
-	private function initialize_container( Plugin $plugin ): Container {
+	private function initialize_container( Plugin $plugin, bool $useCache = true ): Container {
 		$original_builder = new DiBuilder();
 
-		if ( $this->config->get( 'debug', false ) === false ) {
+		if ( $this->is_prod() && $useCache ) {
 			$original_builder->enableCompilation(
 				$this->get_cache_path(),
 				$this->get_container_name( $plugin )
@@ -112,7 +112,11 @@ final class Kernel {
 			$extension->build( $builder, $plugin, $this->config );
 		}
 
-		return $builder->build();
+		try {
+			return $builder->build();
+		} catch ( \Exception $e ) {
+			return $this->initialize_container( $plugin, false );
+		}
 	}
 
 	private function prepare_driver( ContainerInterface $container ): HookDriver {
@@ -125,7 +129,7 @@ final class Kernel {
 			new ClusteredLoader( $loader )
 		);
 
-		if ( $this->config->get( 'debug', false ) ) {
+		if ( $this->is_dev() ) {
 			$loader = new DebugBindingLoader( $loader );
 		}
 
@@ -146,4 +150,12 @@ final class Kernel {
 
 		return $driver;
 	}
+
+	private function is_dev(): bool {
+		return $this->config->get( 'debug', false ) || wp_get_environment_type() !== 'development';
+	}
+
+	private function is_prod(): bool {
+		return $this->is_dev() === false;
+	}
 }