JavaScript est le langage le plus utilisé au monde. C'est aussi le plus mal compris. La plupart des développeurs apprennent un framework, React, Vue ou Angular, sans comprendre le langage en dessous. Ça fonctionne jusqu'au jour où ça ne fonctionne plus.
Un this qui change de contexte selon l'appel. Un Promise qui avale une erreur en silence. Une closure qui capture une variable mutée. Un forEach qui ignore les await. Ces bugs ne sont pas des bugs de framework. Ce sont des bugs de langage. Et ils coûtent des heures quand on ne comprend pas pourquoi.
Notre force : nous ne travaillons pas au-dessus de JavaScript, nous travaillons avec. Chaque composable Vue, chaque service NestJS, chaque utilitaire que nous écrivons repose sur une compréhension profonde du langage : prototypes, event loop, closures, coercion, modules ES. C'est cette maîtrise qui rend notre code fiable.
Le JavaScript d'aujourd'hui n'a rien à voir avec celui d'il y a 5 ans. Le langage évolue chaque année via le processus TC39, et les ajouts récents sont significatifs.
Modules ES natifs. Plus de CommonJS en 2026. L'import/export est natif dans tous les navigateurs et dans Node.js. Le tree-shaking fonctionne sans configuration. Le code est déclaratif et analysable statiquement.
Async/await mature. Promise.allSettled(), Promise.any(), top-level await, AbortController pour l'annulation. La gestion asynchrone est propre, lisible et contrôlable. Les callback pyramids sont un souvenir.
API navigateur puissantes. IntersectionObserver, ResizeObserver, Intl, structuredClone, navigator.sendBeacon, Web Animations API. Beaucoup de librairies npm peuvent être remplacées par des API natives, plus légères et plus rapides.
Temporal & Iterator Helpers. Les nouvelles API de dates et de manipulation d'itérateurs arrivent nativement. Fini la dépendance à moment.js ou lodash pour des opérations que le langage gère désormais seul.
Nous écrivons la majorité de notre code en TypeScript. Mais TypeScript compile vers JavaScript. Les types disparaissent au runtime. Ce qui reste, c'est du JavaScript.
Comprendre le prototype chain, c'est comprendre pourquoi instanceof échoue entre iframes. Comprendre la boucle d'événements, c'est comprendre pourquoi un await dans un forEach ne fait pas ce qu'on attend. Comprendre la coercion, c'est comprendre pourquoi [] == false est true.
TypeScript attrape les erreurs de type. Mais les erreurs de logique, de timing, de concurrence et de mémoire demandent une compréhension profonde de JavaScript. Les deux sont nécessaires.
ES2025+ systématique. Pas de polyfills quand le support navigateur est suffisant. Nous utilisons les API modernes du langage et nous ciblons des navigateurs récents. Le code est plus court, plus lisible et plus performant.
Zéro dépendance inutile. Avant d'installer un package npm, nous vérifions si une API native fait le travail. structuredClone au lieu de lodash.cloneDeep. URLSearchParams au lieu de qs. Intl.DateTimeFormat au lieu de moment. Moins de dépendances, moins de surface d'attaque, moins de dette.
Performance par défaut. Lazy loading natif, requestAnimationFrame pour les animations, IntersectionObserver pour le chargement différé, virtualisation des listes longues. La performance n'est pas un patch ajouté en fin de projet, c'est une contrainte de design dès le premier commit.
Node.js en production. Pour les backends, nous utilisons Node.js avec NestJS. Nous connaissons les patterns de la boucle d'événements : quand utiliser setImmediate vs process.nextTick, comment éviter de bloquer l'event loop, comment gérer les streams pour les fichiers volumineux sans exploser la mémoire.
Cette maîtrise du langage se voit rarement dans une plaquette. Elle se voit dans ce qui tient en production.
Vijile est l'exemple le plus net. Le moteur de détection tourne en Rust plutôt qu'en JavaScript, précisément parce que nous savons où JavaScript n'est pas le bon outil : une surveillance permanente en tâche de fond à moins de 1 % de CPU. L'interface, elle, est en Vue 3. Savoir quand ne pas écrire de JavaScript fait partie du métier.
Kabineo, Belho Xper et Fideneo reposent sur Node.js avec NestJS côté serveur. Files d'attente, tâches planifiées, génération de documents, intégrations tierces comme Stripe ou l'API SIRENE. Ce sont les endroits où une boucle d'événements bloquée ou un stream mal géré se traduisent par une application qui se fige, pas par un test rouge.
Ce site sert environ 150 articles, un glossaire et deux langues avec un temps de réponse serveur autour de 75 ms. Le JavaScript embarqué y est volontairement réduit au minimum.