Transcript

00:00:00Tan Stick Start erlebt derzeit einen gewissen Hype,
00:00:03und die Frage ist: Solltest du von Next.js wechseln?
00:00:06Ist es besser als Next.js?
00:00:08Gestern hatte ich einen kompletten Livestream,
00:00:11in dem ich die beiden verglichen und zwei Apps gebaut habe,
00:00:14bzw.
00:00:15eine App zweimal – einmal mit Next.js und einmal mit Tan Stick Start.
00:00:19Du kannst dir das gerne ansehen,
00:00:21aber hier gebe ich dir meine Kurzfassung: Was ist anders,
00:00:24was ist besser und welches solltest du verwenden?.
00:00:27Natürlich ist das nur meine Meinung,
00:00:29offensichtlich kein objektiver Vergleich,
00:00:32aber ich teile meine Erfahrungen mit beiden und was ich über Next.js und Tan Stick Start denke.
00:00:37Ich habe ein paar Dimensionen aufgestellt,
00:00:39anhand derer ich die beiden vergleichen möchte.
00:00:42Man könnte natürlich noch mehr hinzufügen und auch weitere Frameworks einbeziehen..
00:00:47Ich meine,
00:00:47wir könnten Remix einbeziehen,
00:00:49React Router,
00:00:50wir könnten Nuxt für Vue erwähnen,
00:00:51über SvelteKit sprechen – aber das werde ich nicht tun.
00:00:54Dieses Video handelt von Next.js und Tan Stick Start,
00:00:57nicht weil die anderen schlecht sind,
00:00:58sondern weil diese beiden oft miteinander verglichen werden..
00:01:01Zunächst ist es wichtig zu verstehen,
00:01:04dass Tan Stick Start im Grunde nur Tan Stick Router plus einige Server-Funktionen ist – hauptsächlich jedenfalls.
00:01:10Du kannst Tan Stick Router auch eigenständig verwenden,
00:01:13wenn du eine Single-Page-Anwendung erstellen möchtest,
00:01:16die kein serverseitiges Rendering und keine serverseitigen Funktionen benötigt.
00:01:19Du kannst Tan Stick Router anstelle von React Router in deiner React-Vite-App verwenden,
00:01:24zum Beispiel.
00:01:25Tan Stick Start fügt dann,
00:01:26wie erwähnt,
00:01:26serverseitige Funktionen zu Tan Stick Router hinzu und macht es damit zu einem vollständigen React-Full-Stack-Framework.
00:01:32Genau wie Next.js,
00:01:33das natürlich ebenfalls ein Full-Stack-React-Framework ist.
00:01:37Und das ist auch wichtig.
00:01:38Manchmal werde ich gefragt,
00:01:40ob man Next.js oder React Vite mit React Router verwenden sollte,
00:01:44und ich finde,
00:01:45das ist der falsche Vergleich.
00:01:47Wenn du keine serverseitige Logik brauchst,
00:01:49kein serverseitiges Rendering benötigst,
00:01:52dann solltest du einfach React Vite verwenden – also ein Vite-Projekt mit React – und React Router oder Tan Stick Router hinzufügen.
00:02:00In diesem Fall gibt es keinen Grund,
00:02:01den Next.js-Weg zu gehen.
00:02:02Wie auch immer, fangen wir mit dem Vergleich an.
00:02:05Die erste Dimension,
00:02:06die ich gewählt habe,
00:02:07ist die KI-Bereitschaft der beiden,
00:02:09denn das spielt heutzutage natürlich eine Rolle.
00:02:12Du nutzt sehr wahrscheinlich KI,
00:02:14um Code zu generieren – vielleicht sogar den gesamten Code für dein Next.js- oder Tan-Stick-Start-Projekt – und daher muss die KI natürlich wissen,
00:02:23wie man diesen Code schreibt.
00:02:25Selbstverständlich kannst und solltest du den passenden Kontext bereitstellen,
00:02:30indem du Dokumentationsseiten kopierst oder ein MCP wie Context 7 verwendest,
00:02:34damit die KI auf Dokumentationen zugreifen kann,
00:02:37oder indem du der KI sagst,
00:02:38dass sie eine Websuche durchführen soll,
00:02:40oder indem du Agent-Skills hinzufügst,
00:02:42die der KI beibringen,
00:02:44wie man Tan Stick Start oder Next.js verwendet.
00:02:47Aber von Haus aus,
00:02:48wenn du ChatGPT einfach eine Frage zu Tan Stick Start stellst,
00:02:52wird es sehr wahrscheinlich weniger darüber wissen als über Next.js – und was es weiß,
00:02:57ist wahrscheinlich falsch.
00:02:59Denn selbst jetzt,
00:03:00während ich das hier aufnehme,
00:03:02befindet sich Tan Stick Start noch in der Release-Candidate-Phase,
00:03:05was bedeutet: keine drastischen Breaking Changes mehr,
00:03:08aber auch noch nicht vollständig stabil.
00:03:10Im letzten Jahr befand es sich hauptsächlich in der Beta- und Alpha-Phase,
00:03:14und das ist das Wissen,
00:03:16das diese KI-Chatbots von Haus aus haben – weshalb sie standardmäßig falsches Wissen über Tan Stick Start besitzen.
00:03:23Die KI-Bereitschaft von Haus aus ist also nicht besonders gut – bei Next.js ist sie definitiv besser.
00:03:31Bei Next.js gab es natürlich auch Änderungen über die Jahre hinweg,
00:03:35es gibt die neue use-cache-Direktive,
00:03:37die die KI von Haus aus ebenfalls nicht so gut kennt,
00:03:40aber die KI hat ein ordentliches Verständnis vom App Router,
00:03:44von React Server Components und all diesen Dingen – es ist also definitiv besser für Next.js als für Tan Stick Start.
00:03:51Aber nochmal: Wie bereits erwähnt,
00:03:53solltest du sicherstellen,
00:03:55dass du der KI den passenden zusätzlichen Kontext gibst,
00:03:58den sie benötigt – andernfalls setzt du KI einfach falsch ein.
00:04:02Was ist mit dem Ökosystem?
00:04:03Und damit meine ich andere Ressourcen,
00:04:06die du finden kannst,
00:04:07wie Tutorials,
00:04:08YouTube-Videos,
00:04:09Kurse,
00:04:10vielleicht auch zusätzliche Pakete für diese Frameworks..
00:04:13Und hier sieht Next.js natürlich auch deutlich besser aus als Tan Stack Start,
00:04:19einfach weil es älter ist,
00:04:21schon länger existiert,
00:04:22und man mehr Ressourcen dazu findet,
00:04:25weil es auch größer ist.
00:04:27Es ist auch erwähnenswert,
00:04:28dass es größer ist,
00:04:30was mehr Nutzung bedeutet,
00:04:31weil Next.js Teil dieses Standard-Stacks ist,
00:04:34den die KI verwendet,
00:04:35wo sie dir im Grunde Next.js,
00:04:37React,
00:04:38Tailwind und TypeScript für die meisten Webanwendungen gibt,
00:04:41die du anforderst.
00:04:42Tan Stack Start wird wahrscheinlich nie ihre Standardwahl sein..
00:04:47Und daher ist es wenig überraschend,
00:04:49wenn man die Download-Charts der beiden vergleicht,
00:04:51ja,
00:04:52Tan Stack Start hat definitiv weniger Downloads,
00:04:55wie man sehen kann.
00:04:56Wenn man Next.js herausnimmt,
00:04:57sieht man allerdings einen schönen Aufwärtstrend für Tan Stack Start.
00:05:01Damit zusammenhängend ist natürlich der Punkt Ecosystem,
00:05:04aber nicht nur das – auch die Erlernbarkeit.
00:05:07Mit Erlernbarkeit meine ich,
00:05:09wie einfach ist es,
00:05:10die Sache zu lernen?
00:05:11Und ich weiß natürlich,
00:05:12dass du im Zeitalter der KI kein Interesse daran hast,
00:05:15es zu lernen,
00:05:15aber als guter Entwickler solltest du die Technologie verstehen,
00:05:18mit der du arbeitest.
00:05:19Du schreibst vielleicht nicht mehr den ganzen Code von Hand,
00:05:22aber du solltest den Code verstehen,
00:05:23den die KI für dich generiert.
00:05:25Daher ist das Lernen immer noch wichtig.
00:05:28Und hier würde ich sagen, bei Next.js ist es gemischt.
00:05:33Man könnte ihm – ich bin mir nicht sicher,
00:05:35ob ich ein oder zwei Plus geben würde – weil der Einstieg in Next.js mit dem App Router,
00:05:41und übrigens bezieht sich hier alles auf den App Router,
00:05:44ziemlich unkompliziert ist.
00:05:46Es macht Sinn.
00:05:47Gestern im Stream habe ich eine kleine Notiz-Anwendung gebaut,
00:05:51mit der man Notizen erstellen,
00:05:53speichern und anzeigen konnte.
00:05:56Und das macht man mit Next.js,
00:05:57indem man einfach ein paar page.tsx-Dateien definiert,
00:06:00die – du hast es erraten – deine Seiten sind.
00:06:03Man kann dynamische Segmente haben.
00:06:04Und diese Syntax und diesen Ansatz zum Aufbau deiner Anwendung zu lernen,
00:06:10ist am Ende ziemlich unkompliziert.
00:06:12Ich finde auch,
00:06:13dass die Dokumentation einen guten Job macht,
00:06:16dich Schritt für Schritt durch die Kernkonzepte zu führen und dir den Einstieg in Next.js zu erleichtern.
00:06:22Aber die Dinge werden komplexer,
00:06:24sobald man komplexere Anwendungen baut und sich in fortgeschrittenere Konzepte wie Caching vertieft.
00:06:30Und gerade der Caching-Teil kann extrem verwirrend sein,
00:06:33weil Next.js mit der Einführung des App Routers die Entscheidung getroffen hat,
00:06:38auf verschiedenen Ebenen sehr aggressives Caching zu betreiben.
00:06:42Das zu verstehen und zu verstehen,
00:06:44wie man seine Komponenten so konfiguriert,
00:06:47dass sie gut mit diesem eingebauten Caching funktionieren und den Nutzern das gewünschte Verhalten bieten,
00:06:54kann knifflig sein..
00:06:55Das sage ich mal so.
00:06:56Der Einstieg ist also großartig.
00:06:59Die fortgeschrittenen Features zu lernen ist schwierig.
00:07:02Ich gebe hier wahrscheinlich zwei Plus.
00:07:05Und Tan Stack Start gebe ich das Gleiche,
00:07:08aber aus ganz anderen Gründen.
00:07:09Bei Tan Stack Start würde ich sagen,
00:07:12dass der Einstieg vielleicht etwas schwieriger ist als bei Next.js,
00:07:16weil die Einstiegsdokumentation nicht so gut ist wie die von Next.js.
00:07:20Wichtige Konzepte fehlen hier,
00:07:23würde ich sagen,
00:07:24wie Data Fetching oder Mutations.
00:07:27Wenn man allerdings bereits Next.js-Kenntnisse hat,
00:07:29gibt es ein ziemlich gutes Vergleichsdokument,
00:07:31das die wichtigsten Features vergleicht,
00:07:33auch in Bezug auf Data Fetching und Mutations.
00:07:36Aber ich denke,
00:07:37es kann etwas schwieriger sein,
00:07:38weil die Dokumentation – obwohl sie,
00:07:40das muss ich sagen,
00:07:42deutlich verbessert wurde – immer noch ein bisschen dieses Brain-Dump-Gefühl hat,
00:07:46wo nicht ganz klar ist,
00:07:47welchen Artikel man braucht,
00:07:49und zum Beispiel gibt es hier keinen Artikel zu Data Fetching und solche Sachen.
00:07:54Außerdem muss man,
00:07:55da Tan Stack Start auf Tan Stack Router aufbaut,
00:07:58für alle Routing-bezogenen Dinge in die Tan Stack Router-Dokumentation gehen,
00:08:03die beim ersten Blick auch ziemlich überwältigend ist.
00:08:07Aber sobald man diese anfängliche Hürde überwunden hat,
00:08:10wird es deutlich einfacher,
00:08:12und meiner Meinung nach macht alles viel Sinn,
00:08:14ist nicht so schwierig,
00:08:15und es gibt keine versteckten Stolperfallen wie die Caching-bezogenen Probleme,
00:08:20die man mit Next.js haben kann.
00:08:22Deshalb würde ich sagen,
00:08:23dass der Einstieg bei Tan Stack Start schwieriger ist,
00:08:26aber sobald man läuft,
00:08:27ist es einfacher voranzukommen und in die fortgeschritteneren Features einzutauchen als bei Next.js.
00:08:32Wie erwähnt ist das natürlich nur meine persönliche Sichtweise.
00:08:36Was ist nun mit der Benutzerfreundlichkeit aus Entwicklersicht?
00:08:41Wie viel Spaß macht es damit zu arbeiten?
00:08:43Das ist natürlich völlig subjektiv,
00:08:45aber Next.js hat hier definitiv einige Probleme.
00:08:48Nicht nur die Probleme,
00:08:49die mit dem Lernen zusammenhängen,
00:08:51sondern auch andere Probleme.
00:08:53Zum Beispiel kann es beim Caching passieren,
00:08:55dass sich deine App im Entwicklungsmodus anders verhält als im Produktionsmodus,
00:08:59was bedeutet,
00:09:00dass du sie immer im Produktionsmodus testen musst,
00:09:03was du sowieso tun solltest,
00:09:04aber es wird ziemlich nervig,
00:09:06wenn du das während der Entwicklung ständig machen musst,
00:09:09weil dich das ausbremst.
00:09:11Das ist also ein großes Problem,
00:09:13das ich in der Vergangenheit hatte.
00:09:14Der Dev-Server kann auch ziemlich langsam werden.
00:09:18Zumindest wenn du die Webpack-Version verwendest – die neue Standard-Turbopack-Version ist da viel besser,
00:09:24aber meiner Erfahrung nach schlägt sie nicht das Vite-basierte Setup,
00:09:28das Tan Stack Start dir bietet.
00:09:30Ich gebe dem hier also drei Pluspunkte,
00:09:34weil die Arbeit damit aus Entwicklersicht in meiner Erfahrung super reibungslos war.
00:09:40Es ist schnell,
00:09:41vorhersehbar,
00:09:42es gibt größtenteils kein merkwürdiges Verhalten,
00:09:45es gibt immer noch einige Eigenheiten hier und da und es ist immer noch in der Release-Candidate-Phase,
00:09:52aber insgesamt bevorzuge ich die Entwicklererfahrung von Tan Stack Start gegenüber Next.js.
00:09:57Offensichtlich kann das bei dir anders sein.
00:10:01Was ist nun mit den konkreten Features,
00:10:03die Next.js und Tan Stack Start bieten?
00:10:06Beim Routing hast du in Next.js einen dateibasierten Ansatz,
00:10:09du richtest Dateien ein,
00:10:11die als deine Routen fungieren,
00:10:13und dort musst du verschiedene Namenskonventionen befolgen.
00:10:16Die Dokumentation erklärt sie gut,
00:10:18aber es gibt definitiv auch komplexere Features wie parallele Routen,
00:10:22die umständlich einzurichten sein können.
00:10:25Tan Stack Start hat ebenfalls einen dateibasierten Ansatz und nutzt wie erwähnt Tan Stack Router im Hintergrund,
00:10:30und auch hier musst du Dateinamen-Konventionen befolgen,
00:10:33die ebenfalls ähnlich leicht zu lernen sind.
00:10:36Ein Vorteil,
00:10:36den du mit Tan Stack Start bekommst,
00:10:38ist,
00:10:39dass es dir mit seinem dateibasierten Routing vollständige Typsicherheit bietet,
00:10:43was ziemlich schön sein kann.
00:10:45Beide sind also dateibasiert und es kommt auf deine Präferenzen an,
00:10:50welches Namensmuster du bevorzugst,
00:10:52aber Tan Stack Start hat auch diese 100%ige Typsicherheit,
00:10:56die mit seinem dateibasierten Router kommt,
00:10:58was schön ist.
00:11:00Und das beantwortet auch die nächste Frage: Next.js hat sehr gute TypeScript-Unterstützung und Tan Stack Start hat meiner Erfahrung nach sogar noch bessere TypeScript-Unterstützung.
00:11:11Auch wenn es um Dinge wie Server Actions oder Server Functions oder wie auch immer du sie nennen willst und Datenabruf geht.
00:11:18Also ja,
00:11:18wenn du TypeScript verwendest,
00:11:20was du meiner Meinung nach solltest,
00:11:21ist Tan Stack Start wirklich eine Freude,
00:11:23damit zu arbeiten.
00:11:24Wenn es um Datenabruf und Daten-Mutationen geht,
00:11:27ermöglichen beide wie erwähnt,
00:11:28Code auf dem Server auszuführen,
00:11:30sie sind beide Full-Stack-React-Anwendungen,
00:11:32aber sie verfolgen unterschiedliche Ansätze.
00:11:35Next.js verwendet React Server Components und war lange Zeit das einzige Framework,
00:11:40das React Server Components unterstützt hat.
00:11:43Das bedeutet,
00:11:44dass deine Seitenkomponenten standardmäßig nur auf dem Server gerendert werden.
00:11:48Sie werden niemals auf dem Client neu gerendert,
00:11:50was bedeutet,
00:11:50dass du deinen Datenabruf-Code wie diesen,
00:11:53der im Hintergrund auf eine Datenbank zugreift,
00:11:55in deine Komponenten packen kannst und das nicht auf den Client überschwappt.
00:11:59Tan Stack Start verfolgt einen anderen Ansatz.
00:12:01React-Server-Component-Unterstützung wird dort auch bald kommen,
00:12:04sie ist noch nicht verfügbar,
00:12:06als ich das hier aufnehme,
00:12:07aber der Ansatz,
00:12:08den ich dir hier zeige und den ich in all meinen Projekten verwendet habe,
00:12:11wird ebenfalls weiter existieren,
00:12:13und bei diesem Ansatz werden deine Routen-Komponenten standardmäßig sowohl auf der Server- als auch auf der Client-Seite gerendert,
00:12:19auf der Server-Seite vorgerendert,
00:12:20auf der Client-Seite aktualisiert,
00:12:22und daher kannst du deinen serverseitigen Code nicht in die Komponentenfunktionen packen.
00:12:27Stattdessen verwendet es ein Loader-Muster,
00:12:29das du vielleicht von Remix kennst,
00:12:31bei dem du Loader an deine Routen anhängen kannst,
00:12:34die sowohl auf Client- als auch auf Server-Seite ausgeführt werden.
00:12:38Du kannst dann aber Funktionen aufrufen,
00:12:40die mit create server functions dekoriert oder umschlossen sind,
00:12:44sozusagen – eine Funktion von Tan Stick Start,
00:12:47die eine Funktion so markiert,
00:12:49dass sie nur auf dem Server ausgeführt,
00:12:51aber vom Client aus aufgerufen werden kann..
00:12:54Das ist es, was eine Server-Funktion ausmacht.
00:12:56Und wenn du eine solche Funktion hast,
00:12:58kannst du sie problemlos in einem Loader oder auch direkt aus dem Component-Funktionskörper heraus aufrufen,
00:13:03und der Code bleibt auf der Server-Seite.
00:13:05Im Hintergrund wird eine HTTP-Anfrage gesendet.
00:13:07Next.js setzt also hauptsächlich auf RSC,
00:13:09wobei du dort natürlich auch API-Endpunkte einrichten und useEffect mit der Fetch API verwenden könntest.
00:13:15Tan Stick Start nutzt Loader und Server-Funktionen,
00:13:18wobei auch hier erwähnenswert ist,
00:13:20dass du ebenfalls API-Routen einrichten und die Fetch API,
00:13:23Tan Stick Query oder Ähnliches verwenden kannst – aber der wichtigste integrierte Ansatz ist dieser Loader-plus-Server-Funktionen-Ansatz.
00:13:31Für Mutationen verwendet Next.js Server Actions,
00:13:34also Aktionen,
00:13:35die mit dieser speziellen useServer-Direktive dekoriert sind.
00:13:39Eines der Dinge,
00:13:40die Next.js hat,
00:13:41sind diese Direktiven useServer und useClient.
00:13:44Manche Leute mögen sie nicht,
00:13:45ich bin ehrlich gesagt auch kein großer Fan.
00:13:48Und wenn du eine Datei mit useServer dekorierst,
00:13:50dann werden alle Funktionen darin zu Server-Funktionen,
00:13:53die nur auf dem Server ausgeführt werden.
00:13:55Nicht auf der Client-Seite – du kannst sie aber trotzdem vom Client aus aufrufen.
00:13:59Diese saveNode-Funktion zum Beispiel,
00:14:01die ich hier habe und die einen Knoten in der Datenbank speichert,
00:14:04kann trotzdem vom Client aus aufgerufen werden,
00:14:07indem ich hier etwa den useActionState-Hook verwende.
00:14:10In Tan Stick Start verwenden wir einfach weiterhin diesen createServer-Funktions-Ansatz,
00:14:14denn ich erwähnte ja,
00:14:15dass das Funktionen sind,
00:14:16die garantiert auf dem Server laufen,
00:14:18und du kannst sie sowohl zum Datenabruf als auch für Datenmutationen nutzen,
00:14:21weil der Code eben nur auf dem Server ausgeführt wird.
00:14:24In einer Component-Funktion,
00:14:25die auch auf dem Client gerendert wird,
00:14:27kannst du den useServer-Funktions-Hook von Tan Stick Start verwenden,
00:14:30um deine Server-Funktion zu umschließen.
00:14:32Das macht sie im Wesentlichen vom Client aus aufrufbar und gibt dir zusätzliche Features wie automatisches Redirect-Handling und so weiter..
00:14:39Das erlaubt mir dann,
00:14:40diese Server-Funktion aus meinen clientseitigen Komponenten heraus aufzurufen.
00:14:43Next.js verwendet also die offiziellen React-Server-Funktionen,
00:14:47Tan Stick Start nutzt am Ende seine eigenen Server-Funktionen.
00:14:51Die grundlegende Idee ist natürlich dieselbe.
00:14:54Nun, was ist mit Caching?
00:14:56Ich habe erwähnt, dass das der schwierige Teil ist.
00:14:58Es ist ziemlich aggressiv und potenziell komplex in Next.js.
00:15:04Es ist definitiv einer der schwierigeren Aspekte von Next.js.
00:15:07Und ich behandle es genau wie alle anderen wichtigen Next.js-Konzepte in meinem Next.js-Kurs,
00:15:13falls du alles über Next.js lernen möchtest.
00:15:16Dieser Kurs ist eine großartige Ressource,
00:15:18um dich vom absoluten Anfänger zum fortgeschrittenen Next.js-User zu bringen.
00:15:21Aber Caching ist definitiv eines der problematischeren Themen bei Next.js.
00:15:26Der Vorteil ist natürlich,
00:15:28dass du aufgrund der aggressiven Standardeinstellungen potenziell ein ziemlich gutes Caching für deine Nutzer bekommen kannst.
00:15:35Aber du kannst dir auch ziemlich leicht ins eigene Bein schießen.
00:15:38Für Tan Stick Start würde ich es als gute Standardeinstellungen zusammenfassen.
00:15:43Weit weniger aggressiv als Next.js und vor allem konsistent,
00:15:47zumindest meiner Erfahrung nach,
00:15:49zwischen Entwicklungs- und Produktionsmodus.
00:15:52Es bietet auch Caching,
00:15:53sodass zum Beispiel beim Navigieren zwischen Routen Daten für einen bestimmten Zeitraum gecacht werden.
00:16:00Damit du bei schneller Navigation nicht eine Menge Anfragen an deinen Server sendest.
00:16:04Und das hilft natürlich enorm bei der Performance,
00:16:07aber es wird nicht alles gecacht oder versucht,
00:16:09auf verschiedenen Ebenen alles zu cachen – und das kann dir als Entwickler das Leben leichter machen.
00:16:14Es bedeutet aber natürlich auch,
00:16:16dass du,
00:16:16wenn du die beste Performance für deine Nutzer herausholen und möglicherweise Traffic sparen willst,
00:16:22selbst gute Caching-Header setzen und dir etwas mehr Gedanken darüber machen musst,
00:16:26wie du deine Anwendung cachst,
00:16:28als du es vielleicht bei Next.js tun müsstest.
00:16:30Dort musst du allerdings über andere Probleme nachdenken.
00:16:32Was ist nun mit der Stabilität?
00:16:35Hier gebe ich wahrscheinlich beiden zwei Pluspunkte.
00:16:39Beide sind ziemlich stabil.
00:16:40Natürlich ist Next.js ausgereifter,
00:16:43aber meiner Erfahrung nach war es in den letzten Jahren durchaus fehleranfällig,
00:16:48besonders der Development-Server hatte Probleme mit Abstürzen und so weiter.
00:16:53Aber es ist deutlich besser geworden und insgesamt ist es eine stabile Erfahrung,
00:16:57und es gibt natürlich hunderte und tausende von Anwendungen,
00:17:00die es nutzen und problemlos im Produktivbetrieb laufen.
00:17:03Das ist definitiv wichtig zu erwähnen.
00:17:06Natürlich gab es diese React-Sicherheitslücken,
00:17:08aber erstens könnten einige davon in Zukunft entdeckt werden und auch 10-stack start betreffen,
00:17:13besonders sobald sie auch React Server Components unterstützen,
00:17:17und zweitens ist das natürlich nicht primär ein Problem von Next.js.
00:17:2110-stack start befindet sich noch in der Release-Candidate-Phase und ich bin definitiv auf meinen Anteil an Problemen gestoßen.
00:17:28Ein paar merkwürdige Abstürze,
00:17:29seltsame Fehlermeldungen,
00:17:31eigenartiges Verhalten hier und da,
00:17:32daher könnte ich auch nur einen Pluspunkt dafür geben,
00:17:35aber da es sich in der Release-Candidate-Phase befindet und dafür ziemlich stabil ist,
00:17:40gehe ich hier auf zwei.
00:17:41Sei dir nur bewusst,
00:17:42dass du bei der Verwendung von 10-stack start definitiv auf einige Probleme stoßen kannst.
00:17:47Allerdings habe ich Anwendungen im Produktivbetrieb laufen wie buildmygraphic.com hier,
00:17:52mit der du fantastische Infografiken mithilfe von KI erstellen kannst,
00:17:56die von 10-stack start betrieben werden und problemlos laufen und auch keine Probleme beim Erstellen waren.
00:18:02Was ist mit Batteries Included?
00:18:04Also wie einfach ist es,
00:18:05optimiertes Bild-Rendering,
00:18:08Internationalisierung oder solche Dinge zu bekommen?
00:18:12Hier macht Next.js definitiv einen besseren Job.
00:18:15Es hat seine integrierte Image-Komponente,
00:18:18es hat eingebaute Internationalisierungs-Unterstützung und 10-stack start hat nichts davon.
00:18:24Ich bin nicht sicher,
00:18:25ob es geplant ist,
00:18:26nicht sicher,
00:18:26ob es für dich wichtig ist,
00:18:28es ist definitiv nichts,
00:18:29was du brauchst,
00:18:30es gibt andere Alternativen,
00:18:31Drittanbieter-Pakete,
00:18:32die du verwenden kannst,
00:18:33vielleicht willst du die eingebauten Sachen gar nicht,
00:18:36aber wenn das etwas ist,
00:18:37das dir wichtig ist oder worüber du dir Sorgen machst,
00:18:39dann ist Next.js wahrscheinlich die bessere Wahl hier.
00:18:43Und was ist mit dem Deployment?
00:18:45Das ist ein schwieriges Thema.
00:18:48Next.js wird natürlich von Vercel entwickelt und wenn du es auf Vercel deployst,
00:18:53ist es super einfach und reibungslos.
00:18:56Alles ist dafür optimiert.
00:18:58Historisch war es etwas schwierig,
00:19:00es zum Beispiel auf eigenen Servern zu deployen,
00:19:02aber um fair zu sein,
00:19:04das Next.js-Team hat wirklich einiges getan,
00:19:06um das einfacher zu machen,
00:19:08bessere Dokumentation zu schreiben,
00:19:10und daher würde ich sagen,
00:19:12dass man es heutzutage absolut auch auf anderen Diensten ohne große Probleme deployen kann.
00:19:17Das sind also zwei oder drei Pluspunkte,
00:19:20drei Pluspunkte,
00:19:21wenn du Vercel verwendest,
00:19:23und zwei wahrscheinlich,
00:19:25wenn du andere Anbieter verwendest,
00:19:27würde ich sagen.
00:19:28Für 10-stack start gehe ich hier jetzt auf zwei,
00:19:33aber ich könnte auch drei geben.
00:19:36Der Hauptgrund,
00:19:37warum ich zwei gebe,
00:19:38ist,
00:19:39dass zum Zeitpunkt dieser Aufnahme die Hosting-Dokumentation noch etwas schwierig ist.
00:19:45Es gibt offiziell unterstützte Partner wie Cloudflare und Netlify,
00:19:48die ziemlich gute Dokumentation haben und wo das Deployment wahrscheinlich ziemlich reibungslos ist,
00:19:54ich habe diese aber nicht verwendet.
00:19:56Wenn du es zum Beispiel auf deinem eigenen VPS mit BUN laufen lassen möchtest,
00:20:00gibt es hier einige Anweisungen,
00:20:02aber ich fand es etwas schwierig,
00:20:04ihnen zu folgen,
00:20:05oder stieß auf einige Probleme,
00:20:07die alle lösbar waren,
00:20:09aber es hat mich definitiv einige Zeit gekostet.
00:20:12Ich denke,
00:20:13sobald es eine gute Anleitung für das Deployment von 10-stack start mit BUN oder Node auf einem VPS gibt,
00:20:18wird das Deployment definitiv einfacher,
00:20:20besonders wenn diese Anleitung Empfehlungen zu Best Practices enthält,
00:20:24die du befolgen solltest,
00:20:25oder potenzielle Fallstricke,
00:20:27denen du begegnen könntest.
00:20:29Aber wie gesagt,
00:20:29du könntest hier definitiv auch drei Pluspunkte vergeben,
00:20:32je nachdem,
00:20:33wie du das betrachtest.
00:20:34Wie ich bereits erwähnt habe,
00:20:35ist das alles subjektiv und nur meine Erfahrung,
00:20:38meine Gedanken,
00:20:38und natürlich bin ich auch daran interessiert,
00:20:41deine Gedanken zu hören.
00:20:42Ob du gewechselt hast oder was du über Next.js und T3 Stack denkst,
00:20:45falls du einen Wechsel in Erwägung ziehst oder ob du keines von beiden verwendest und stattdessen eine andere Option nutzt.

