Transcript

00:00:00Tan Stick Start fait beaucoup parler de lui ces derniers temps,
00:00:03et la question est : devriez-vous passer de Next.js ?
00:00:06Est-il meilleur que Next.js ?
00:00:08Hier,
00:00:09j'ai consacré tout un livestream à comparer les deux et à construire deux applications,
00:00:13ou plutôt une application deux fois,
00:00:15une fois avec Next.js et une fois avec Tan Stick Start,
00:00:18et vous pouvez regarder ça si vous voulez voir les détails,
00:00:21mais ici je vous donnerai mon résumé rapide de ce qui est différent,
00:00:24de ce qui est mieux et lequel vous devriez utiliser.
00:00:27Bien sûr,
00:00:28c'est juste mon avis,
00:00:29ce n'est évidemment pas une comparaison objective,
00:00:32mais je partagerai mon expérience des deux et ce que je pense de Next.js et Tan Stick Start.
00:00:37J'ai établi plusieurs critères que je souhaite utiliser pour comparer les deux,
00:00:42et on pourrait en ajouter d'autres,
00:00:44tout comme on pourrait ajouter d'autres frameworks ici.
00:00:47Je veux dire,
00:00:48on pourrait inclure Remix,
00:00:49React Router maintenant,
00:00:50on pourrait inclure Nuxt pour Vue,
00:00:52on pourrait parler de SvelteKit,
00:00:53mais je ne le ferai pas,
00:00:54cette vidéo porte sur Next.js et Tan Stick Start,
00:00:57non pas parce que les autres sont mauvais,
00:00:59mais parce que ces deux-là sont souvent comparés.
00:01:01Tout d'abord,
00:01:02il est important de noter que Tan Stick Start n'est finalement que Tan Stick Router plus des fonctionnalités serveur,
00:01:09principalement.
00:01:10Vous pouvez donc utiliser Tan Stick Router de manière autonome si vous voulez construire une application monopage qui n'a pas besoin de rendu côté serveur et de fonctions côté serveur,
00:01:19par exemple.
00:01:19Vous pouvez utiliser Tan Stick Router au lieu de React Router dans votre application React Vite,
00:01:24par exemple.
00:01:25Tan Stick Start,
00:01:25comme mentionné,
00:01:26ajoute simplement des fonctionnalités côté serveur à Tan Stick Router,
00:01:30ce qui en fait un framework React full-stack complet.
00:01:32Tout comme Next.js,
00:01:33qui est bien sûr aussi un framework React full-stack.
00:01:37Et c'est également important.
00:01:38On me demande parfois s'il faut utiliser Next.js ou React Vite avec React Router,
00:01:44et je pense que c'est la mauvaise comparaison.
00:01:47Si vous n'avez pas besoin de logique côté serveur,
00:01:50si vous n'avez pas besoin de rendu côté serveur,
00:01:52alors vous devriez simplement utiliser React Vite,
00:01:55donc un projet Vite avec React,
00:01:57et ajouter React Router ou Tan Stick Router.
00:02:00Il n'y a aucune raison d'emprunter la voie de Next.js dans ce cas.
00:02:02Quoi qu'il en soit, commençons cette comparaison.
00:02:05Et le premier critère que j'ai choisi est la compatibilité IA des deux,
00:02:09car bien sûr c'est important de nos jours.
00:02:12Vous utilisez très probablement l'IA pour générer du code,
00:02:16peut-être tout le code que vous voulez dans votre projet Next.js ou Tan Stick Start,
00:02:21et par conséquent l'IA doit bien sûr savoir comment écrire ce code.
00:02:25Évidemment,
00:02:26vous pouvez et vous devriez fournir le contexte approprié en copiant des pages de documentation ou en utilisant un MCP comme Context 7 pour que l'IA accède aux docs,
00:02:36ou en indiquant à l'IA qu'elle devrait faire une recherche web,
00:02:40ou en ajoutant des compétences d'agent qui apprennent à l'IA comment utiliser Tan Stick Start ou Next.js.
00:02:47Mais directement,
00:02:48si vous posez simplement une question sur Tan Stick Start à ChatGPT,
00:02:52il en saura très probablement moins à ce sujet qu'il n'en sait sur Next.js,
00:02:57et ce qu'il sait est probablement faux.
00:02:59Parce que même maintenant,
00:03:01au moment où j'enregistre ceci,
00:03:02Tan Stick Start est encore en phase de release candidate,
00:03:05ce qui signifie plus de changements drastiques,
00:03:08mais pas encore totalement stable non plus.
00:03:10L'année dernière,
00:03:11il était principalement en version bêta et alpha,
00:03:14et c'est cette connaissance que ces chatbots IA possèdent d'emblée,
00:03:18ce qui explique pourquoi ils auront des connaissances erronées sur Tan Stick Start.
00:03:23Donc la compatibilité IA d'origine n'est pas terrible,
00:03:27c'est définitivement meilleur pour Next.js.
00:03:31Maintenant,
00:03:32avec Next.js,
00:03:32il y a bien sûr aussi eu des changements au fil des années,
00:03:36il y a la nouvelle directive use cache que l'IA ne connaît pas non plus très bien d'emblée,
00:03:41mais l'IA a une assez bonne compréhension de l'app router,
00:03:44des React server components et tout ça,
00:03:46donc c'est définitivement meilleur pour Next.js que pour Tan Stick Start.
00:03:51Mais encore une fois,
00:03:52comme mentionné,
00:03:53vous devriez vous assurer de donner à l'IA le contexte supplémentaire approprié dont elle a besoin,
00:03:58sinon vous utilisez simplement l'IA de la mauvaise façon.
00:04:02Qu'en est-il de l'écosystème,
00:04:03et par là j'entends d'autres ressources que vous pouvez trouver comme des tutoriels,
00:04:08des vidéos YouTube,
00:04:09des cours,
00:04:10peut-être aussi des packages supplémentaires pour ces frameworks.
00:04:13Et ici,
00:04:14bien sûr,
00:04:14Next.js a l'air bien meilleur que Tan Stick Start,
00:04:17simplement parce qu'il est plus ancien,
00:04:20il existe depuis plus longtemps,
00:04:22vous trouverez plus de ressources à son sujet car il est également plus important.
00:04:27Il convient également de noter,
00:04:28bien sûr,
00:04:29qu'il est plus important,
00:04:30ce qui signifie plus d'utilisation,
00:04:32car Next.js fait partie de cette stack par défaut que l'IA propose,
00:04:36où elle vous donne essentiellement Next.js,
00:04:38React,
00:04:39Tailwind et TypeScript pour la plupart des applications web que vous demandez.
00:04:43Tan Stick Start ne sera probablement jamais son choix par défaut..
00:04:47Et par conséquent,
00:04:48sans surprise,
00:04:48si vous comparez les graphiques de téléchargements des deux,
00:04:51eh bien oui,
00:04:52Tan Stick Start a nettement moins de téléchargements,
00:04:54comme vous pouvez le voir.
00:04:56Si vous enlevez Next.js,
00:04:57vous pouvez voir une belle tendance à la hausse pour Tan Stick Start cependant.
00:05:01En lien avec ce point sur l'écosystème,
00:05:03il y a bien sûr la facilité d'apprentissage,
00:05:06mais pas seulement.
00:05:07Par facilité d'apprentissage,
00:05:09j'entends à quel point c'est simple d'apprendre la chose ?
00:05:11Et je sais bien sûr qu'à l'ère de l'IA,
00:05:13vous n'êtes pas intéressé par l'apprentissage,
00:05:15mais en tant que bon développeur,
00:05:16vous devriez comprendre l'outil avec lequel vous travaillez.
00:05:19Vous n'écrivez peut-être plus tout le code à la main,
00:05:22mais vous devriez comprendre le code que l'IA génère pour vous.
00:05:25Donc l'apprendre reste important.
00:05:28Et là, je dirais que pour Next.js, c'est mitigé.
00:05:33On peut lui donner,
00:05:34je ne suis pas sûr si je voudrais lui donner un ou deux plus,
00:05:38car débuter avec Next.js avec l'app router,
00:05:41et au fait tout ceci fait référence à l'app router,
00:05:44est assez simple.
00:05:46C'est logique.
00:05:47Hier,
00:05:48dans le stream,
00:05:48j'ai construit une petite application de prise de notes où vous pouviez créer,
00:05:53sauvegarder et afficher des notes.
00:05:56Et vous faites ça avec Next.js en spécifiant simplement quelques fichiers page.tsx qui sont vos,
00:06:01vous l'avez deviné,
00:06:02pages.
00:06:03Vous pouvez avoir des segments dynamiques.
00:06:04Et apprendre cette syntaxe et cette approche pour construire votre application est plutôt simple au final.
00:06:12Je pense aussi que la documentation fait un bon travail en vous guidant à travers les concepts de base étape par étape et en vous aidant à démarrer avec Next.js.
00:06:22Mais les choses deviennent plus complexes une fois que vous construisez des applications plus complexes et une fois que vous vous plongez dans les concepts plus avancés comme la mise en cache.
00:06:30Et surtout la partie mise en cache peut être super déroutante,
00:06:34car Next.js a pris la décision qu'avec l'introduction de l'app router,
00:06:38ils voulaient faire une mise en cache super agressive sur différentes couches,
00:06:42et comprendre ça et comprendre comment configurer vos composants pour qu'ils fonctionnent bien avec cette mise en cache intégrée et pour donner à vos utilisateurs le comportement que vous voulez qu'ils aient peut être délicat.
00:06:55Je dirai ça.
00:06:56Donc débuter est génial.
00:06:59Apprendre les fonctionnalités plus avancées est difficile.
00:07:02Je vais probablement donner deux plus ici.
00:07:05Et je donnerai la même chose à Tan Stick Start,
00:07:08mais pour des raisons très différentes.
00:07:09Pour Tan Stick Start,
00:07:11je dirais que débuter est peut-être un peu plus difficile qu'avec Next.js,
00:07:15car leur documentation de démarrage n'est pas aussi bonne que celle de Next.js.
00:07:20Des concepts importants manquent ici,
00:07:23je dirais,
00:07:23comme la récupération de données ou les mutations.
00:07:27Bien que si vous avez déjà des connaissances en Next.js,
00:07:29il y a un document de comparaison plutôt bon qui compare les fonctionnalités clés,
00:07:33y compris celles liées à la récupération de données et aux mutations.
00:07:36Mais je pense que ça peut être un peu plus difficile car la documentation,
00:07:40même si je dois dire qu'elle a été largement améliorée,
00:07:43a encore un peu ce sentiment de décharge de cerveau où ce n'est pas super clair quel article vous devez lire et bon,
00:07:49par exemple,
00:07:49il n'y a pas d'article sur la récupération de données ici et ce genre de choses.
00:07:54De plus,
00:07:54puisque Tan Stick Start est construit sur Tan Stick Router pour tout ce qui concerne le routage,
00:08:00vous devez aller dans la documentation de Tan Stick Router qui est également plutôt écrasante quand vous la regardez pour la première fois.
00:08:07Mais une fois que vous avez franchi cette barrière initiale,
00:08:10ça devient beaucoup plus facile et tout,
00:08:12à mon avis,
00:08:13a beaucoup de sens et ce n'est pas si difficile,
00:08:16et il n'y a pas de pièges cachés comme les problèmes liés à la mise en cache que vous pouvez avoir avec Next.js.
00:08:22C'est pourquoi je dirais que débuter est plus difficile avec Tan Stick Start,
00:08:26mais une fois que vous êtes lancé,
00:08:27c'est plus facile de progresser et de plonger dans les fonctionnalités plus avancées qu'avec Next.js.
00:08:32Comme mentionné, ce n'est bien sûr que mon avis personnel.
00:08:36Maintenant,
00:08:37qu'en est-il de la facilité d'utilisation du point de vue du développeur ?
00:08:41Est-ce agréable de travailler avec ?
00:08:43C'est totalement subjectif bien sûr,
00:08:45mais Next.js présente définitivement quelques problèmes à ce niveau.
00:08:48Pas seulement les problèmes liés à l'apprentissage potentiel,
00:08:51mais aussi d'autres problèmes.
00:08:53Par exemple,
00:08:53avec le système de cache,
00:08:54il peut arriver que votre application se comporte différemment en mode développement qu'en mode production,
00:09:00ce qui signifie que vous devez toujours la tester en mode production,
00:09:03ce que vous devriez faire de toute façon,
00:09:05mais cela devient assez agaçant si vous devez le faire tout le temps pendant le développement car cela vous ralentit.
00:09:11C'est donc un gros problème que j'ai rencontré par le passé.
00:09:14Le serveur de développement peut aussi devenir assez lent.
00:09:18Du moins si vous utilisez la version webpack,
00:09:20la nouvelle version turbo pack par défaut est beaucoup mieux à ce niveau,
00:09:24mais d'après mon expérience,
00:09:26elle ne surpasse pas la configuration basée sur Vite que vous offre Tan Stick Start.
00:09:30Je vais donc lui attribuer trois plus ici car,
00:09:33d'après mon expérience,
00:09:35travailler avec a été extrêmement fluide du point de vue de l'expérience développeur.
00:09:40C'est rapide,
00:09:41c'est prévisible,
00:09:42il n'y a pas de comportement bizarre pour la plupart,
00:09:45il y a encore quelques petites particularités ici et là et c'est encore en phase release candidate,
00:09:51mais dans l'ensemble je préfère l'expérience développeur de Tan Stick Start à celle de Next.js.
00:09:57Évidemment, cela peut être différent pour vous.
00:10:01Maintenant,
00:10:01qu'en est-il des fonctionnalités concrètes offertes par Next.js et Tan Stick Start ?
00:10:06Pour le routage,
00:10:07comme je vous l'ai montré dans Next.js,
00:10:08vous avez une approche basée sur les fichiers,
00:10:11vous configurez des fichiers qui agissent comme vos routes et là vous avez diverses conventions de nommage à suivre.
00:10:16La documentation fait du bon travail pour les expliquer,
00:10:19mais il y a aussi définitivement des fonctionnalités plus complexes comme les routes parallèles qui peuvent être délicates à configurer.
00:10:25Tan Stick Start a également une approche basée sur les fichiers utilisant Tan Stick Router sous le capot comme mentionné,
00:10:30et vous avez également des conventions de nommage de fichiers à suivre ici qui sont également faciles à apprendre.
00:10:36Un avantage que vous obtenez avec Tan Stick Start,
00:10:38c'est qu'avec son routage basé sur les fichiers,
00:10:41il vous donne une sécurité de type complète,
00:10:43ce qui peut être très appréciable.
00:10:45Donc les deux sont basés sur les fichiers et cela dépend de vos préférences quel modèle de nommage vous préférez,
00:10:52mais Tan Stick Start a aussi cette sécurité de type à 100 % qui vient avec son routeur basé sur les fichiers,
00:10:58ce qui est un atout.
00:11:00Et ce qui répond également à la question suivante,
00:11:03Next.js a un très bon support TypeScript et Tan Stick Start a un support TypeScript encore meilleur d'après mon expérience.
00:11:11Également en ce qui concerne des choses comme les server actions ou les fonctions serveur ou peu importe comment vous voulez les appeler et la récupération de données.
00:11:18Donc oui,
00:11:18quand vous utilisez TypeScript,
00:11:20ce que vous devriez faire je pense,
00:11:22Tan Stick Start est vraiment un plaisir à utiliser.
00:11:24Maintenant,
00:11:24en ce qui concerne la récupération de données et les mutations de données,
00:11:27tous deux comme je l'ai mentionné vous permettent d'exécuter du code sur le serveur,
00:11:31ce sont toutes deux des applications React full stack mais elles adoptent des approches différentes.
00:11:35Next.js utilise les React Server Components et pendant longtemps,
00:11:39c'était le seul framework qui supportait les React Server Components.
00:11:43Cela signifie que vos composants de page par défaut sont rendus uniquement sur le serveur.
00:11:48Ils ne sont jamais re-rendus côté client,
00:11:49ce qui signifie que vous pouvez mettre votre code de récupération de données comme celui-ci qui accédera à une base de données en coulisses dans vos composants et cela ne se propagera pas au client.
00:11:59Tan Stick Start a une approche différente.
00:12:01Le support des React Server Components va bientôt arriver là aussi,
00:12:05ce n'est pas encore sorti quand j'enregistre ceci,
00:12:07mais l'approche que je vous montre ici et que j'ai utilisée dans tous mes projets continuera également d'exister et dans cette approche,
00:12:14vos composants de route par défaut sont rendus à la fois côté serveur et côté client,
00:12:19pré-rendus côté serveur,
00:12:20mis à jour côté client et par conséquent vous ne pouvez pas mettre votre code côté serveur dans les fonctions de composants.
00:12:27Au lieu de cela,
00:12:28il utilise un modèle de loader que vous connaissez peut-être dans Remix par exemple,
00:12:32où vous pouvez attacher un loader à vos routes qui s'exécutera également côté client et serveur,
00:12:38mais vous pouvez ensuite appeler des fonctions qui sont décorées ou enveloppées avec create server functions pour ainsi dire,
00:12:45qui est une fonction fournie par Tan Stack Start qui marque une fonction comme devant être exécutée uniquement côté serveur mais appelable depuis le côté client.
00:12:54Voilà ce qu'est une fonction serveur.
00:12:56Et si vous avez une telle fonction,
00:12:58vous pouvez l'appeler en toute sécurité dans un loader ou même depuis le corps de la fonction du composant et le code restera côté serveur.
00:13:05En coulisses, une requête HTTP sera envoyée.
00:13:07Donc Next.js repose principalement sur les RSC même si vous pourriez bien sûr également configurer des points de terminaison API et utiliser useEffect avec l'API Fetch.
00:13:15Tan Stack Start utilise des loaders et des fonctions serveur bien qu'il soit également important de noter que là aussi vous pouvez configurer des routes API et utiliser l'API Fetch,
00:13:24Tan Stack Query ou quoi que ce soit de ce genre,
00:13:26mais l'approche intégrée principale est cette approche loader plus fonction serveur.
00:13:31Pour les mutations,
00:13:32Next.js utilise des server actions,
00:13:34c'est-à-dire des actions qui sont décorées avec cette directive spéciale use server.
00:13:39L'une des particularités de Next.js ce sont ces directives use server,
00:13:43use client.
00:13:44Certaines personnes ne les aiment pas,
00:13:46je ne suis pas non plus un grand fan je dois dire.
00:13:48Et si vous avez un fichier décoré avec use server,
00:13:50alors toutes les fonctions qu'il contient deviennent des fonctions serveur qui ne seront exécutées que sur le serveur.
00:13:55Pas côté client,
00:13:56vous pouvez quand même les appeler depuis le côté client cependant.
00:13:59Par exemple cette fonction saveNode que j'ai ici qui enregistre un nœud dans la base de données peut toujours être appelée depuis le côté client ici en utilisant le hook useActionState par exemple.
00:14:10Dans Tan Stack Start,
00:14:11nous continuons simplement à utiliser cette approche avec create server function ici parce que j'ai mentionné que ce sont des fonctions qui sont garanties de s'exécuter sur le serveur et vous pouvez les utiliser pour la récupération de données ou pour les mutations de données car encore une fois le code ne s'exécutera que sur le serveur.
00:14:24Dans une fonction de composant qui est également rendue côté client,
00:14:27vous pouvez utiliser le hook useServer fourni par Tan Stack Start pour envelopper votre fonction serveur et cela la rend essentiellement appelable depuis le côté client et vous donne des fonctionnalités supplémentaires comme la gestion automatique des redirections et ainsi de suite.
00:14:39Cela me permet donc d'appeler cette fonction serveur depuis mes composants côté client.
00:14:43Donc Next.js utilise les fonctions serveur React officielles,
00:14:47Tan Stack Start utilise ses propres fonctions serveur au final.
00:14:51L'idée générale est bien sûr la même cependant.
00:14:54Maintenant qu'en est-il de la mise en cache ?
00:14:56J'ai mentionné que c'est la partie difficile.
00:14:58Elle est assez agressive et potentiellement complexe dans Next.js.
00:15:04C'est définitivement l'une des parties les plus difficiles de Next.js.
00:15:07Et je la couvre tout comme tous les autres concepts importants de Next.js dans mon cours Next.js au cas où vous voudriez tout apprendre sur Next.js.
00:15:16Ce cours est une excellente ressource pour vous faire passer de débutant absolu à utilisateur avancé de Next.js.
00:15:21Mais la mise en cache est définitivement l'un des sujets les plus problématiques avec Next.js.
00:15:26L'avantage bien sûr c'est qu'en raison des paramètres agressifs par défaut,
00:15:30vous pouvez potentiellement obtenir une assez bonne mise en cache pour vos utilisateurs.
00:15:35Mais vous pouvez aussi vous tirer une balle dans le pied assez facilement.
00:15:38Pour Tan Stack Start,
00:15:39je résumerais cela comme de bons paramètres par défaut.
00:15:43Beaucoup moins agressifs que Next.js et surtout cohérents d'après mon expérience du moins entre le mode développement et le mode production.
00:15:52Il vous offre également la mise en cache de sorte que lorsque les utilisateurs naviguent entre les routes par exemple,
00:15:57les données sont mises en cache pendant une certaine période.
00:16:00De sorte que pour une navigation rapide,
00:16:01vous n'envoyez pas une multitude de requêtes à votre serveur.
00:16:04Et cela aide bien sûr beaucoup avec les performances mais ce n'est pas mettre en cache tout ou essayer de tout mettre en cache sur différentes couches et cela peut vous faciliter la vie en tant que développeur.
00:16:14Cela signifie aussi bien sûr que si vous voulez obtenir les meilleures performances pour vos utilisateurs et potentiellement économiser du trafic,
00:16:21vous devez définir vous-même de bons en-têtes de cache et réfléchir un peu plus à la façon dont vous mettez en cache votre application que vous n'avez peut-être besoin de le faire avec Next.js.
00:16:30Là, il faut penser à d'autres problèmes cependant.
00:16:32Et qu'en est-il de la stabilité ?
00:16:35Ici, je vais probablement donner deux plus aux deux.
00:16:39Ils sont tous les deux assez stables.
00:16:40Évidemment Next.js est plus mature mais d'après mon expérience il a été assez bogué ces dernières années,
00:16:47notamment le serveur de développement a eu des problèmes de plantages et ainsi de suite.
00:16:53Mais ça s'est nettement amélioré et globalement c'est une expérience stable et il y a bien sûr des centaines et des milliers d'applications qui l'utilisent et qui tournent en production sans problèmes.
00:17:03C'est définitivement important à noter.
00:17:06Évidemment nous avons eu ces vulnérabilités de sécurité React mais d'une part certaines d'entre elles pourraient être découvertes à l'avenir et affecter également 10-stack start surtout une fois qu'ils commenceront aussi à supporter les React server components et d'autre part ce n'est évidemment pas un problème propre à Next.js.
00:17:2110-stack start est toujours en phase de release candidate et j'ai définitivement rencontré pas mal de problèmes avec.
00:17:28Quelques plantages bizarres,
00:17:29des messages d'erreur étranges,
00:17:31des comportements bizarres par-ci par-là donc je pourrais aussi lui donner un seul plus pour ça mais comme c'est en phase de release candidate et que pour ça il est assez stable je vais opter pour deux ici.
00:17:41Soyez juste conscient que vous pouvez définitivement rencontrer des problèmes en utilisant 10-stack start.
00:17:47Cela dit j'ai des applications qui tournent en production comme buildmygraphic.com ici que vous pouvez utiliser pour créer d'incroyables infographies avec l'aide de l'IA qui sont propulsées par 10-stack start et qui fonctionnent sans problèmes et qui n'ont pas non plus posé de problème à développer.
00:18:02Qu'en est-il des batteries incluses ?
00:18:04Donc à quel point est-il facile d'obtenir un rendu d'image optimisé,
00:18:08de l'internationalisation ou tout ce genre de trucs sympas.
00:18:12Ici Next.js fait définitivement un meilleur travail.
00:18:15Il a son composant image intégré,
00:18:18il a un support d'internationalisation intégré et 10-stack start n'a rien de tout ça.
00:18:24Je ne sais pas si c'est prévu,
00:18:25je ne sais pas si c'est important pour vous,
00:18:27ce n'est définitivement pas quelque chose dont vous avez besoin,
00:18:30il existe d'autres alternatives,
00:18:32des packages tiers que vous pouvez utiliser,
00:18:34peut-être que vous ne voulez même pas les trucs intégrés mais si c'est quelque chose qui vous préoccupe ou vous inquiète alors Next.js est probablement le meilleur choix ici.
00:18:43Et puis qu'en est-il du déploiement ?
00:18:45C'est un sujet difficile.
00:18:48Next.js est développé par Vercel bien sûr et si vous le déployez sur Vercel c'est super facile et fluide.
00:18:56Tout est optimisé pour ça.
00:18:58Historiquement il a été un peu difficile de le déployer sur vos propres serveurs par exemple mais pour être honnête l'équipe Next.js a vraiment fait du travail pour faciliter ça,
00:19:08écrire une meilleure documentation et donc de nos jours je dirais que vous pouvez absolument le déployer sur d'autres services sans beaucoup de problèmes aussi.
00:19:17Donc c'est deux ou trois plus,
00:19:20trois plus si vous utilisez Vercel et deux probablement si vous utilisez d'autres fournisseurs je dirais.
00:19:28Pour 10 stack start je vais opter pour deux ici pour l'instant mais je pourrais aussi lui donner trois.
00:19:36La principale raison pour laquelle je donne deux c'est qu'au moment où j'enregistre ceci la documentation d'hébergement est encore un peu délicate.
00:19:45Il y a des partenaires officiellement supportés comme Cloudflare et Netlify qui ont une assez bonne documentation et où le déploiement est probablement assez fluide,
00:19:54mais je ne les ai pas utilisés.
00:19:56Si vous voulez le faire tourner sur votre propre VPS par exemple avec BUN il y a quelques instructions ici mais j'ai trouvé un peu difficile de les suivre ou j'ai rencontré des problèmes qui étaient tous solvables mais ça m'a définitivement pris du temps.
00:20:12Je pense qu'une fois qu'il y aura un bon guide pour déployer 10 stack start avec BUN ou Node sur un VPS le déploiement deviendra définitivement plus facile surtout si ce guide inclut des recommandations concernant certaines bonnes pratiques que vous devriez suivre ou des pièges potentiels que vous pourriez rencontrer.
00:20:29Mais comme mentionné vous pourriez définitivement aussi opter pour trois plus ici selon la façon dont vous voyez ça.
00:20:34Comme je l'ai mentionné tout ceci est subjectif et juste mon expérience,
00:20:38mes réflexions et évidemment je suis aussi intéressé d'entendre vos avis.
00:20:42Si vous avez fait le changement ou ce que vous pensez de Next.js et T3 Stack,
00:20:45si vous envisagez de changer ou si vous n'utilisez ni l'un ni l'autre et que vous utilisez plutôt une autre option.

