diff --git a/src/wp-settings.php b/src/wp-settings.php
index 2772568dee..b080069cfb 100644
--- a/src/wp-settings.php
+++ b/src/wp-settings.php
@@ -389,6 +389,11 @@ require ABSPATH . WPINC . '/interactivity-api/class-wp-interactivity-api.php';
 require ABSPATH . WPINC . '/interactivity-api/class-wp-interactivity-api-directives-processor.php';
 require ABSPATH . WPINC . '/interactivity-api/interactivity-api.php';
 
+// Register the default theme directory root.
+// This has to happen before wp_script_modules is registered
+// because wp_script_modules needs to know if the current theme is a block theme.
+register_theme_directory( get_theme_root() );
+
 wp_script_modules()->add_hooks();
 wp_interactivity()->add_hooks();
 
@@ -490,9 +495,6 @@ create_initial_post_types();
 
 wp_start_scraping_edited_file_errors();
 
-// Register the default theme directory root.
-register_theme_directory( get_theme_root() );
-
 if ( ! is_multisite() && wp_is_fatal_error_handler_enabled() ) {
 	// Handle users requesting a recovery mode link and initiating recovery mode.
 	wp_recovery_mode()->initialize();
