La fin de Shiny ? (non)


Il y a quelques jours, Yan Holtz a publié un article provocateur :

☠️ The end of Shiny

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 :

  1. Excel, pour faire des manipulations de données de base et quelques visualisations.
  2. Les outils BI : PowerBI ou Tableau, particulièrement utilisés par les consultants et analystes business.
  3. Les outils data science : Julia, Python, et R. Et donc Shiny naturellement.
  4. Puis les librairies JS, notamment D3.js qui est une librairie très puissante pour faire de la visualisation interactive.

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 :

  • Applications lentes
  • Design limité
  • Expérience utilisateur médiocre
  • Hébergement compliqué
  • Peu de choix de visualisations

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 :

  • Pourquoi Shiny ce n’est pas “juste un wrapper”
  • La vraie nature de Shiny (et pourquoi c’est un outil irremplaçable)
  • Le super-pouvoir de Shiny

Les outils de Shiny

Quand vous créez une application Shiny, vous utilisez :

1. Le package htmltools. D’après sa documentation :

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, htmltools est un outil fondamental dans l’utilisation de Shiny. Mais Shiny, c’est bien plus que ce package.

2. Le framework Bootstrap qui est importé par défaut pour les composants d’interface :

  • Styles préconfigurés
  • Composants/widgets par dizaines
  • Système de grilles pour positionner les éléments

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 :


ui <- fluidPage()
server <- function(input, output) {}
shinyApp(ui, server)

Inspectez le code source (CTRL+U) :

Bootstrap 3.4.1 est chargé automatiquement.

À présent, remplacez par :


ui <- div()

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 :

  • shinyWidgets::materialSwitch() utilise Material Design
  • shiny.react permet d’intégrer React directement
  • rhandsontable importe le composant JS handsontable

Mais alors…

Si Shiny ne fait qu’importer htmltools, puis Bootstrap…

C’est quoi Shiny ?

La vraie nature de Shiny

Shiny 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’UI

Shiny 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 :

  • Se connecter à des bases de données
  • Manipuler de gros volumes de données (100 MB, 1 GB, …)
  • Lancer des modèles statistiques lourds
  • Générer des visualisations complexes
  • Permettre l’exploration interactive

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 backend

React, Vue, Svelte… ce sont avant tout des frameworks frontend :

  • La réactivité se passe dans le navigateur, côté client
  • Les calculs sont donc limités par la puissance de la machine de l’utilisateur
  • Pas d’outillage spécifique pour la manipulation et modélisation de données

Tandis que Shiny, c’est ce qu’on appelle un framework full-stack :

  • La réactivité se passe côté client ET serveur
  • Les calculs lourds tournent sur le serveur
  • R est un outil fantastique en analyse de données (Python aussi… d’où Shiny pour Python)

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 :

  • Quand tu charges 500 MB de données en mémoire
  • Ou que tu ajustes un modèle sur des millions de lignes
  • Ou que tu crées un graphique avec des centaines de milliers de points

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 :

  • Input A : Filtre de dates
  • Input B : Filtre de région
  • Output 1 : Graphique (dépend de A et B)
  • Output 2 : Tableau (dépend de A)
  • Output 3 : KPI (dépend de B)

Avec une API classique comme Flask :

  • Tu changes A -> Tu dois manuellement implémenter la logique qui dit « Je recalcule Output 1 et Output 2 »
  • C’est toi qui gères les dépendances
  • Ça devient complexe avec 10+ inputs et 20+ outputs

Avec Shiny :

  • Tu changes A -> Le graphe de dépendances identifie automatiquement que Output 1 et Output 2 doivent être recalculés
  • Output 3 reste en cache
  • C’est automatique et garanti

Shiny c’est un écosystème complet de réactivité :

  • reactive() : Calculs mémorisés et automatiquement mis à jour
  • observe() et observeEvent() : Effets de bord
  • isolate() : Casser la réactivité intentionnellement
  • bindCache() : Mise en cache pour les calculs coûteux
  • invalidateLater() : Réactivité temporelle
  • req() : Gestion des dépendances manquantes

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

Charles Bordet

Chaque semaine, je partage mes retours d'expérience terrain autour de Shiny : Conception, performance, débuggage, architecture, UI/UX, déploiement, bonnes pratiques, ...

Read more from Charles Bordet