diff --git a/plugins/devkit/intellij.devkit.compose/resources/intellij.devkit.compose.xml b/plugins/devkit/intellij.devkit.compose/resources/intellij.devkit.compose.xml
index a1d42ed6d53a..2e7752371c4e 100644
--- a/plugins/devkit/intellij.devkit.compose/resources/intellij.devkit.compose.xml
+++ b/plugins/devkit/intellij.devkit.compose/resources/intellij.devkit.compose.xml
@@ -38,6 +38,7 @@
factoryClass="com.intellij.devkit.compose.preview.ComposePreviewToolWindowFactory"
icon="org.jetbrains.idea.devkit.DevKitIcons.ComposeToolWindow"
librarySearchClass="com.intellij.devkit.compose.preview.ComposePreviewSearcher"/>
+
diff --git a/plugins/devkit/intellij.devkit.compose/src/preview/ComposableFunctionFinder.kt b/plugins/devkit/intellij.devkit.compose/src/preview/ComposableFunctionFinder.kt
index 6cb22a823934..6b24e01c060d 100644
--- a/plugins/devkit/intellij.devkit.compose/src/preview/ComposableFunctionFinder.kt
+++ b/plugins/devkit/intellij.devkit.compose/src/preview/ComposableFunctionFinder.kt
@@ -8,8 +8,8 @@ import java.lang.reflect.Modifier
private val logger = Logger.getInstance(ComposableFunctionFinder::class.java)
-internal val PREVIEW_ANNOTATIONS = setOf(
- "androidx.compose.desktop.ui.tooling.preview.Preview",
+internal val PREVIEW_ANNOTATIONS: Set = setOf(
+ "org.jetbrains.compose.ui.tooling.preview.Preview",
"androidx.compose.ui.tooling.preview.Preview", // Android fallback
)
diff --git a/plugins/devkit/intellij.devkit.compose/src/preview/ComposePreviewImplicitUsageProvider.kt b/plugins/devkit/intellij.devkit.compose/src/preview/ComposePreviewImplicitUsageProvider.kt
new file mode 100644
index 000000000000..4e6c938f62e1
--- /dev/null
+++ b/plugins/devkit/intellij.devkit.compose/src/preview/ComposePreviewImplicitUsageProvider.kt
@@ -0,0 +1,25 @@
+// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package com.intellij.devkit.compose.preview
+
+import com.intellij.codeInsight.AnnotationUtil
+import com.intellij.codeInsight.daemon.ImplicitUsageProvider
+import com.intellij.openapi.module.ModuleUtilCore
+import com.intellij.psi.PsiElement
+import com.intellij.psi.PsiMethod
+import org.jetbrains.idea.devkit.util.PsiUtil
+
+/**
+ * @Preview methods are useful for UI previews in IDE even when unused in production, suppress unused symbol inspection for them.
+ */
+internal class ComposePreviewImplicitUsageProvider : ImplicitUsageProvider {
+ override fun isImplicitRead(element: PsiElement): Boolean = false
+ override fun isImplicitWrite(element: PsiElement): Boolean = false
+
+ override fun isImplicitUsage(element: PsiElement): Boolean {
+ if (element !is PsiMethod) return false
+ val module = ModuleUtilCore.findModuleForPsiElement(element) ?: return false
+
+ return PsiUtil.isPluginModule(module)
+ && AnnotationUtil.isAnnotated(element, PREVIEW_ANNOTATIONS, 0)
+ }
+}