Key Takeaway

TanStack Start bietet eine modernere Developer Experience mit besserer TypeScript-Unterstützung und einfacherem Caching, während Next.js durch sein ausgereiftes Ökosystem, bessere KI-Integration und umfangreichere Built-in-Features punktet.

Highlights

TanStack Start befindet sich noch in der Release-Candidate-Phase, während Next.js ausgereifter und etablierter ist

Next.js hat bessere KI-Unterstützung und ein größeres Ökosystem mit mehr Tutorials und Ressourcen

TanStack Start bietet vollständige TypeScript-Typsicherheit beim Routing und eine bessere Developer Experience mit Vite

Next.js nutzt React Server Components, während TanStack Start auf Loader und Server Functions setzt

Caching ist bei Next.js sehr aggressiv und komplex, bei TanStack Start mit guten Standardeinstellungen einfacher

Deployment ist bei Next.js auf Vercel optimiert, TanStack Start hat noch Verbesserungspotenzial bei der Hosting-Dokumentation

Der Einstieg ist bei Next.js leichter, aber fortgeschrittene Features sind bei TanStack Start weniger komplex

Timeline

Einführung und Kontext des Vergleichs

Der Sprecher stellt den Vergleich zwischen TanStack Start und Next.js vor und erklärt, dass TanStack Start derzeit einen gewissen Hype erlebt. Er verweist auf einen kompletten Livestream, in dem er beide Frameworks durch den Bau derselben App verglichen hat. Der Sprecher betont, dass es sich um seine subjektive Meinung handelt, nicht um einen objektiven Vergleich. Er erklärt auch wichtige Grundlagen: TanStack Start ist im Wesentlichen TanStack Router plus Server-Funktionen, während beide Full-Stack-React-Frameworks sind. Der Sprecher grenzt den Vergleich klar ab und erklärt, warum React Vite mit React Router für reine Client-Anwendungen ohne serverseitige Logik die bessere Wahl wäre.

