diff --git a/apps/studio/components/interfaces/ProjectHome/ComputeUpgradeFloatingNotice.tsx b/apps/studio/components/interfaces/ProjectHome/ComputeUpgradeFloatingNotice.tsx
new file mode 100644
index 00000000000..dddbdd0a03b
--- /dev/null
+++ b/apps/studio/components/interfaces/ProjectHome/ComputeUpgradeFloatingNotice.tsx
@@ -0,0 +1,109 @@
+import { LOCAL_STORAGE_KEYS, useParams } from 'common'
+import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-query'
+import { AnimatePresence, motion } from 'framer-motion'
+import { useLocalStorageQuery } from 'hooks/misc/useLocalStorage'
+import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization'
+import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
+import { X, Zap } from 'lucide-react'
+import Link from 'next/link'
+import { useState } from 'react'
+import { Button } from 'ui'
+
+export const ComputeUpgradeFloatingNotice = () => {
+ const { ref } = useParams()
+ const { data: project } = useSelectedProjectQuery()
+ const { data: org } = useSelectedOrganizationQuery()
+ const { data: subscription } = useOrgSubscriptionQuery({ orgSlug: org?.slug })
+
+ const [isDismissed, setIsDismissed] = useLocalStorageQuery(
+ LOCAL_STORAGE_KEYS.MICRO_UPGRADE_BANNER_DISMISSED(ref ?? ''),
+ false
+ )
+ const [isHovered, setIsHovered] = useState(false)
+
+ const isProPlan = subscription?.plan.id === 'pro'
+ const isOnNano = project?.infra_compute_size === 'nano'
+
+ if (isDismissed || !isProPlan || !isOnNano) return null
+
+ return (
+ // Outer: positions above badge center + handles float animation
+
Free Micro compute upgrade available
++ Your Pro plan includes a free upgrade from Nano to Micro compute — double the memory at + no extra cost. +
+