Key Takeaway

TanStack Start offre une meilleure expérience développeur et sécurité de type que Next.js, mais Next.js reste plus mature avec un écosystème plus riche et des fonctionnalités intégrées plus complètes.

Highlights

TanStack Start est construit sur TanStack Router avec des fonctionnalités serveur ajoutées, tandis que Next.js est un framework React full-stack plus mature

Next.js a une meilleure compatibilité IA et un écosystème plus large, mais TanStack Start offre une expérience développeur plus fluide avec Vite

Next.js utilise les React Server Components et des directives 'use server/client', tandis que TanStack Start utilise des loaders et des fonctions serveur créées avec 'createServerFunction'

La mise en cache de Next.js est agressive et complexe, pouvant causer des différences entre développement et production, alors que TanStack Start a des paramètres par défaut plus simples

TanStack Start offre une sécurité de type à 100% pour le routage et TypeScript, supérieure à Next.js

Next.js excelle avec les batteries incluses (composant Image, internationalisation) et le déploiement facile sur Vercel

TanStack Start est toujours en release candidate avec quelques bugs, mais des applications production fonctionnent déjà sans problèmes

Timeline

Introduction et contexte de la comparaison

L'auteur présente son objectif de comparer TanStack Start et Next.js après avoir construit la même application de prise de notes avec les deux frameworks lors d'un livestream. Il établit plusieurs critères d'évaluation et précise que cette comparaison se concentre uniquement sur ces deux frameworks, même si d'autres options existent comme Remix, React Router, Nuxt ou SvelteKit. Il clarifie que TanStack Start est essentiellement TanStack Router avec des fonctionnalités serveur ajoutées, similaire à la façon dont Next.js est un framework React full-stack. L'auteur souligne également qu'il ne faut pas comparer Next.js avec React Vite + React Router si on n'a pas besoin de logique côté serveur.

