diff --git a/extensions/vertx-graphql/deployment/src/main/java/io/quarkus/vertx/graphql/deployment/VertxGraphqlProcessor.java b/extensions/vertx-graphql/deployment/src/main/java/io/quarkus/vertx/graphql/deployment/VertxGraphqlProcessor.java
index 894c352ef7b33..4a33ea01ca16f 100644
--- a/extensions/vertx-graphql/deployment/src/main/java/io/quarkus/vertx/graphql/deployment/VertxGraphqlProcessor.java
+++ b/extensions/vertx-graphql/deployment/src/main/java/io/quarkus/vertx/graphql/deployment/VertxGraphqlProcessor.java
@@ -14,6 +14,7 @@
 import io.quarkus.deployment.builditem.LaunchModeBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.*;
 import io.quarkus.runtime.configuration.ConfigurationException;
+import io.quarkus.vertx.core.deployment.CoreVertxBuildItem;
 import io.quarkus.vertx.graphql.runtime.VertxGraphqlRecorder;
 import io.quarkus.vertx.http.deployment.BodyHandlerBuildItem;
 import io.quarkus.vertx.http.deployment.NonApplicationRootPathBuildItem;
@@ -57,17 +58,24 @@ void registerI18nResources(BuildProducer<NativeImageResourceBundleBuildItem> res
         resourceBundle.produce(new NativeImageResourceBundleBuildItem("i18n/Validation"));
     }
 
+    @BuildStep
+    NativeImageResourceDirectoryBuildItem produceNativeResourceDirectory(LaunchModeBuildItem launchMode,
+            VertxGraphqlConfig config) {
+        if (doNotIncludeVertxGraphqlUi(launchMode, config)) {
+            return null;
+        }
+        return new NativeImageResourceDirectoryBuildItem("io/vertx/ext/web/handler/graphiql");
+    }
+
     @BuildStep
     @Record(ExecutionTime.RUNTIME_INIT)
-    void registerVertxGraphqlUI(VertxGraphqlRecorder recorder,
-            BuildProducer<NativeImageResourceDirectoryBuildItem> nativeResourcesProducer, VertxGraphqlConfig config,
-            LaunchModeBuildItem launchMode,
+    void registerVertxGraphqlUI(VertxGraphqlRecorder recorder, VertxGraphqlConfig config,
+            LaunchModeBuildItem launchMode, CoreVertxBuildItem coreVertxBuildItem,
             NonApplicationRootPathBuildItem nonApplicationRootPathBuildItem,
             BuildProducer<RouteBuildItem> routes,
             BodyHandlerBuildItem bodyHandler) {
 
-        boolean includeVertxGraphqlUi = launchMode.getLaunchMode().isDevOrTest() || config.ui.alwaysInclude;
-        if (!includeVertxGraphqlUi) {
+        if (doNotIncludeVertxGraphqlUi(launchMode, config)) {
             return;
         }
 
@@ -79,7 +87,7 @@ void registerVertxGraphqlUI(VertxGraphqlRecorder recorder,
                             + "\", this is not allowed as it blocks the application from serving anything else.");
         }
 
-        Handler<RoutingContext> handler = recorder.handler();
+        Handler<RoutingContext> handler = recorder.handler(coreVertxBuildItem.getVertx());
         routes.produce(nonApplicationRootPathBuildItem.routeBuilder()
                 .route(path)
                 .handler(handler)
@@ -90,7 +98,9 @@ void registerVertxGraphqlUI(VertxGraphqlRecorder recorder,
                         .routeFunction(path + "/*", recorder.routeFunction(bodyHandler.getHandler()))
                         .handler(handler)
                         .build());
+    }
 
-        nativeResourcesProducer.produce(new NativeImageResourceDirectoryBuildItem("io/vertx/ext/web/handler/graphiql"));
+    private static boolean doNotIncludeVertxGraphqlUi(LaunchModeBuildItem launchMode, VertxGraphqlConfig config) {
+        return !launchMode.getLaunchMode().isDevOrTest() && !config.ui.alwaysInclude;
     }
 }
diff --git a/extensions/vertx-graphql/runtime/src/main/java/io/quarkus/vertx/graphql/runtime/VertxGraphqlRecorder.java b/extensions/vertx-graphql/runtime/src/main/java/io/quarkus/vertx/graphql/runtime/VertxGraphqlRecorder.java
index 7ca208a914672..cf72b8c02df9b 100644
--- a/extensions/vertx-graphql/runtime/src/main/java/io/quarkus/vertx/graphql/runtime/VertxGraphqlRecorder.java
+++ b/extensions/vertx-graphql/runtime/src/main/java/io/quarkus/vertx/graphql/runtime/VertxGraphqlRecorder.java
@@ -1,9 +1,11 @@
 package io.quarkus.vertx.graphql.runtime;
 
 import java.util.function.Consumer;
+import java.util.function.Supplier;
 
 import io.quarkus.runtime.annotations.Recorder;
 import io.vertx.core.Handler;
+import io.vertx.core.Vertx;
 import io.vertx.core.http.HttpHeaders;
 import io.vertx.ext.web.Route;
 import io.vertx.ext.web.RoutingContext;
@@ -12,12 +14,12 @@
 
 @Recorder
 public class VertxGraphqlRecorder {
-    public Handler<RoutingContext> handler() {
+    public Handler<RoutingContext> handler(Supplier<Vertx> vertx) {
 
         GraphiQLHandlerOptions options = new GraphiQLHandlerOptions();
         options.setEnabled(true);
 
-        Handler<RoutingContext> handler = GraphiQLHandler.create(options);
+        Handler<RoutingContext> handler = GraphiQLHandler.create(vertx.get(), options);
 
         return new Handler<RoutingContext>() {
             @Override