diff --git a/packages/runtime-core/__tests__/hydration.spec.ts b/packages/runtime-core/__tests__/hydration.spec.ts
index 3f9feb4ea77..a12131454a6 100644
--- a/packages/runtime-core/__tests__/hydration.spec.ts
+++ b/packages/runtime-core/__tests__/hydration.spec.ts
@@ -626,6 +626,15 @@ describe('SSR hydration', () => {
expect(spy).toHaveBeenCalled()
})
+ test('elements with camel-case in svg ', () => {
+ const { vnode, container } = mountWithHydration(
+ '',
+ () => h('animateTransform')
+ )
+ expect(vnode.el).toBe(container.firstChild)
+ expect(`Hydration node mismatch`).not.toHaveBeenWarned()
+ })
+
test('SVG as a mount container', () => {
const svgContainer = document.createElement('svg')
svgContainer.innerHTML = ''
diff --git a/packages/runtime-core/src/hydration.ts b/packages/runtime-core/src/hydration.ts
index 8f30cadb290..0085ce6eea1 100644
--- a/packages/runtime-core/src/hydration.ts
+++ b/packages/runtime-core/src/hydration.ts
@@ -158,7 +158,8 @@ export function createHydrationFunctions(
if (shapeFlag & ShapeFlags.ELEMENT) {
if (
domType !== DOMNodeTypes.ELEMENT ||
- vnode.type !== (node as Element).tagName.toLowerCase()
+ (vnode.type as string).toLowerCase() !==
+ (node as Element).tagName.toLowerCase()
) {
nextNode = onMismatch()
} else {