Compatibilité IA et écosystème

Next.js obtient un avantage significatif en termes de compatibilité IA car les chatbots comme ChatGPT ont une meilleure connaissance de Next.js que de TanStack Start, qui est encore en release candidate. L'auteur recommande de fournir du contexte supplémentaire à l'IA via MCP, recherche web ou documentation pour compenser. Concernant l'écosystème, Next.js surpasse largement TanStack Start avec plus de tutoriels, vidéos YouTube, cours et packages disponibles. Les graphiques de téléchargements montrent que Next.js domine largement, bien que TanStack Start affiche une tendance à la hausse. Next.js fait partie de la stack par défaut que l'IA propose (Next.js, React, Tailwind, TypeScript), ce qui explique sa popularité accrue.

Facilité d'apprentissage et courbe d'apprentissage

L'auteur attribue deux plus aux deux frameworks mais pour des raisons différentes. Next.js avec l'app router est facile pour débuter avec une bonne documentation de démarrage, mais devient complexe avec les fonctionnalités avancées comme la mise en cache agressive sur différentes couches. TanStack Start a une barrière d'entrée plus élevée avec une documentation de démarrage moins claire et des concepts importants manquants comme la récupération de données, nécessitant aussi de consulter la documentation de TanStack Router qui peut sembler écrasante. Cependant, une fois cette barrière initiale franchie, TanStack Start devient plus facile à maîtriser sans les pièges cachés de Next.js. L'auteur note que la documentation de TanStack Start s'est largement améliorée mais garde encore un aspect de 'décharge de cerveau'.

