Outil CLI
dream-num/univer avatar
dream-num/univer

Univer : construire une surface bureautique intégrable

dream-num/univer offre une implémentation open source exploitable en conditions réelles avec une structure réutilisable.

14 368 étoiles1 295 forksTypeScriptApache-2.0

En bref

De quoi s’agit-il ?
Analyse pratique de dream-num/univer, de son usage documenté et de ses limites.
À qui s’adresse-t-il ?
univer convient aux équipes qui ont précisément le besoin décrit dans le README et qui peuvent contrôler pnpm add @univerjs/presets @univerjs/preset-sheets-core ainsi que createUniver. Il convient moins à un usage qui exige des garanties absentes de la documentation.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement TypeScript, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le dépôt est un SDK, pas une application hébergée

dream-num/univer est un monorepo TypeScript qui conditionne Univer en un SDK open source pour créer des applications de bureautique dans un autre produit. Le README le décrit comme full-stack et isomorphe : la même architecture est destinée à prendre en charge les expériences de tableur, de document et de présentation dans le navigateur et sur Node.js. Les briques sont un système de plugins, un rendu basé sur Canvas, un moteur de formules et une API Facade. Le README précise qu'Univer n'est pas seulement un visualiseur de fichiers de tableur ; il positionne le SDK comme un framework pour construire une surface de productivité. Les cas d'usage listés dans le README incluent l'intégration d'éditeurs dans des produits SaaS, des outils internes, des flux BI et des applications d'IA, ainsi que le traitement de classeurs et de documents côté serveur.

Dans univer, le contrôle 1 se vérifie avec pnpm add @univerjs/presets @univerjs/preset-sheets-core et se lit avec createUniver. Le README décrit aussi FUniver : ce détail borne l’usage au scénario documenté. Pour une intégration, il faut observer la sortie de la commande, les erreurs et les fichiers effectivement produits. Une démonstration réussie ne prouve pas que les cas non décrits sont couverts. Le dépôt fournit un repère concret avec Canvas et API Facade, mais ne promet ni compatibilité universelle ni niveau de support qui ne serait pas écrit dans ses documents. Les chiffres de GitHub et la fréquence des versions donnent un contexte, pas une garantie de maintenance.

Conçu isomorphe, avec une API Facade unique

Le README avance trois affirmations structurelles : le rendu basé sur Canvas et un moteur de formules dédié sont censés garder les classeurs complexes réactifs ; chaque capacité est fournie comme un plugin composable, de sorte que des fonctions peuvent être ajoutées, supprimées, remplacées ou chargées à la demande ; et une API Facade unifiée couvre les classeurs, les plages, les formules et les documents dans le navigateur comme dans Node.js. Le mode headless est le côté Node.js de cette conception : le README décrit le traitement de classeurs et de documents côté serveur, le calcul de formules et l'automatisation sans interface. La même architecture est aussi désignée pour l'infrastructure d'IA, car la logique des classeurs et des documents peut tourner dans Node.js pour alimenter des agents et des flux côté serveur.

Dans univer, le contrôle 2 se vérifie avec pnpm add @univerjs/presets @univerjs/preset-sheets-core et se lit avec createUniver. Le README décrit aussi FUniver : ce détail borne l’usage au scénario documenté. Pour une intégration, il faut observer la sortie de la commande, les erreurs et les fichiers effectivement produits. Une démonstration réussie ne prouve pas que les cas non décrits sont couverts. Le dépôt fournit un repère concret avec Canvas et API Facade, mais ne promet ni compatibilité universelle ni niveau de support qui ne serait pas écrit dans ses documents. Les chiffres de GitHub et la fréquence des versions donnent un contexte, pas une garantie de maintenance.

Deux chemins d'intégration : le mode preset et le mode plugin

