Skip to content

Commit f0729c0

Browse files
committed
feat: add /feed tombstone page explaining removal
1 parent c60e3ab commit f0729c0

File tree

1 file changed

+133
-0
lines changed

1 file changed

+133
-0
lines changed

src/routes/feed.tsx

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
import { createFileRoute, Link } from '@tanstack/react-router'
2+
import { Footer } from '~/components/Footer'
3+
import { Card } from '~/components/Card'
4+
import { seo } from '~/utils/seo'
5+
import { Rss, BookOpen, Github, Twitter } from 'lucide-react'
6+
7+
export const Route = createFileRoute('/feed')({
8+
component: RouteComp,
9+
head: () => ({
10+
meta: seo({
11+
title: 'TanStack Feed',
12+
description:
13+
'The TanStack release feed has been retired. Find release notes, announcements, and updates on GitHub and our blog.',
14+
}),
15+
}),
16+
})
17+
18+
const alternatives = [
19+
{
20+
title: 'Blog',
21+
icon: BookOpen,
22+
gradient: 'from-blue-500 to-cyan-500',
23+
borderColor: 'hover:border-blue-500/50',
24+
description:
25+
'In-depth posts on new releases, design decisions, and what we are building next.',
26+
href: '/blog',
27+
label: 'Read the blog',
28+
internal: true,
29+
},
30+
{
31+
title: 'GitHub Releases',
32+
icon: Github,
33+
gradient: 'from-gray-600 to-gray-800',
34+
borderColor: 'hover:border-gray-500/50',
35+
description:
36+
'Every library publishes detailed changelogs and release notes directly on GitHub.',
37+
href: 'https://github.com/TanStack',
38+
label: 'View on GitHub',
39+
internal: false,
40+
},
41+
{
42+
title: 'Twitter / X',
43+
icon: Twitter,
44+
gradient: 'from-sky-400 to-blue-500',
45+
borderColor: 'hover:border-sky-500/50',
46+
description:
47+
'Follow @tannerlinsley for announcements, early previews, and release highlights.',
48+
href: 'https://x.com/tannerlinsley',
49+
label: 'Follow on X',
50+
internal: false,
51+
},
52+
]
53+
54+
function RouteComp() {
55+
return (
56+
<div className="flex flex-col max-w-full min-h-screen gap-12 p-4 md:p-8 pb-0">
57+
<div className="flex-1 space-y-12 w-full max-w-3xl mx-auto">
58+
<header className="flex items-start gap-4">
59+
<div className="shrink-0 w-12 h-12 rounded-lg bg-gradient-to-br from-orange-400 to-rose-500 flex items-center justify-center">
60+
<Rss className="w-6 h-6 text-white" />
61+
</div>
62+
<div>
63+
<h1 className="text-3xl font-black">The Feed is Gone</h1>
64+
<p className="text-gray-500 dark:text-gray-400 mt-1">
65+
This feature has been retired.
66+
</p>
67+
</div>
68+
</header>
69+
70+
<Card as="section" className="p-6 md:p-8">
71+
<p className="text-lg leading-relaxed">
72+
The TanStack release feed was an experiment in aggregating GitHub
73+
releases and blog posts into a single stream. After running it for a
74+
while, it became clear the maintenance cost outweighed the value it
75+
added. The data was often stale, the sync logic was brittle, and the
76+
same content was already available in better, more canonical places.
77+
</p>
78+
<p className="text-lg leading-relaxed mt-4">
79+
Rather than keep a half-working feature alive, we removed it. The
80+
information you were looking for lives in the places listed below,
81+
where it is always up to date.
82+
</p>
83+
</Card>
84+
85+
<section className="space-y-4">
86+
<h2 className="text-xl font-bold">Where to find updates instead</h2>
87+
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
88+
{alternatives.map((alt) => {
89+
const Icon = alt.icon
90+
return (
91+
<Card
92+
key={alt.title}
93+
as="div"
94+
className={`p-5 flex flex-col gap-3 transition-colors ${alt.borderColor}`}
95+
>
96+
<div
97+
className={`w-10 h-10 rounded-lg bg-gradient-to-br ${alt.gradient} flex items-center justify-center`}
98+
>
99+
<Icon className="w-5 h-5 text-white" />
100+
</div>
101+
<div className="flex-1">
102+
<h3 className="font-bold mb-1">{alt.title}</h3>
103+
<p className="text-sm text-gray-600 dark:text-gray-400">
104+
{alt.description}
105+
</p>
106+
</div>
107+
{alt.internal ? (
108+
<Link
109+
to={alt.href as '/blog'}
110+
className="text-sm font-semibold text-blue-600 dark:text-blue-400 hover:underline"
111+
>
112+
{alt.label} &rarr;
113+
</Link>
114+
) : (
115+
<a
116+
href={alt.href}
117+
target="_blank"
118+
rel="noopener noreferrer"
119+
className="text-sm font-semibold text-blue-600 dark:text-blue-400 hover:underline"
120+
>
121+
{alt.label} &rarr;
122+
</a>
123+
)}
124+
</Card>
125+
)
126+
})}
127+
</div>
128+
</section>
129+
</div>
130+
<Footer />
131+
</div>
132+
)
133+
}

0 commit comments

Comments
 (0)