Expérience développeur et performance

TanStack Start reçoit trois plus contre deux pour Next.js en termes d'expérience développeur. Les problèmes de Next.js incluent des comportements différents entre développement et production à cause du système de cache, obligeant à tester constamment en mode production. Le serveur de développement peut aussi être lent, même si la nouvelle version Turbopack améliore les choses, elle ne surpasse pas la configuration Vite de TanStack Start selon l'auteur. L'expérience avec TanStack Start est décrite comme extrêmement fluide, rapide et prévisible, sans comportement bizarre majeur malgré quelques petites particularités dues au statut de release candidate. L'auteur exprime clairement sa préférence pour l'expérience développeur de TanStack Start.

Routage et support TypeScript

Les deux frameworks utilisent une approche de routage basée sur les fichiers avec des conventions de nommage similaires bien documentées. Next.js propose des fonctionnalités complexes comme les routes parallèles qui peuvent être délicates. L'avantage majeur de TanStack Start est sa sécurité de type complète à 100% grâce à son routeur basé sur les fichiers, ce qui constitue un atout significatif. En termes de support TypeScript général, Next.js offre un très bon support mais TanStack Start va encore plus loin avec un support TypeScript encore meilleur, notamment pour les server actions, fonctions serveur et récupération de données. L'auteur recommande fortement l'utilisation de TypeScript et souligne que TanStack Start est particulièrement agréable à utiliser dans ce contexte.