Le démarrage rapide donne deux façons de brancher Univer dans une application. Le mode preset est recommandé et utilise des ensembles de plugins choisis depuis le dépôt séparé univer-presets ; la commande montrée dans le README est `pnpm add @univerjs/presets @univerjs/preset-sheets-core`, suivie d'un appel à `createUniver` qui enregistre le preset de base des tableurs et crée un classeur. Le mode plugin est destiné à la composition manuelle : le README montre une commande `pnpm add` pour onze paquets `@univerjs/*`, puis la construction explicite d'une instance `Univer`, l'enregistrement de chaque plugin dans l'ordre et la création de l'API Facade via `FUniver.newAPI(univer)`. Les deux chemins exigent un conteneur de page ; le README donne un élément `<div id="app" style="height: 100vh"></div>`. Il indique aussi que tous les paquets `@univerjs/*` doivent rester sur la même version.

Dans univer, le contrôle 3 se vérifie avec pnpm add @univerjs/presets @univerjs/preset-sheets-core et se lit avec createUniver. Le README décrit aussi FUniver : ce détail borne l’usage au scénario documenté. Pour une intégration, il faut observer la sortie de la commande, les erreurs et les fichiers effectivement produits. Une démonstration réussie ne prouve pas que les cas non décrits sont couverts. Le dépôt fournit un repère concret avec Canvas et API Facade, mais ne promet ni compatibilité universelle ni niveau de support qui ne serait pas écrit dans ses documents. Les chiffres de GitHub et la fréquence des versions donnent un contexte, pas une garantie de maintenance.

Cibles de compatibilité et exigences d'exécution

Le README indique qu'Univer est compilé avec une cible Chrome 88 et vise à fonctionner sur Edge >=88, Firefox >=90, Chrome >=88, Safari >=14.1 et Electron >=12. Il repose sur `Intl.Segmenter` ; un polyfill comme `@formatjs/intl-segmenter` est donc recommandé si l'environnement d'exécution ne le fournit pas. Les outils de build recommandés sont Vite, esbuild ou Webpack 5 ; les outils qui ne prennent pas en charge le champ `exports` dans package.json, comme souvent Webpack 4, peuvent nécessiter un mappage de chemins supplémentaire. La couche de vues est construite sur React 18, prend en charge React 18 et 19 et offre une compatibilité minimale pour React 16.9 et 17. Univer headless exige Node.js >=18.17.0, tandis que le développement de ce monorepo exige Node.js >=22.18 et pnpm >=10.

Dans univer, le contrôle 4 se vérifie avec pnpm add @univerjs/presets @univerjs/preset-sheets-core et se lit avec createUniver. Le README décrit aussi FUniver : ce détail borne l’usage au scénario documenté. Pour une intégration, il faut observer la sortie de la commande, les erreurs et les fichiers effectivement produits. Une démonstration réussie ne prouve pas que les cas non décrits sont couverts. Le dépôt fournit un repère concret avec Canvas et API Facade, mais ne promet ni compatibilité universelle ni niveau de support qui ne serait pas écrit dans ses documents. Les chiffres de GitHub et la fréquence des versions donnent un contexte, pas une garantie de maintenance.

Tableurs, documents, présentations et Bases

Le tableau des capacités du README sépare les fonctions open source des extensions Univer Pro. Les tableurs sont décrits comme la surface la plus aboutie ; dans la colonne open source figurent les classeurs, les feuilles de calcul, les plages, la sélection, les formules, le formatage des nombres, le filtrage, le tri, la validation des données, le formatage conditionnel, les hyperliens, les commentaires, rechercher et remplacer, les notes, les tableaux, l'intégration de dessins et des plugins d'interface extensibles. Les documents couvrent un modèle de document riche, une interface d'édition, des listes, des hyperliens, des commentaires et l'insertion rapide. Les présentations sont décrites comme en développement actif, avec un modèle de données et des paquets d'interface. Bases est présenté comme un moyen de construire des expériences de données structurées personnalisées sur la même architecture de plugins, de commandes et de modèles. Le README ne donne ni dates de sortie ni indicateurs de maturité pour ces surfaces.

Dans univer, le contrôle 5 se vérifie avec pnpm add @univerjs/presets @univerjs/preset-sheets-core et se lit avec createUniver. Le README décrit aussi FUniver : ce détail borne l’usage au scénario documenté. Pour une intégration, il faut observer la sortie de la commande, les erreurs et les fichiers effectivement produits. Une démonstration réussie ne prouve pas que les cas non décrits sont couverts. Le dépôt fournit un repère concret avec Canvas et API Facade, mais ne promet ni compatibilité universelle ni niveau de support qui ne serait pas écrit dans ses documents. Les chiffres de GitHub et la fréquence des versions donnent un contexte, pas une garantie de maintenance.