KI-Bereitschaft und Ökosystem

In diesem Abschnitt wird die KI-Unterstützung beider Frameworks analysiert. Next.js hat deutlich bessere Out-of-the-box KI-Unterstützung, da TanStack Start sich noch in der Release-Candidate-Phase befindet und KI-Chatbots größtenteils veraltetes oder falsches Wissen über TanStack Start haben. Der Sprecher empfiehlt, der KI zusätzlichen Kontext durch Dokumentation, MCP wie Context 7 oder Agent-Skills bereitzustellen. Beim Ökosystem schneidet Next.js ebenfalls deutlich besser ab mit mehr Tutorials, YouTube-Videos, Kursen und zusätzlichen Paketen. Die Download-Charts zeigen, dass Next.js deutlich mehr genutzt wird, obwohl TanStack Start einen schönen Aufwärtstrend aufweist. Next.js ist Teil des Standard-Stacks, den KI für die meisten Webanwendungen empfiehlt.

Erlernbarkeit beider Frameworks

Der Sprecher vergibt beiden Frameworks zwei Pluspunkte für Erlernbarkeit, aber aus unterschiedlichen Gründen. Bei Next.js ist der Einstieg mit dem App Router sehr unkompliziert - man definiert einfach page.tsx-Dateien mit dynamischen Segmenten. Die Dokumentation führt gut durch die Kernkonzepte. Jedoch wird es bei komplexeren Anwendungen und fortgeschrittenen Konzepten wie Caching extrem verwirrend, besonders wegen des aggressiven Multi-Layer-Cachings. TanStack Start hat einen schwierigeren Einstieg mit weniger guter Einstiegsdokumentation, wichtige Konzepte wie Data Fetching fehlen teilweise. Die Dokumentation hat ein 'Brain-Dump-Gefühl' und man muss für Routing-Themen zur TanStack Router-Dokumentation wechseln. Aber sobald man die anfängliche Hürde überwunden hat, macht alles viel Sinn und es gibt keine versteckten Stolperfallen wie die Caching-Probleme von Next.js.

