- {feedFaviconUrl && (
-

- )}
+
{feedName}
diff --git a/frontend/src/components/feed/feed-favicon.tsx b/frontend/src/components/feed/feed-favicon.tsx
new file mode 100644
index 0000000..8a95d7e
--- /dev/null
+++ b/frontend/src/components/feed/feed-favicon.tsx
@@ -0,0 +1,37 @@
+import { useEffect, useState } from "react";
+import { cn } from "@/lib/utils";
+
+interface FeedFaviconProps {
+ src?: string | null;
+ className?: string;
+}
+
+export function FeedFavicon({ src, className }: FeedFaviconProps) {
+ const [loadFailed, setLoadFailed] = useState(!src);
+
+ useEffect(() => {
+ setLoadFailed(!src);
+ }, [src]);
+
+ if (!src || loadFailed) {
+ return (
+
+ );
+ }
+
+ return (
+

setLoadFailed(true)}
+ />
+ );
+}
diff --git a/frontend/src/components/feed/feed-item.tsx b/frontend/src/components/feed/feed-item.tsx
index d6d7b88..c25c405 100644
--- a/frontend/src/components/feed/feed-item.tsx
+++ b/frontend/src/components/feed/feed-item.tsx
@@ -3,6 +3,7 @@ import { useUrlState } from "@/hooks/use-url-state";
import { useUIStore } from "@/store";
import { getFaviconUrl } from "@/lib/api/favicon";
import type { Feed } from "@/lib/api";
+import { FeedFavicon } from "@/components/feed/feed-favicon";
import { Settings } from "lucide-react";
import { Button } from "@/components/ui/button";
@@ -30,12 +31,7 @@ export function FeedItem({ feed }: FeedItemProps) {
isSelected ? "bg-accent text-accent-foreground" : "hover:bg-accent/50",
)}
>
-

+
{feed.name}
diff --git a/frontend/src/components/search/search-dialog.tsx b/frontend/src/components/search/search-dialog.tsx
index dfea450..66b3d8c 100644
--- a/frontend/src/components/search/search-dialog.tsx
+++ b/frontend/src/components/search/search-dialog.tsx
@@ -24,6 +24,7 @@ import { useUIStore } from "@/store";
import { useFeedLookup } from "@/queries/feeds";
import { useUrlState } from "@/hooks/use-url-state";
import { formatDate } from "@/lib/utils";
+import { FeedFavicon } from "@/components/feed/feed-favicon";
export function SearchDialog() {
const { isSearchOpen, setSearchOpen, setEditFeedOpen } = useUIStore();
@@ -142,11 +143,9 @@ export function SearchDialog() {
onSelect={() => handleSelectFeed(feed.id)}
className="group gap-2"
>
-
{feed.name}
@@ -317,7 +323,10 @@ function FeedsPage() {
const isEditing = editingGroupId === group.id;
return (
-