📨 #136: Next.js, Signals, Bling, Suspense, Server Components, useSyncExternalStore, Expo, Reanimated, Metro...
Salut à tous !
Cette semaine, le débat autour du modèle des signaux continue. On a aussi une belle release de Next.js qui dévoile un nouveau système de cache pour faciliter l'usage des Server Components sur un runtime Edge.
Beaucoup d'activité également coté React-Native, avec Expo 48, Expo Router 1.0, Expo Image 1.0, Reanimated 3.0, et l'arrivée des symlinks dans Metro!
💡 Consulter cette newsletter sur Twitter - format visuel 🎨
Pour me soutenir:
- 😘 Recommande la newsletter! Ça m'aide vraiment beaucoup!
- 💸 Sponsorise la newsletter ou sponsorise-moi
- 🧵 Retweet le dernier thread Twitter
- 📨 Réponds à cet email
- 💬 Rejoins le chat Discord
Ne manque pas le prochain email !
💸 Sponsor
Publiez plus rapidement votre contenu. Améliorez votre SEO.
Pour les éditeurs de contenu : destiné aux sociétés qui publient beaucoup de contenu et ont une importante stratégie SEO. Les éditeurs de contenu et équipes marketing peuvent publier le contenu sans aucune complexité technique (éditeur no-code), utiliser des blocks et des templates pré-conçus. Les mises en ligne de page sont instantanées, sans intervention d'un développeur. Les pages et les images sont optimisées grâce à Next.js afin d'obtenir d'excellent scores pour vos Core Web Vitals.
Pour les développeurs : solution plug and play pour votre application Next.js existante ou pour une nouvelle application. De nombreux avantages pour ce CMS :
- Conception de blocks réutilisables construits en React
- Meta données pour le SEO déjà définies et Sitemap géré automatiquement (module SEO)
- Création de vos propres settings custom en React
- Admin personnalisable en React
- Pas de système de routing nécessaire pour s'adapter au CMS
Visiter Suncel.io | 5mn vidéo démo
⚛️ React
Une belle release avec des nouveautés dont les devs Vercel nous avaient déjà donné un aperçu. La nouvelle API Metadata est utile pour le SEO, fonctionne bien avec le streaming SSR, les server components et le nouveau app directory. Les nouveaux Route Handlers ont l'air d'avoir une bonne ergonomie: il suffit d'exporter le verbe HTTP. Particulièrement excité par les nouveautés qui touchent au MDX (compiler Rust, Server Components), et qui devraient rendre les sites de contenus Next.js beaucoup plus léger à utiliser. Si j'ai bien compris, Next.js commence à utiliser une étape de codegen TypeScript pour les liens typés (en plus du plugin TypeScript). La compatibilité Turbopack avec Webpack loaders sera bien pratique pour faciliter la migration.
La plus grosse surprise pour moi, c'est l'introduction d'une API de cache directement intégrée à fetch()
: permet un peu la même chose que ISR mais avec une granularité plus fine, au niveau du composant, pour chaque requête. Il y a même un système de tagging. Next.js reste portable: le cache peut être hébergé sur votre propre infra, ou utiliser un simple LRU. L'intégration avec Vercel est facilitée. Un article dédié donne plus de détails et explique les limites du modèle ISR: Vercel Cache API: A progressive cache, integrated with Next.js. Voir aussi le thread de Sebastian Markbåge.
The Evolution of Signals in JavaScript
Cet article de Ryan Carniato (SolidJS) retrace l'histoire des signaux dans le frontend, en passant par KnockoutJS, MobX et bien d'autres solutions.
C'est le gros sujet du moment, alors je vous propose de lire vous-même les nombreuses discussions qui ont eu lieu sur Twitter cette semaine:
- Andrew Clark clarifie sa position et n'est pas fermé à introduire les signaux dans React. Le compiler React Forget pourrait compiler vers des signaux
- Miško Hevery explique comment les signaux évitent les problèmes de perf sur le props drilling.
- Evan You préfère un modèle muable compréhensible à un modèle immuable qui leak.
- Devon Govett nous rappelle pourquoi on a adopté le "unidirectional data flow" et met en avant quelques problèmes des signaux.
- Jordan Walke mentionne qu'ils ont considéré utiliser un modèle réactif à la création de React. Rejeté, car cela changeait la sémantique du langage.
- Dan Abramov explique que l'utilisateur s'attend à voir la même interface pour les mêmes données. Il explique l'intérêt d'utiliser des "raw values" (non enveloppées dans un conteneur).
- Ma position: je suis plutôt du même avis que l'équipe React et pense qu'il faut continuer d'innover sur le modèle actuel. J'espère qu'a terme JavaScript supporte mieux le modèle immuable, et que le compiler React Forget n'est qu'une étape de transition.
- 👥 Matt Carroll + Sean Keegan: 2 DevRels viennent de rejoindre l'équipe React.
- 📜 Module Extraction: The Silent Web Revolution: les frameworks React peuvent déjà séparer le code client/server dans un même module. Certains autres frameworks comme Qwik vont plus loin et peuvent maintenant extraire des closures, y compris les variables capturées. A voir si cette idée scale bien sur de grosses apps.
- 📜 Why useEffect May Not Be the Best Abstraction: critique de useEffect et comparaison avec Qwik.
- 📜 i18n translations in Next.js 13's app-dir for server/client components: l'auteur de Next-translate explique quelques difficultés rencontrées pour sortir la v2 de sa lib lié aux Server Components, mais rapporte quelques avantages intéressants comme la réduction du bundle js.
- 📜 React Is Holding Me Hostage: une critique plutôt juste de React qui vante les mérites des signaux et d'un modèle plus réactif.
- 📜 useSyncExternalStore - First Look: ce hook est plus utile qu'il n'en a l'air, ne passez pas a coté!
- 📜 Owncast v0.1.0 Retrospective - Frontend Web Rewrite: retour d'expérience sur le passage de Preact vers React/Next.js. Aspect "social" intéressant lié au passage de Preact à React.
- 📜 How to avoid tricky async state manager pitfalls in React
- 📜 React Libraries for 2023
- 📜 Storybook 7 Docs
- 📦 Suspense: boite à outil pour React Suspense, nouveau projet de Brian Vaughn.
- 📦 TanStack Bling: nouveau projet framework-agnostic dans la TanStack sur lequel devrait s'appuyer le prochain meta-framework TanStack Start.
- 📦 Forgetti: un dev n'a pas envie d'attendre le compiler React Forget alors il travaille sur son propre compiler.
- 📦 TanStack Query v5.0.0-alpha.0: preview de nouveautés v5 a venir: améliorations sur infinite query, optimistic updates, bundle size...
- 📦 Tinasaurus - Edit your Docusaurus site with TinaCMS: CMS qui s'intègre bien avec Docusaurus et permet l'usage de composants MDX.
- 📦 Sonner - an opinionated toast component for React
- 📦 nodl - framework for visual node graphs
- 📦 React Aria - February 2023 releases
- 📦 Radix UI releases
- 💬 Chat about the future for stitches
- 🎙️ Reactiflux Podcast - Behind the React Documentary with Ida Bechtle and Christopher Chedeau
- 🎥 Signals For Solid, Qwik And React
Ne manque pas le prochain email !
💸 Sponsor
Build and Run Synthetic Monitoring That Scales
You build it; you own it! It's a simple mantra that has driven software development for years. But how do you monitor complex React applications the best way?
- First: use Playwright to mimic user flows and guarantee that your app works.
- Second: be confident that the used APIs are up and running.
"Monitoring as Code" - is a new way to define, test & deploy your entire application monitoring directly from code.
- Code your monitoring setup and keep in version control
- Test your application in preview environments to avoid bugs and regressions
- Deploy your tests and start monitoring production
Bring your monitoring next to your code for free
📱 React-Native
Belle release. On retrouve les highlights de la beta:
- React Native 0.71.3 - React 18.2.0
- Améliorations Yoga (Flexbox) qui viennent avec React-Native
- EAS builders sous M1 par défaut
- Moteur Hermes par défaut
- Tous les modules Expo supportent Fabric - expérimental
Petites nouveautés depuis la beta:
- Expo Image 1.0 en version stable
- Expo Router 1.0 en version stable (blog post dédié)
La v3.0 de Reanimated vient de sortir en version stable, avec une nouvelle feature de Shared Elements Transitions (demo). Il est maintenant possible d'utiliser des shared values en inline styles. La librairie a été réécrite pour améliorer les performances, la DX et préparer l'arrivée de nouvelles features. La v3 est compatible avec Fabric et l'API Reanimated 2 pour faciliter la mise à jour, mais l'API Reanimated 1 est retirée.
- 📜 React Native App Clip: New Capabilities and Reduced App Size
- 💬 RFC: introduce reactNativeMetadata to package.json: propose d'ajouter des meta-données dans package.json pour diverses raisons (apps + libraries).
- 💬 RFC: Lazy bundling: pour démarrer son app plus vite en dev grâce aux dynamic imports.
- 📦 Metro 0.75.1: support expérimental des symlinks et package "exports"!
- 📦 Restyle 2.4: nombreuses améliorations de performance sur la librairie de styling de Shopify
- 📦 Dank Style (alpha): nouvelle librairie de styling universelle pour Next.js et React-Native.
- 👀 Expo + React-Native Server Components demo: ça fait un moment que je vous bassine avec ça, et Evan Bacon vient de sortir une première démo qui montre que c'est possible!
- 👀 BottomSheet - web support: PR mergée, ça arrive dans la v5
- ⚠️ Fastlane - Update immediately to avoid locked Apple ID account
- 🎙️ The React Native Show, Coffee Talk #8 - State of React Native
- 🎥 A Beginner's Guide to 3D Animations in React Native with three.js
- 🎥 How to build an Expo Library using Native Modules
🧑💻 Jobs
🧑💼 Passionfroot - Senior Full-stack Engineer (Remix) - €160k+, Berlin/remote
Passionfroot's mission is to empower the independent businesses of tomorrow via YouTube, Podcasts, Social Media, and Newsletters. Join us in building a tool that will empower creators globally to build scalable, sustainable businesses.
🧑💼 Shotgun - Senior Full Stack Engineer - 60-75k€ + BSPCE
Shotgun est la billetterie des évènements electro. Nous recherchons des devs expérimentés pour travailler sur une stack moderne: React, React-Native, Typescript, GraphQL, NextJS, PgSQL, Vercel...
🧑💼 Premier Octet - Développeurs(euses) React - Paris
Nous cherchons des développeurs(euses) JavaScript passionnés. Vous interviendrez en développement sur des projets variés et motivants, à la fois serveur et front (React, Nest, Next), et éventuellement mobile (React Native).
🧑💼 Teale - Mobile Software Engineer - 50-60k - Paris/Remote
Teale recrute un dev mobile React-Native / TypeScript pour travailler sur une app à fort impact dédiée à la santé mentale.
💡 Comment publier une offre d'emploi ?
🏢 Vous recrutez en CDI ou freelance? Contactez-moi!
🇫🇷 En français
- 🎥 Gérer l'Affichage Conditionnel en React
- 🎥 NextJS Version 13.2 - Test des nouveautés
- 🎥 Next JS Project : Installation et Premier Pas
💡Tu peux m'envoyer ton contenu: sebastien@thisweekinreact.com !
🔀 Autre
- Babel 7.21: support TypeScript 5.0 et decorators
- Angular v16.0.0-next.0: signals
- Deno 1.31
- Vitest 0.29
- Turborepo 1.8
- Mock Service Worker 1.1
- Bun docs available
- SpiderMonkey - JavaScript Import maps - Introduction
- Ezno - now Open-Source
- Getting Started with Style Queries
- Chrome’s Headless mode just got a whole lot better!
- Safari Technology Preview 164
- Let's build a Chrome extension that steals everything
🤭 Fun
A plus 👋
Ne manque pas le prochain email !