Developer Experience und Benutzerfreundlichkeit

Bei der Entwicklererfahrung bevorzugt der Sprecher klar TanStack Start mit drei Pluspunkten gegenüber Next.js. Next.js hat mehrere Probleme: unterschiedliches Verhalten zwischen Entwicklungs- und Produktionsmodus beim Caching, was ständiges Testen im Produktionsmodus erfordert und die Entwicklung verlangsamt. Der Dev-Server kann mit Webpack ziemlich langsam werden, obwohl die neue Turbopack-Version viel besser ist. TanStack Start bietet eine super reibungslose Entwicklererfahrung - es ist schnell, vorhersehbar und hat größtenteils kein merkwürdiges Verhalten. Das Vite-basierte Setup ist schneller als Turbopack. Es gibt zwar noch einige Eigenheiten und es befindet sich in der Release-Candidate-Phase, aber insgesamt ist die Developer Experience deutlich besser als bei Next.js.

Routing und TypeScript-Unterstützung

Beide Frameworks nutzen dateibasiertes Routing mit eigenen Dateinamen-Konventionen, die ähnlich leicht zu lernen sind. Next.js bietet verschiedene Features wie parallele Routen, die aber umständlich einzurichten sein können. Der große Vorteil von TanStack Start ist die vollständige Typsicherheit, die mit dem dateibasierten Routing kommt - ein Feature, das Next.js nicht bietet. Bei der TypeScript-Unterstützung allgemein hat Next.js sehr gute Unterstützung, aber TanStack Start hat nach Erfahrung des Sprechers sogar noch bessere TypeScript-Unterstützung. Dies gilt auch für Server Actions, Server Functions und Datenabruf. Der Sprecher betont, dass TanStack Start eine echte Freude ist, wenn man TypeScript verwendet, was er grundsätzlich empfiehlt.

