diff --git a/packages/compiler-vapor/__tests__/transforms/transformElement.spec.ts b/packages/compiler-vapor/__tests__/transforms/transformElement.spec.ts
index 631beac52..5537dc274 100644
--- a/packages/compiler-vapor/__tests__/transforms/transformElement.spec.ts
+++ b/packages/compiler-vapor/__tests__/transforms/transformElement.spec.ts
@@ -6,6 +6,7 @@ import {
   transformElement,
   transformText,
   transformVBind,
+  transformVFor,
   transformVOn,
 } from '../../src'
 import {
@@ -15,7 +16,12 @@ import {
 } from '@vue/compiler-core'
 
 const compileWithElementTransform = makeCompile({
-  nodeTransforms: [transformElement, transformChildren, transformText],
+  nodeTransforms: [
+    transformVFor,
+    transformElement,
+    transformChildren,
+    transformText,
+  ],
   directiveTransforms: {
     bind: transformVBind,
     on: transformVOn,
@@ -185,6 +191,16 @@ describe('compiler: element transform', () => {
       expect(code).contains('_createComponent(_ctx.Comp, null, null, true)')
     })
 
+    test('generate root component with v-for', () => {
+      const { code } = compileWithElementTransform(
+        ``,
+        {
+          bindingMetadata: { Comp: BindingTypes.SETUP_CONST },
+        },
+      )
+      expect(code).contains('_createComponent(_ctx.Comp)')
+    })
+
     test('generate multi root component', () => {
       const { code } = compileWithElementTransform(`123`, {
         bindingMetadata: { Comp: BindingTypes.SETUP_CONST },
diff --git a/packages/compiler-vapor/src/transforms/transformElement.ts b/packages/compiler-vapor/src/transforms/transformElement.ts
index 51f0e427e..668e05906 100644
--- a/packages/compiler-vapor/src/transforms/transformElement.ts
+++ b/packages/compiler-vapor/src/transforms/transformElement.ts
@@ -75,6 +75,7 @@ export const transformElement: NodeTransform = (node, context) => {
     }
     const singleRoot =
       context.root === parent &&
+      !parent.ir.source.includes('v-for') &&
       parent.node.children.filter(child => child.type !== NodeTypes.COMMENT)
         .length === 1