En bref / Points clés
La révolution 'server-first' a un problème
Next.js a fondamentalement remodelé le développement React moderne, en promouvant les React Server Components (RSCs) avec son App Router. Ce framework a indéniablement introduit des capacités de rendu 'server-first' puissantes dans le courant dominant, promettant des performances améliorées, un meilleur SEO et une récupération de données simplifiée directement au sein des composants. Son adoption généralisée a solidifié une nouvelle direction architecturale pour l'ensemble de l'écosystème React, modifiant les attentes en matière de construction d'applications web.
Cependant, cette révolution est arrivée avec un changement de paradigme significatif : une approche server-by-default. Les développeurs, longtemps habitués au modèle mental 'client-first' de React, ont soudainement vu toute leur application graviter autour des composants serveur. La logique interactive côté client nécessitait désormais des directives explicites `'use client'`, marquant un net écart par rapport aux modèles de développement établis et forçant une réévaluation de la conception des composants.
Cette méthodologie 'server-first' forcée, bien que puissante, a introduit une complexité considérable et une courbe d'apprentissage abrupte. L'environnement d'exécution implicite des composants, où le code pouvait s'exécuter soit sur le serveur, soit sur le client à moins d'être explicitement marqué, a souvent brouillé la division critique client-serveur. Le débogage et la compréhension du flux de données et d'exécution à travers cette frontière sont devenus un nouveau défi, souvent frustrant, pour de nombreux développeurs.
Les développeurs ont dû faire face aux implications de l'hydratation des composants client au sein d'un arbre rendu côté serveur, à la gestion des nuances de l'état partagé et à la navigation dans les complexités de la colocation des composants. La puissance inhérente des RSCs était claire, offrant des avantages de performance convaincants, mais le chemin prescrit pour les exploiter semblait prescriptif et, pour beaucoup, excessivement complexe, exigeant une réévaluation complète de l'architecture de leur application depuis la base.
Maintenant, un challenger significatif émerge, remettant directement en question cette hypothèse fondamentale "server-by-default". Ce nouveau concurrent propose une vision alternative, où l'adoption des React Server Components n'est pas une pierre angulaire architecturale obligatoire mais plutôt un choix explicite, 'opt-in'. Il vise à simplifier l'intégration de la puissance côté serveur, offrant une voie moins "effrayante" sans dicter la structure entière de l'application, promettant une expérience développeur plus intuitive.
Pourquoi la directive `'use client'` est devenue un signal d'alarme
La philosophie 'server-first' de Next.js, tout en popularisant les React Server Components (RSCs) avec son App Router, a introduit par inadvertance un défi architectural significatif : la directive `'use client'`. Cette chaîne de caractères apparemment anodine, requise en haut de tout composant nécessitant une interactivité côté client, est rapidement devenue une surcharge cognitive omniprésente. Les développeurs ont été confrontés à des décisions constantes, pesant les avantages de performance de l'exécution côté serveur par rapport à la nécessité des API de navigateur, des hooks comme `useState` ou `useEffect`, et des gestionnaires d'événements. Ce comportement serveur par défaut a imposé un opt-out explicite pour chaque élément interactif.
Parsemer `'use client'` dans un projet ressemblait souvent moins à une architecture intentionnelle et propre qu'à boucher des trous dans une toile rendue côté serveur. Chaque élément interactif, d'un simple bouton à un formulaire complexe, exigeait cette déclaration explicite pour échapper à l'environnement serveur. Cette approche réactive a conduit à une base de code où de nombreux petits composants client étaient fréquemment imbriqués dans des composants serveur plus grands, fragmentant la logique et rendant plus difficile de comprendre où un code spécifique s'exécuterait finalement. Le besoin constant de déclarer `use client` ressemblait moins à une conception qu'à un compromis nécessaire.
Pire encore, cela a estompé la division client-serveur fondamentale, favorisant un sentiment d'incertitude "effrayant" pour les développeurs. Le code pouvait s'exécuter dans des environnements inattendus, entraînant des bugs subtils ou des problèmes de sécurité. Un développeur pouvait tenter par inadvertance d'accéder à des API spécifiques au navigateur comme `window` ou `localStorage` sur le serveur, ou inversement, exposer une logique sensible réservée au serveur au client. Le débogage est devenu plus complexe lorsque l'emplacement d'exécution d'un composant n'était pas immédiatement évident, sapant la confiance dans le système.
Cette charge mentale constante et cette ambiguïté architecturale sont devenues le point douloureux central que TanStack vise à résoudre. TanStack a rendu les React Server Components "beaucoup moins effrayants" en repensant fondamentalement leur intégration. Au lieu de forcer une application entière à "orbiter autour des composants serveur", TanStack Start réimagine les RSCs comme une fonctionnalité explicite et opt-in. Il offre une séparation plus claire, traitant les composants serveur comme des données récupérées "aussi simplement que vous récupérez des données JSON" via un appel `renderServerComponent`. Cette approche garantit que la logique serveur réside strictement dans des fonctions serveur dédiées, tandis que les composants React standard restent largement axés sur le client, comme la plupart des développeurs s'y attendent intuitivement, ne nécessitant que trois nouvelles fonctions à apprendre pour l'intégration.
Une Philosophie Radicalement Simple : Adopter sur Option, Ne Pas Imposer
TanStack présente une philosophie radicalement différente pour les React Server Components, défiant directement le paradigme dominant du "server-first". Au lieu d'imposer le rendu côté serveur par défaut, TanStack Start défend une approche opt-in : les développeurs adoptent les RSCs uniquement lorsqu'un besoin spécifique se présente. Cela inverse le scénario, passant d'une exigence architecturale à un puissant outil d'optimisation.
Next.js a popularisé les RSCs avec son App Router, où les composants s'exécutent par défaut côté serveur, exigeant la directive `'use client'` pour l'interactivité. Ce modèle force souvent les développeurs dans une boucle de décision constante. TanStack, à l'inverse, maintient une position isomorphic-first, gardant les composants React standard centrés sur le client, sauf s'ils sont explicitement désignés pour des avantages côté serveur.
Cette contre-philosophie libère les développeurs, offrant un contrôle accru et réduisant considérablement la charge cognitive. Les TanStack Server Components ne nécessitent l'apprentissage que de trois nouvelles fonctions, s'intégrant parfaitement aux pratiques TanStack existantes. La logique serveur reste clairement confinée dans des "fonctions serveur" nommées, fournissant des limites explicites entre le code client et le code serveur.
Les développeurs récupèrent un composant serveur avec la même simplicité que la récupération de données JSON. On crée une fonction serveur, appelle `renderServerComponent`, et la charge via un chargeur de route TanStack standard. Ce flux de travail simplifié traite les charges utiles RSC comme de "simples données" au sein du TanStack Router, qui prend en charge nativement les flux pour une livraison efficace. Pour plus de détails techniques, explorez la documentation officielle Server Components | TanStack Start React Docs.
Cette division explicite client-serveur garantit que le code client est toujours rendu au sein des composants client, évitant les complexités d'une logique serveur et client entremêlée. La conception du framework autour de TypeScript offre une sécurité de type de bout en bout pour les fonctions serveur, la validation des entrées et les paramètres de route. Cette conception centrée sur le développeur favorise une adoption moins "effrayante" et plus intuitive des RSCs, minimisant la surcharge d'exécution (runtime overhead).
Récupérer un composant comme on récupère du JSON
L'approche de TanStack recadre radicalement les React Server Components. Au lieu d'un comportement par défaut omniprésent, TanStack traite les RSCs comme une primitive de données, que les développeurs récupèrent et rendent explicitement à la demande. Cela modifie fondamentalement le modèle mental, s'éloignant des impératifs "server-first" pour adopter une philosophie "adopter quand nécessaire".
Les développeurs intègrent les RSCs de manière transparente dans les flux de récupération de données existants. Au sein d'un loader standard de TanStack Router, on définit une 'fonction serveur' – un point d'accès distinct, uniquement côté serveur. Cette fonction utilise ensuite `renderServerComponent` pour générer la charge utile RSC, un peu comme un point d'accès API renvoie du JSON.
Considérez la familiarité de la récupération de données JSON. Les développeurs écrivent couramment `fetch('/api/data.json')` pour récupérer des informations structurées. TanStack étend ce modèle intuitif directement aux composants, faisant en sorte que les RSCs ressemblent à un autre type de charge utile de données plutôt qu'à un nouveau paradigme architectural.
Le parallèle conceptuel est frappant. Au lieu de `const data = await fetch('/api/data.json');`, un développeur pourrait écrire `const Component = await fetch('/api/my-component.rsc');`. Ce simple changement souligne l'engagement de TanStack à exploiter les paradigmes web établis pour les capacités côté serveur.
Ce choix de conception exploite délibérément l'expertise existante des développeurs en matière de récupération de données. TanStack Router gère nativement le streaming et l'hydratation de ces charges utiles RSC, les traitant de manière identique à toute autre sortie de loader. Le système attend, diffuse en continu (streams) et met en cache les composants comme du JSON.
Les limites explicites de TanStack garantissent que la logique serveur reste isolée au sein de 'fonctions serveur' clairement nommées. Cela contraste fortement avec la nature implicite de la directive `'use client'` de Next.js. Les développeurs n'ont besoin d'apprendre que trois nouvelles fonctions, intégrant les RSCs dans leur écosystème TanStack existant.
Les composants React normaux restent largement "client-first", s'alignant sur le développement React traditionnel. Cette philosophie "opt-in" réduit la charge cognitive, permettant aux développeurs d'adopter les avantages du rendu côté serveur de manière stratégique. TanStack Query améliore encore cela, gérant les composants rendus côté serveur pour une mise en cache côté client et une gestion des données robustes.
De manière cruciale, TanStack Start offre une sécurité de type de bout en bout, des entrées et types de retour des fonctions serveur aux paramètres de route. Cette intégration robuste de TypeScript assure la fiabilité. Le framework vise également un runtime minimal, offrant une efficacité sans la surcharge des solutions plus dogmatiques et "server-first".
La promesse des 'Trois Nouvelles Fonctions'
La promesse la plus audacieuse de TanStack pour ses Server Components réside dans leur surface API étonnamment minimale. Les développeurs n'ont besoin de maîtriser que trois nouvelles fonctions pour exploiter ce paradigme puissant, un contraste frappant avec les courbes d'apprentissage étendues souvent associées à l'adoption de frameworks "server-first". Cet engagement envers la simplicité redéfinit la manière dont les développeurs abordent les React Server Components, en faisant un outil accessible plutôt qu'un mandat architectural.
À la base, l'implémentation de TanStack introduit une API tripartite. Premièrement, les développeurs définissent des fonctions serveur explicites, délimitant clairement la logique côté serveur et la récupération de données. Ces fonctions sont des entités distinctes et nommées, garantissant que la logique serveur reste confinée et auditable. Deuxièmement, un utilitaire dédié `renderServerComponent` invoque ces fonctions serveur, transformant leur sortie en un React component streamable. Enfin, le système de loader robuste de TanStack Router intègre ces composants de manière transparente, les traitant comme n'importe quelle autre data primitive pour le transport et la consommation.
Cette élégante simplicité remet directement en question la courbe d'apprentissage exhaustive imposée par le Next.js App Router. L'adoption de Next.js exige de se familiariser avec un large éventail de nouveaux concepts et directives, chacun introduisant son propre ensemble de règles et de considérations architecturales. Les développeurs doivent internaliser les subtilités de :
- 1Layouts et templates
- 2UI de chargement avec `loading.js`
- 3Limites d'erreur avec `error.js`
- 4Groupes de routes pour l'organisation
- 5Middleware pour l'interception des requêtes
- 6Conventions de récupération de données à travers les composants serveur et client
Chacun de ces éléments contribue à une surcharge cognitive significative, forçant un changement fondamental dans la conception des applications. Le comportement par défaut de Next.js, axé sur le serveur, avec `'use client'` comme option de désactivation, nécessite une vigilance constante sur les limites des composants et les environnements d'exécution.
L'approche de TanStack, à l'inverse, étend les connaissances existantes plutôt que de les remplacer. Ces nouvelles capacités de composants serveur s'intègrent directement dans les écosystèmes familiers de TanStack Router et TanStack Query. Les développeurs exploitent des modèles établis pour le streaming, la mise en cache et la sécurité de type de bout en bout, garantissant que les RSCs ressemblent à une amélioration naturelle et additive. Cette stratégie minimise les perturbations, permettant aux équipes d'adopter les composants serveur de manière incrémentielle, en tirant parti de leur expertise TanStack existante sans un pivot architectural complet.
Rétablir la séparation client-serveur
TanStack redéfinit la relation client-serveur, établissant des limites claires et sans ambiguïté grâce à des fonctions serveur explicites. Cela contraste fortement avec la nature implicite du modèle par défaut de Next.js, axé sur le serveur, où une directive `'use client'` sert de porte de sortie plutôt que de choix de conception principal.
La logique serveur réside strictement dans ces fonctions serveur dédiées, clairement nommées pour indiquer leur objectif. Les React components normaux, à l'inverse, maintiennent leur posture traditionnelle axée sur le client, fonctionnant exactement comme les développeurs s'y attendent sans avoir besoin de directives spéciales. Les développeurs n'ont plus à faire face à la charge cognitive de décider constamment entre le serveur et le client au niveau du fichier ; l'intention devient immédiatement claire.
Cette division explicite génère des avantages significatifs tout au long du cycle de vie du développement. La maintenabilité du code s'améliore considérablement à mesure que les préoccupations se séparent proprement, rendant le raisonnement sur le comportement des composants simple. Les gains de sécurité sont substantiels : les API keys sensibles ou les database credentials ne quittent jamais l'environnement serveur, empêchant toute exposition accidentelle. Le débogage se simplifie, car les développeurs identifient les problèmes avec certitude, soit dans la fonction serveur, soit dans le composant client.
L'approche de TanStack favorise un modèle mental supérieur pour les équipes de développement. Au lieu d'un contexte d'exécution entrelacé, parfois ambigu, la plateforme offre des zones distinctes pour les opérations côté serveur et l'interactivité côté client. Cette clarté réduit les frictions d'intégration pour les nouveaux membres de l'équipe et améliore l'efficacité collaborative sur les projets complexes. Pour une compréhension plus approfondie des RSCs traditionnels, les développeurs peuvent consulter des ressources comme Server Components - Rendering - Next.js.
L'adoption des server components devient un choix délibéré et tactique, et non un mandat architectural omniprésent. TanStack permet aux développeurs de tirer parti des capacités côté serveur précisément lorsque cela est nécessaire, comme pour la récupération initiale des données ou les calculs backend, sans compromettre l'expérience côté client. Cette intégration ciblée évite le paradigme des "server components partout", favorisant une architecture d'application plus contrôlée et compréhensible.
Composite Components : Données Serveur, Contrôle Client
L'approche nuancée de TanStack concernant les React Server Components s'étend à des modèles sophistiqués, dont aucun n'est plus révélateur de sa philosophie que les Composite Components. Cette architecture avancée aborde directement les scénarios où le contenu rendu côté serveur exige une interactivité côté client sans brouiller la frontière cruciale client-serveur. Elle représente un choix de conception délibéré, permettant aux développeurs de tirer parti du meilleur des deux mondes avec un contrôle explicite.
Agissant comme un élégant mécanisme de slot, les Composite Components permettent au serveur de rendre efficacement l'enveloppe statique d'un composant, en récupérant et en fournissant toutes les données nécessaires. Simultanément, il laisse des "slots" désignés ouverts pour que le client puisse injecter dynamiquement des éléments interactifs, garantissant que les données fondamentales bénéficient des performances côté serveur tandis que les interfaces utilisateur complexes restent centrées sur le client.
Prenons l'exemple d'une page de liste de produits rendue côté serveur comme cas d'utilisation pratique. Le serveur récupère les détails du produit (noms, descriptions, prix) et construit l'interface utilisateur de base pour chaque article. Plutôt que d'intégrer directement un bouton interactif 'Add to Cart', le server component désigne un slot, qu'un pure client component remplit ensuite au moment du rendu, offrant une expérience entièrement interactive.
Ce modèle prévient méticuleusement la complexité courante d'un server component contenant un client component, ce qui conduit souvent à une hydratation ambiguë ou à des re-rendus inattendus dans d'autres frameworks. En fournissant des données et une structure depuis le serveur, et en permettant au client de *choisir* et de rendre ses propres composants interactifs dans des slots prédéfinis, TanStack maintient une séparation des préoccupations sans ambiguïté.
Une telle séparation explicite client-serveur simplifie le développement et le raisonnement. Les développeurs comprennent clairement quelles parties de leur application s'exécutent où, minimisant la charge cognitive associée à la détermination du type de composant. Cela renforce le principe fondamental de TanStack : tirer parti des capacités du serveur lorsque cela est bénéfique, mais toujours conserver un contrôle clair côté client là où l'interactivité est primordiale.
Cette architecture améliore non seulement les performances de chargement initial des pages en déchargeant la récupération des données et le rendu vers le serveur, mais elle offre également aux développeurs un contrôle granulaire sur l'interactivité côté client. C'est une démonstration puissante de la façon dont TanStack priorise l'expérience des développeurs et le comportement prévisible, même avec des fonctionnalités avancées comme les RSCs.
La Superpuissance de l'Écosystème : Router et Query
Le véritable génie de TanStack avec les React Server Components (RSCs) réside non seulement dans leur implémentation simplifiée et opt-in, mais aussi dans leur intégration native et profonde à travers l'ensemble de l'écosystème TanStack. Il ne s'agit pas simplement de rendre les RSCs disponibles ; il s'agit d'en faire des citoyens de première classe au sein d'une suite mature de bibliothèques éprouvées. Contrairement aux solutions fragmentées qui obligent les développeurs à assembler des frameworks de routage, de gestion d'état et de rendu côté serveur disparates, TanStack propose une approche unifiée et propriétaire qui transforme les interdépendances complexes en workflows fluides et cohérents.
Cette puissante intégration brille particulièrement avec TanStack Router, qui comprend et orchestre nativement la livraison des RSCs. Conçu pour être conscient des flux (stream-aware), le routeur traite les charges utiles des RSCs comme de la "simple donnée" au sein de ses fonctions de chargement robustes. Les développeurs définissent un chargeur de route, qui peut ensuite attendre, diffuser (streamer) et même mettre en cache ces sorties de composants serveur comme s'il s'agissait de toute autre donnée JSON. Ce changement architectural fondamental positionne le routeur comme l'orchestrateur central pour la livraison de fragments d'interface utilisateur dynamiques rendus côté serveur, assurant un transfert et un rendu efficaces des données sans solutions sur mesure.
Poursuivant cette capacité, TanStack Query apporte ses compétences renommées en gestion de données directement aux composants serveur eux-mêmes. Les clients peuvent désormais mettre en cache, recharger (refetch) et invalider des RSCs entiers en utilisant des clés et des modèles Query familiers. Imaginez une grille de produits rendue côté serveur, par exemple : elle peut être mise en cache côté client, rechargée automatiquement lorsque les données deviennent obsolètes, et mise à jour de manière transparente sans nécessiter un rechargement complet de la page ou une synchronisation manuelle complexe de l'état. Cela étend la puissante API déclarative de Query à des blocs entiers d'interface utilisateur, rendant la gestion des composants côté client robuste et intuitive.
Ce modèle profondément intégré offre également intrinsèquement une sécurité de type robuste de bout en bout, une caractéristique de la philosophie TanStack. Des fonctions serveur avec une validation stricte des entrées et des types de retour à la consommation de données côté client et aux paramètres de route, TypeScript assure la correction sur l'ensemble de la pile. Une telle sécurité de type complète minimise les erreurs d'exécution et renforce la confiance des développeurs, contrastant fortement avec les frameworks moins intégrés où les limites de type peuvent devenir poreuses.
La combinaison de TanStack Router et TanStack Query gérant les RSCs crée ainsi une expérience de développement inégalée. Cette intégration native et profonde assure une surcharge d'exécution minimale, réduit le code passe-partout (boilerplate) et fournit une architecture cohérente qui tire parti des modèles existants pour de nouveaux paradigmes puissants. Elle consolide la position de TanStack en tant que solution holistique et opinionated, offrant un avantage significatif par rapport aux approches moins intégrées qui introduisent souvent des frictions et une charge cognitive.
Le Verdict : Quand Next.js Gagne-t-il Encore ?
Next.js conserve sa position formidable dans l'écosystème React, en grande partie grâce à ses offres matures et son adoption étendue. Des millions de développeurs s'appuient sur ses modèles établis, sa documentation complète et une vaste communauté qui offre un support inégalé. Ce réseau massif se traduit souvent par une résolution de problèmes plus rapide et des solutions facilement disponibles.
L'expérience développeur (DX) intégrée de Vercel solidifie davantage l'attrait de Next.js. Ses déploiements sans configuration (zero-config), ses optimisations automatiques comme la gestion des images et des polices, et ses pipelines CI/CD fluides réduisent considérablement la surcharge opérationnelle. Pour les équipes qui privilégient l'itération rapide et un chemin sans friction vers la production, la plateforme étroitement couplée de Vercel offre souvent un avantage imbattable.
Certains scénarios privilégient toujours l'approche opinionated et server-first de Next.js. Les équipes à l'aise avec la structure inhérente de l'App Router, où les composants s'exécutent par défaut côté serveur, trouvent souvent qu'elle accélère le développement initial. Les projets nécessitant des fonctionnalités prêtes à l'emploi comme l'internationalisation intégrée, le routage avancé ou des stratégies robustes de récupération de données peuvent également bénéficier significativement de sa boîte à outils.
Cependant, ces avantages convaincants s'accompagnent de compromis. Next.js, en particulier lorsqu'il est associé à Vercel, peut introduire un certain degré de vendor lock-in, rendant la migration vers d'autres plateformes plus complexe ou coûteuse à long terme. Sa plus grande framework runtime size signifie également une empreinte plus substantielle par rapport à des alternatives plus légères comme TanStack Start, qui privilégie un runtime minimal et une plus grande flexibilité de déploiement.
De plus, la surcharge cognitive de la directive `'use client'` reste une considération pour certaines équipes. Les développeurs doivent peser la commodité d'un framework opinionated et entièrement intégré face au désir de contrôle granulaire et d'une architecture plus légère. Pour une exploration plus approfondie de ces différences architecturales et de leurs implications, consultez des ressources comme la comparaison officielle TanStack Start vs Next.js. En fin de compte, le choix optimal dépend des exigences spécifiques d'un projet, de l'expertise de l'équipe et des objectifs stratégiques à long terme.
L'avenir est hybride, pas Server-First
TanStack redéfinit la manière dont les développeurs abordent les React Server Components, en privilégiant la flexibilité et le contrôle plutôt que les impératifs. Sa proposition de valeur fondamentale réside dans l'adoption progressive : « adoptez-les quand vous en avez besoin ». Cela contraste fortement avec le paradigme server-first de Next.js, où les développeurs sont constamment confrontés aux directives `use client`.
Les futures applications web exigent des architectures hybrides, et non un mandat serveur unique pour tous. TanStack Start défend cette approche équilibrée, permettant aux développeurs d'intégrer les server components aussi élégamment que la récupération de données JSON. Cette philosophie favorise une séparation plus claire des préoccupations, garantissant que l'interactivité côté client reste déchargée de toute logique serveur inutile.
TanStack Start s'impose comme le framework définitif pour cette nouvelle vague de développement isomorphic-first. Son intégration transparente avec l'écosystème TanStack plus large, incluant Router et Query, offre une expérience développeur inégalée. Avec une type safety de bout en bout via TypeScript et un runtime minimal, il offre à la fois performance et prévisibilité.
Ce framework innovant crée des frontières client-serveur non ambiguës, simplifiant la logique d'application complexe. Au lieu de forcer une application entière à graviter autour des server components, TanStack Start propose une approche chirurgicale, appliquant la puissance des RSCs précisément là où ils offrent le plus d'avantages. C'est un retour à l'autonomie du développeur.
Découvrez le pouvoir du choix et du contrôle. Pour votre prochain projet, explorez TanStack Start et découvrez comment son approche intelligente et opt-in des React Server Components peut rationaliser le développement, améliorer les performances et ramener de la clarté à votre base de code. L'avenir du développement web est hybride, et TanStack Start mène la charge.
Foire aux questions
Quelle est la principale différence entre TanStack et Next.js pour les React Server Components (RSCs) ?
Next.js utilise un modèle 'server-first' où les composants sont des RSCs par défaut. TanStack Start utilise un modèle 'client-first' ou 'opt-in', où vous récupérez explicitement les server components comme des données, offrant plus de contrôle.
Les React Server Components sont-ils difficiles à apprendre avec TanStack ?
L'approche de TanStack est conçue pour être plus simple, en introduisant seulement trois nouvelles fonctions. Elle traite les RSCs comme une primitive de récupération de données, ce qui peut être moins intimidant que d'apprendre un nouveau paradigme architectural de zéro.
TanStack Start peut-il complètement remplacer Next.js ?
Pour de nombreuses applications, oui. TanStack Start offre une alternative puissante, type-safe et flexible. Cependant, les projets profondément intégrés à l'écosystème Vercel ou qui bénéficient de la structure opinionnée de Next.js pourraient toujours le préférer.
Que sont les 'Composite Components' dans TanStack ?
C'est un modèle où le serveur fournit les données et la structure, mais le client décide quels composants interactifs rendre dans des 'slots' désignés. Cela maintient une séparation claire de la logique serveur et client.