Datenabruf und Daten-Mutationen

Beide Frameworks sind Full-Stack-React-Anwendungen, verfolgen aber unterschiedliche Ansätze beim Datenabruf. Next.js verwendet React Server Components - Seitenkomponenten werden standardmäßig nur auf dem Server gerendert und nie auf dem Client neu gerendert, sodass Datenabruf-Code direkt in Komponenten eingebettet werden kann. TanStack Start verfolgt einen anderen Ansatz: Routen-Komponenten werden sowohl server- als auch clientseitig gerendert. Daher nutzt es ein Loader-Muster (ähnlich wie Remix), bei dem Loader an Routen angehängt werden und Funktionen mit 'createServerFn' dekoriert werden, die nur auf dem Server laufen, aber vom Client aufrufbar sind. Für Mutationen verwendet Next.js Server Actions mit der 'use server'-Direktive, während TanStack Start weiterhin den createServerFn-Ansatz nutzt. Beide können für Datenabruf und Mutationen verwendet werden, aber Next.js nutzt die offiziellen React-Server-Funktionen, während TanStack Start eigene Server-Funktionen implementiert.

Caching-Strategien im Vergleich

Caching ist laut Sprecher der schwierigste Aspekt von Next.js - es ist ziemlich aggressiv und potenziell komplex, eines der problematischsten Themen. Der Vorteil ist, dass man durch die aggressiven Standardeinstellungen potenziell gutes Caching für Nutzer bekommt, aber man kann sich auch leicht ins eigene Bein schießen. Der Sprecher verweist auf seinen Next.js-Kurs, wo er dieses komplexe Thema behandelt. TanStack Start hat gute Standardeinstellungen - weit weniger aggressiv als Next.js und vor allem konsistent zwischen Entwicklungs- und Produktionsmodus. Es bietet Caching beim Navigieren zwischen Routen für einen bestimmten Zeitraum, was die Performance verbessert. Allerdings bedeutet der weniger aggressive Ansatz, dass Entwickler selbst gute Caching-Header setzen und sich mehr Gedanken über Optimierung machen müssen, wenn sie beste Performance und Traffic-Einsparungen wollen.

