|
Il y a quelques jours, Yan Holtz a publié un article provocateur : Outch. Alors ça y est. C’est la fin de Shiny ? On le sait tous. Il y a une fin à Shiny. Tous les langages finissent par mourir et être remplacés par d’autres langages. C’est une loi de la nature. D’ailleurs, j’ai une petite confidence à vous faire. Depuis plusieurs semaines, je travaille sur un nouveau projet : Je crée un SaaS. Et pour coder ce SaaS, j’ai décidé de ne PAS utiliser Shiny. Alors si même moi, qui fais du Shiny depuis 10 ans, qui ai monté une agence spécialisée 100% en Shiny, je décide de ne pas utiliser Shiny pour mon propre projet… c’est que c’est une techno dépassée ? Hm non. C’est juste que Shiny n’est pas fait pour ça. Et c’est exactement là que Yan se trompe. Shiny, juste un wrapper ?Yan présente Shiny comme un outil de dataviz parmi d’autres : On y trouve, de complexité croissante :
Il n’y a pas un outil qui est meilleur que les autres. Chaque outil a son usage dans son contexte. Par exemple, en tant qu’expert R et Shiny, j’utilise quand même Excel quasi-quotidiennement pour certaines tâches. Là où Yan se trompe, c’est qu’il définit Shiny comme un wrapper. Selon lui, c’est juste un moyen d’écrire du code R qui va magiquement générer du HTML, du CSS, et du JS. Et ce wrapper a un coût :
Shiny a des faiblesses, c’est vrai. Mais aucun de ces cinq points n’en fait partie. Mais Yan va plus loin. Selon lui, il n’y a plus d’intérêt d’utiliser Shiny aujourd’hui. Avec l’IA, autant utiliser directement React ou d’autres technos modernes. Dans le reste de cette newsletter, je vais vous expliquer :
Les outils de ShinyQuand vous créez une application Shiny, vous utilisez : 1. Le package htmltools facilite la personnalisation de l’interface utilisateur d’un projet Shiny en utilisant du code R pour générer du HTML, CSS, et JavaScript.C’est exactement la définition que donne Yan de Shiny : Ça permet d’utiliser du code R pour générer du HTML/CSS/JS. Et c’est vrai, 2. Le framework Bootstrap qui est importé par défaut pour les composants d’interface :
Mais en réalité, vous pourriez utiliser n’importe quel autre framework front-end : TailwindCSS, MaterialUI, ou même React. La preuve : Lancez cette appli minimaliste :
Inspectez le code source (CTRL+U) : Bootstrap 3.4.1 est chargé automatiquement. À présent, remplacez par :
Inspectez à nouveau. Bootstrap a disparu. Conclusion : Shiny est agnostique du framework CSS. Vous êtes LIBRE. Bootstrap est juste le choix par défaut. Et d’ailleurs, la communauté Shiny l’a bien compris :
Mais alors… Si Shiny ne fait qu’importer C’est quoi Shiny ? La vraie nature de ShinyShiny n’est PAS un framework généraliste (et c’est tant mieux). C’est ce qui différencie fondamentalement Shiny de React, Vue, Svelte, ou autres. 1. Shiny, un framework pour la DATA, pas pour l’UIShiny a été créé pour répondre à un besoin très spécifique : « Je veux permettre à des utilisateurs d’interagir avec des analyses de données complexes, sans qu’ils aient besoin de coder. » Ce besoin implique de :
Aucun framework JavaScript ne fait ça. React c’est peut-être top pour faire un Instagram, un Gmail, ou un dashboard marketing. Mais bon courage pour faire tourner un modèle de régression sur 1 million de lignes dans le navigateur… 2. Shiny, le framework full-stack avec R en backendReact, Vue, Svelte… ce sont avant tout des frameworks frontend :
Tandis que Shiny, c’est ce qu’on appelle un framework full-stack :
3. “Shiny est lent”C’est une des critiques de Yan : Shiny est lent. Je suis sûr que vous l’avez entendu ailleurs : R est lent. Ça m’énerve de lire ça… Ce qui est VRAIMENT lent, c’est la nature du travail qu’on fait avec R ou Shiny :
En JavaScript ce serait ENCORE PLUS LENT. Il n’y a pas d’optimisation pour le calcul numérique en JS. Pas de vectorisation. Pas de manipulation de gros volumes. Et surtout : Pas d’accès aux milliers de packages R spécialisés. Shiny n’est pas lent. C’est juste que Shiny fait des choses que les autres frameworks ne peuvent pas faire. 4. Le vraie génie de Shiny : La réactivitéOn a écarté les frameworks front. On l’a compris : On a besoin d’un serveur pour faire des calculs lourds. Alors quid d’un Python avec Django ? Ou Flask ? Ou FastAPI ? Quelle différence avec Shiny ? Shiny a un super-pouvoir unique : La réactivité full-stack. Concrètement, imaginez une appli toute simple avec :
Avec une API classique comme Flask :
Avec Shiny :
Shiny c’est un écosystème complet de réactivité :
Aucun framework n’a cet ensemble complet pour du calcul serveur. Oui, React a des hooks. Svelte a des runes. Mais ils gèrent la réactivité côté client uniquement. Et vous savez quoi ? Shiny est sorti en 2012. Alors que React est sorti en 2013. À l’origine, Joe Cheng (le Créateur de Shiny) s’était inspiré d’un autre framework JS (MeteorJS) pour créer Shiny. Quelques années plus tard, il dira : “All the cool stuff coming out of Facebook with React […] validates many of the ideas that Shiny was built on. It’s gratifying to see that those ideas that inspired me have taken hold.” Ce n’est pas React qui a inspiré Shiny. C’est Shiny qui a anticipé React. Alors, Shiny c’est dépassé ?Non. Shiny est ultra-spécialisé. Et dans son domaine, les applications data intensives avec des analyses de données, il n’a aucun concurrent sérieux. Pourquoi je n’utilise pas Shiny pour mon SaaS ? Parce que ce n’est pas le bon outil. Mais est-ce que j’utiliserais React pour créer un tableau de bord avec de la modélisation statistique ? Probablement pas. La bonne question n’est pas “Shiny ou React ?”, c’est plutôt : “Quel problème j’essaie de résoudre ?” Et si votre réponse implique des analyses de données complexes et de l’interactivité, Shiny reste le meilleur choix en 2026. D’ailleurs, notez qu’on n’a pas parlé d’IA ici. C’est certain que l’IA rend le développement en React plus facile. Mais quel intérêt si Shiny est le meilleur choix ? - Charles |
Chaque semaine, je partage mes retours d'expérience terrain autour de Shiny : Conception, performance, débuggage, architecture, UI/UX, déploiement, bonnes pratiques, ...