Récupération de données et mutations

Next.js s'appuie principalement sur les React Server Components où les composants de page sont rendus uniquement sur le serveur, permettant d'inclure directement le code de récupération de données dans les composants sans propagation au client. TanStack Start adopte une approche différente avec un modèle de loader similaire à Remix, où les composants sont rendus côté serveur ET client. Les développeurs utilisent 'createServerFunction' pour marquer les fonctions comme étant exécutées uniquement côté serveur mais appelables depuis le client. Pour les mutations, Next.js utilise des server actions avec la directive 'use server', tandis que TanStack Start continue avec 'createServerFunction' combiné au hook 'useServer'. L'auteur mentionne que TanStack Start ajoutera bientôt le support des React Server Components, mais l'approche actuelle avec loaders et fonctions serveur continuera d'exister.

Mise en cache et complexité

La mise en cache est identifiée comme l'une des parties les plus difficiles de Next.js, avec une approche agressive et potentiellement complexe sur différentes couches. L'auteur promeut son cours Next.js qui couvre ce sujet en profondeur. Bien que les paramètres agressifs par défaut puissent offrir de bonnes performances, il est facile de se 'tirer une balle dans le pied'. TanStack Start a des paramètres par défaut plus raisonnables, moins agressifs et surtout cohérents entre développement et production. Il offre une mise en cache pour la navigation entre routes qui aide avec les performances sans essayer de tout mettre en cache partout. Cela signifie que les développeurs doivent potentiellement définir eux-mêmes de bons en-têtes de cache pour optimiser les performances, mais évite les problèmes complexes rencontrés avec Next.js.

