diff --git a/.changeset/late-waves-wonder.md b/.changeset/late-waves-wonder.md
new file mode 100644
index 000000000..82aa9d500
--- /dev/null
+++ b/.changeset/late-waves-wonder.md
@@ -0,0 +1,5 @@
+---
+'eslint-plugin-svelte': patch
+---
+
+fix(valid-compile): use compiler options if provided
diff --git a/packages/eslint-plugin-svelte/src/shared/svelte-compile-warns/index.ts b/packages/eslint-plugin-svelte/src/shared/svelte-compile-warns/index.ts
index c77e5ca62..032c627ae 100644
--- a/packages/eslint-plugin-svelte/src/shared/svelte-compile-warns/index.ts
+++ b/packages/eslint-plugin-svelte/src/shared/svelte-compile-warns/index.ts
@@ -407,6 +407,7 @@ function getWarningsFromCode(
} {
try {
const result = compiler.compile(code, {
+ ...context.sourceCode.parserServices.svelteParseContext?.svelteConfig?.compilerOptions,
generate: false,
...(isCustomElement(context.sourceCode.ast) ? { customElement: true } : {})
});
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-config.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-config.json
new file mode 100644
index 000000000..e41bbde2b
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-config.json
@@ -0,0 +1,11 @@
+{
+ "languageOptions": {
+ "parserOptions": {
+ "svelteConfig": {
+ "compilerOptions": {
+ "runes": true
+ }
+ }
+ }
+ }
+}
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-errors.yaml b/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-errors.yaml
new file mode 100644
index 000000000..2cc22ad96
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-errors.yaml
@@ -0,0 +1,8 @@
+- message: >-
+ `count` is updated, but is not declared with `$state(...)`. Changing its
+ value will not correctly trigger updates
+
+ https://svelte.dev/e/non_reactive_update(non_reactive_update)
+ line: 2
+ column: 6
+ suggestions: null
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-input.svelte b/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-input.svelte
new file mode 100644
index 000000000..231a6fdc8
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-input.svelte
@@ -0,0 +1,9 @@
+
+
+{count}
+
diff --git a/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-requirements.json b/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-requirements.json
new file mode 100644
index 000000000..498661308
--- /dev/null
+++ b/packages/eslint-plugin-svelte/tests/fixtures/rules/valid-compile/invalid/compiler-options-requirements.json
@@ -0,0 +1,3 @@
+{
+ "svelte": ">=5.0.0"
+}