Stabilität, Built-in Features und Deployment

Bei der Stabilität vergeben beide zwei Pluspunkte. Next.js ist ausgereifter, hatte aber in den letzten Jahren Probleme mit Dev-Server-Abstürzen, ist aber deutlich besser geworden. Tausende Anwendungen laufen problemlos in Produktion. TanStack Start ist in der Release-Candidate-Phase und der Sprecher stieß auf merkwürdige Abstürze und eigenartiges Verhalten, aber es ist für diese Phase ziemlich stabil. Bei 'Batteries Included' punktet Next.js mit integrierter Image-Komponente und Internationalisierungs-Unterstützung, die TanStack Start nicht hat. Beim Deployment ist Next.js auf Vercel super einfach und reibungslos (drei Pluspunkte), auf anderen Diensten ebenfalls gut (zwei Pluspunkte) durch verbesserte Dokumentation. TanStack Start bekommt zwei Pluspunkte - die Hosting-Dokumentation ist noch etwas schwierig, besonders für VPS mit BUN oder Node, aber offiziell unterstützte Partner wie Cloudflare und Netlify haben gute Dokumentation.

Zusammenfassung und Ausblick

Der Sprecher betont abschließend nochmals, dass alle Bewertungen subjektiv sind und nur seine persönliche Erfahrung und Gedanken widerspiegeln. Er lädt die Zuschauer ein, ihre eigenen Gedanken zu teilen - ob sie gewechselt haben, was sie über Next.js und TanStack Start denken, oder ob sie einen Wechsel in Erwägung ziehen. Der Sprecher zeigt sich auch offen für Feedback von Nutzern, die keines der beiden Frameworks verwenden und stattdessen andere Optionen nutzen. Diese Einladung zum Dialog unterstreicht den subjektiven Charakter des Vergleichs und die Tatsache, dass die Wahl des Frameworks von individuellen Anforderungen, Präferenzen und Projektkontext abhängt.

Community Posts

View all posts