diff --git a/.changeset/legal-moments-laugh.md b/.changeset/legal-moments-laugh.md
new file mode 100644
index 000000000..14562a628
--- /dev/null
+++ b/.changeset/legal-moments-laugh.md
@@ -0,0 +1,5 @@
+---
+"@evolu/vue": minor
+---
+
+Introduces a Vue integration for Evolu
diff --git a/apps/web/src/app/(docs)/docs/examples/page.mdx b/apps/web/src/app/(docs)/docs/examples/page.mdx
index 7bad4787e..14bb3677e 100644
--- a/apps/web/src/app/(docs)/docs/examples/page.mdx
+++ b/apps/web/src/app/(docs)/docs/examples/page.mdx
@@ -1,5 +1,6 @@
import { ReactExamples } from "@/components/ReactExamples";
import { SvelteExamples } from "@/components/SvelteExamples";
+import { VueExamples } from "@/components/VueExamples";
export const metadata = {
title: "Evolu Examples",
@@ -17,3 +18,7 @@ You can find examples of how to use the Evolu with frameworks below.
## Svelte
+
+## Vue
+
+
diff --git a/apps/web/src/components/VueExamples.tsx b/apps/web/src/components/VueExamples.tsx
new file mode 100644
index 000000000..94ea3d1cb
--- /dev/null
+++ b/apps/web/src/components/VueExamples.tsx
@@ -0,0 +1,40 @@
+import { Button } from "@/components/Button";
+import ViteLogo from "@/components/icons/frameworks/Vite";
+
+const examples = [
+ {
+ repo: "https://github.com/evoluhq/evolu/tree/main/examples/vue-vite-pwa",
+ name: "Vite + Vue + PWA",
+ description: "Offline support, installable on mobile.",
+ logo: ViteLogo,
+ },
+];
+
+export function VueExamples(): React.ReactElement {
+ return (
+
+
+ {examples.map((example) => (
+
+
+
+ {example.name}
+
+
+ {example.description}
+
+
+ {example.repo && (
+
+ )}
+
+
+
+
+ ))}
+
+
+ );
+}
diff --git a/examples/vue-vite-pwa/.gitignore b/examples/vue-vite-pwa/.gitignore
new file mode 100644
index 000000000..6d6ae5aca
--- /dev/null
+++ b/examples/vue-vite-pwa/.gitignore
@@ -0,0 +1,25 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+dev-dist
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/examples/vue-vite-pwa/.vscode/extensions.json b/examples/vue-vite-pwa/.vscode/extensions.json
new file mode 100644
index 000000000..a7cea0b06
--- /dev/null
+++ b/examples/vue-vite-pwa/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["Vue.volar"]
+}
diff --git a/examples/vue-vite-pwa/README.md b/examples/vue-vite-pwa/README.md
new file mode 100644
index 000000000..33895ab20
--- /dev/null
+++ b/examples/vue-vite-pwa/README.md
@@ -0,0 +1,5 @@
+# Vue 3 + TypeScript + Vite
+
+This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `
+