Stabilité et maturité

L'auteur attribue deux plus aux deux frameworks pour la stabilité. Next.js est plus mature avec des centaines de milliers d'applications en production, mais a connu des problèmes de bugs ces dernières années, notamment des plantages du serveur de développement, bien que la situation se soit nettement améliorée. Les vulnérabilités de sécurité React mentionnées ne sont pas spécifiques à Next.js et pourraient aussi affecter TanStack Start à l'avenir. TanStack Start, toujours en release candidate, présente quelques problèmes comme des plantages bizarres, messages d'erreur étranges et comportements inattendus. Malgré cela, l'auteur a des applications en production comme buildmygraphic.com fonctionnant sans problèmes avec TanStack Start, justifiant ainsi l'attribution de deux plus malgré son statut moins mature.

Fonctionnalités intégrées et déploiement

Next.js excelle avec ses 'batteries incluses' comme le composant Image intégré et le support d'internationalisation, que TanStack Start n'offre pas actuellement. L'auteur note que des alternatives tierces existent mais si ces fonctionnalités sont importantes, Next.js est le meilleur choix. Pour le déploiement, Next.js obtient trois plus sur Vercel (développé par la même entreprise) avec une expérience super facile et fluide, et deux plus pour d'autres fournisseurs grâce aux améliorations récentes de la documentation. TanStack Start reçoit deux plus car la documentation d'hébergement est encore délicate, bien que des partenaires comme Cloudflare et Netlify aient une bonne documentation. Le déploiement sur VPS avec BUN pose quelques défis selon l'expérience de l'auteur. Il conclut en invitant les spectateurs à partager leurs expériences et opinions sur les deux frameworks.

Community Posts

View all posts