Noyau open source, extensions Pro et licence

Ce dépôt contient le noyau open source et les plugins OSS propriétaires ; Univer Pro est développé séparément comme couche d'extension commerciale. Le README énonce des principes de frontière : les paquets OSS sont conçus pour être utiles seuls sous Apache-2.0, Pro n'est pas requis pour utiliser les API publiques du SDK OSS, les bogues et problèmes de sécurité dans les paquets OSS doivent être signalés et corrigés dans le dépôt OSS, et la documentation OSS ne doit pas laisser entendre que des fonctions réservées à Pro existent dans les paquets publics. La licence est Apache-2.0, copyright DreamNum Co., Ltd. depuis 2021. L'extrait de licence accorde une licence de droit d'auteur perpétuelle, mondiale, non exclusive, gratuite, sans redevance et irrévocable, une licence de brevet et des conditions de redistribution. L'extrait s'arrête avant les sections sur la garantie et la limitation de responsabilité ; le matériel source ne dit donc rien de la garantie, du support ou de la posture de sécurité. Ce sont des questions de vérification pour le texte complet de la licence et la politique de sécurité.

Dans univer, le contrôle 6 se vérifie avec pnpm add @univerjs/presets @univerjs/preset-sheets-core et se lit avec createUniver. Le README décrit aussi FUniver : ce détail borne l’usage au scénario documenté. Pour une intégration, il faut observer la sortie de la commande, les erreurs et les fichiers effectivement produits. Une démonstration réussie ne prouve pas que les cas non décrits sont couverts. Le dépôt fournit un repère concret avec Canvas et API Facade, mais ne promet ni compatibilité universelle ni niveau de support qui ne serait pas écrit dans ses documents. Les chiffres de GitHub et la fréquence des versions donnent un contexte, pas une garantie de maintenance.

Travailler avec le monorepo

Le guide du dépôt liste les répertoires packages/, examples/, common/, e2e/, tests/ et docs/, avec des README de paquet à côté de chaque paquet. Le développement commence par `pnpm install` et `pnpm dev` ; le tableau de commandes du README couvre `pnpm build`, `pnpm test`, `pnpm typecheck`, `pnpm lint`, `pnpm test:e2e` et `pnpm storybook:dev`. Les notes aux contributeurs renvoient à des documents internes sur la construction de paquets isomorphes, la stabilité des API, la contribution à la Facade API, les conventions de nommage, la correction de fuites mémoire et des TLDR d'architecture. Les canaux communautaires sont GitHub Discussions, Discord, Twitter/X et YouTube, et le README oriente les rapports de sécurité vers un document de politique de sécurité. Le README ne quantifie pas l'activité du projet ; les métadonnées du dépôt montrent 14 025 étoiles, 1 252 forks et 166 problèmes ouverts au moment de la rédaction.

Dans univer, le contrôle 7 se vérifie avec pnpm add @univerjs/presets @univerjs/preset-sheets-core et se lit avec createUniver. Le README décrit aussi FUniver : ce détail borne l’usage au scénario documenté. Pour une intégration, il faut observer la sortie de la commande, les erreurs et les fichiers effectivement produits. Une démonstration réussie ne prouve pas que les cas non décrits sont couverts. Le dépôt fournit un repère concret avec Canvas et API Facade, mais ne promet ni compatibilité universelle ni niveau de support qui ne serait pas écrit dans ses documents. Les chiffres de GitHub et la fréquence des versions donnent un contexte, pas une garantie de maintenance.

Conclusion éditoriale

univer convient aux équipes qui ont précisément le besoin décrit dans le README et qui peuvent contrôler pnpm add @univerjs/presets @univerjs/preset-sheets-core ainsi que createUniver. Il convient moins à un usage qui exige des garanties absentes de la documentation. Avant décision, vérifiez le flux FUniver sur un environnement isolé et examinez la sortie réelle.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté