[{"channel_id":1068453571,"post_id":7040,"date":1793109601000,"forwards":"1","views":"103","text":"<b>Deploy with Void<\/b><br><br>Introducing Void: an open-source SDK, CLI, and self-hosted platform for building full-stack Vite apps and deploying them to Cloudflare.<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/blog.cloudflare.com\/deploy-with-void\/\">https:\/\/blog.cloudflare.com\/deploy-with-void\/<\/a>","text_length":200,"media":{"root":"\/013\/gBsAAMNOrz8AAAAALQHN6bfD738.XA9rGywpjFJNqfLIXW5xywQ.Aj-vTsMAABuAauC7kTlFf35tJnuJaonYIHfR6UA","photo":{"thumbs":{"m":{"w":320,"h":168,"hash":"veJfbXaGXSyvZklFHXK3kA&ts=1793167241"},"x":{"w":800,"h":419,"hash":"1YnfFmShEWIL1B4btNv_Yg&ts=1793167241"},"y":{"w":1200,"h":628,"hash":"ICE_CtXFoQNQu5vISrufYQ&ts=1793167241"},"i":{"bytes":"AVACg|DY\/E0tNKKTz\/OlCgdKAAsB1oDZHpTXyBnApkLKRhFAFK+o7aXJqKKKYiv9p\/2f1pftH+z+tFFZ3ZryoXz\/APZ\/WgSgdFxRRRdisg87\/Z\/Wiiii7FZH\/9k="}}}}},{"channel_id":1068453571,"post_id":7039,"date":1793100001000,"forwards":"2","views":"133","text":"<b>Changing package managers doesn\u2019t remove your npm registry dependency<\/b><br><br>npm is both a command and a package registry. Learn what switching to pnpm or Bun changes, and how caches, lockfiles, and mirrors affect failed installs.<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/flaviocopes.com\/npm-registry-package-manager\/\">https:\/\/flaviocopes.com\/npm-registry-package-manager\/<\/a>","text_length":279,"media":{"root":"\/013\/fxsAAMNOrz8AAAAALQHN6bfD738","photo":{"thumbs":{"m":{"w":320,"h":168,"hash":"SBZ_FwMISWu4I-RfYWWuGg&ts=1793167241"},"x":{"w":800,"h":420,"hash":"KyD3giEG2L1A-Z6RT2caCA&ts=1793167241"},"y":{"w":1200,"h":630,"hash":"UXX7LTBwVOSyCx4j07XygA&ts=1793167241"},"i":{"bytes":"AVACg|DSe5COV8uQ47hcipgcgH1qvJbB5C\/zc+hpPsqnqGOfce\/+NAFonFN3D1pFjCJtBP1zzQc5wB+NADsiigD60UAHPrS0UUAFFFFABRRRQB\/\/2Q=="}}}}},{"channel_id":1068453571,"post_id":7038,"date":1793088901000,"forwards":"3","views":"105","text":"<b>The complete guide to Void: full-stack Vite apps with Hono and Cloudflare<\/b><br><br>Build and deploy full-stack Vite apps with Void, Hono, React, and Cloudflare D1. Learn typed routes, forms, migrations, authentication, and team hosting.<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/flaviocopes.com\/void\/\">https:\/\/flaviocopes.com\/void\/<\/a>","text_length":259,"media":{"root":"\/001\/fhsAAMNOrz8AAAAAXEVBFl2y_Do.4w9rG9akjFKuNvIyLqs5eQQ.Aj-vTsMAABt-auBrlw7w0H8ofy1WQMSLjMbFXWA","photo":{"thumbs":{"m":{"w":320,"h":168,"hash":"NAWZMvOeF3ksj7kyZfNBPA&ts=1793167241"},"x":{"w":800,"h":420,"hash":"UxNLfoZn4cu0t1YFvsV98Q&ts=1793167241"},"y":{"w":1200,"h":630,"hash":"5-TD2Z_YFSlHe7B2lTY3tA&ts=1793167241"},"i":{"bytes":"AVACg|DQmvI4XKuGyOw78H\/DFI14F+9E4+VmPTjb17\/5zTpYVkcs0O44253Y4NILWNx86MOCvLk5B696AJEmVlyQUOcEN1BqTrUQRIlCqDjPc5qOe3mlkVkuXiA6qB15+tAFjJ3Yxx60U3DeZ1OKKAH8+tLRRQAUUUUAFFFFAH\/\/2Q=="}}}}},{"channel_id":1068453571,"post_id":7037,"date":1793023201000,"views":"54","text":"<b>Typography That Leaves a Trace: Building Scroll-Driven Ghost Trails with GSAP<\/b><br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/tympanus.net\/codrops\/2026\/10\/13\/scroll-driven-ghost-trails\/\">https:\/\/tympanus.net\/codrops\/2026\/10\/13\/scroll-driven-ghost-trails\/<\/a>","text_length":146,"media":{"root":"\/00d\/fRsAAMNOrz8AAAAAdJMHftFvuvY","webpage":{"url":"https:\/\/tympanus.net\/codrops\/2026\/10\/13\/scroll-driven-ghost-trails","type":"photo","title":"Typography That Leaves a Trace: Building Scroll-Driven Ghost Trails with GSAP | Codrops","site_name":"Codrops","display_url":"tympanus.net\/codrops\/2026\/10\/13\/scroll-driven-ghost-trails","description":"A walkthrough of how rippling letters and their outlined copies come together into a scroll-driven trail using Canvas 2D, GSAP and Three.js.","thumbs":{"m":{"w":320,"h":240,"hash":"kITws7ZzRLWFTllfaouX8w&ts=1793167241"},"x":{"w":800,"h":600,"hash":"jB0Oet-so4CvDu0xtvt15g&ts=1793167241"},"y":{"w":1200,"h":900,"hash":"UUZVWkZn_bhyQiF18oqDqg&ts=1793167241"},"i":{"bytes":"AeACg|DNZwpwc0nmr6GmSffNJsOM0rGjk76EgkGe9T52x+Y6HbnGapgE9BmpJSQqoTkjrRYXOx5kV24BGaKijHziik0XFtoJPvmm5qfAPUCjC+g\/Ki4nB3IAxHQ4q7ZyxRxOJQdx+6yrk1DhfQflSgL6D8qdxcjF2A3KhQQCD97r3opRtBztGfpRSbLjGyP\/2Q=="}}}}},{"channel_id":1068453571,"post_id":7036,"date":1792936802000,"forwards":"1","views":"256","text":"<b>Why WebMCP matters<\/b><br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/blog.yoav.ws\/posts\/why_webmcp_matters\">https:\/\/blog.yoav.ws\/posts\/why_webmcp_matters\/<\/a>","text_length":66,"media":{"root":null,"webpage":{"url":"https:\/\/blog.yoav.ws\/posts\/why_webmcp_matters","type":"article","title":"Why WebMCP matters","site_name":"blog.yoav.ws","display_url":"blog.yoav.ws\/posts\/why_webmcp_matters","description":"Why am I investing time and effort into WebMCP?"}}},{"channel_id":1068453571,"post_id":7035,"date":1792850403000,"forwards":"5","views":"647","text":"<b>JPEG XL vs AVIF for web use-cases<\/b><br><br>JPEG XL has landed, but how does it compare?<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/jakearchibald.com\/2026\/jpeg-xl-vs-avif\/\">https:\/\/jakearchibald.com\/2026\/jpeg-xl-vs-avif\/<\/a>","text_length":128,"media":{"root":"\/013\/exsAAMNOrz8AAAAALQHN6bfD738","photo":{"thumbs":{"m":{"w":320,"h":160,"hash":"XjmetOewJPm0_sze6yjhfQ&ts=1793167241"},"x":{"w":800,"h":400,"hash":"Tq8swVxBjMfE9zDu-4-Hrw&ts=1793167241"},"y":{"w":1280,"h":640,"hash":"Uu1lkpjuZ3sAG-0KLtLVuw&ts=1793167241"},"w":{"w":1380,"h":690,"hash":"BzaVl4SWkVFW0nK1TvupEg&ts=1793167241"},"i":{"bytes":"AUACg|BI54XJBIRiR8pHWmokDFzMw2rnbzjPWojbowCkH86fDCA4DDjHAq3Ta1GyRI7fAZME\/Lj5ue3\/ANf8quRiONCUIYAcfX3\/AEqGSOZU2J5YDYwc+\/0+lVhLcKxy2BnsBUCNBnJiJKcjuKKpvLcxE7JCAfUA0UldDZEZXHOegp8TNJJgseBnIoorolsxlhFLsQzv8uMfN\/n0qreM0VwFVuMDsKKK5xMerF8Z9BRRRQ9yT\/\/Z"}}}}},{"channel_id":1068453571,"post_id":7034,"date":1792764002000,"forwards":"3","views":"216","text":"<b>TanStack Start 1.0 is Stable<\/b><br><br>TanStack Start 1.0 is stable and ready for production.<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/tanstack.com\/blog\/tanstack-start-1-0\">https:\/\/tanstack.com\/blog\/tanstack-start-1-0<\/a>","text_length":130,"media":{"root":"\/003\/ehsAAMNOrz8AAAAAjlbK98rimU4","photo":{"thumbs":{"m":{"w":320,"h":180,"hash":"DBHG4tumCTgfnEJRr8vAow&ts=1793167241"},"x":{"w":800,"h":450,"hash":"1tgt9EyQZrFnzjK7JDrQnw&ts=1793167241"},"y":{"w":1280,"h":720,"hash":"fD2FgfAQiTjxC6x11Upl3Q&ts=1793167241"},"w":{"w":1920,"h":1080,"hash":"ZVVBF0XBwrbA3eALhhnvxg&ts=1793167241"},"i":{"bytes":"AXACg|DJpQMkCkqaGQIjrjLHpgUAP8k+V9xt304qseDVwyZJIhbPXp9f8\/hUE8m8gAYxnjFJCuRUUUUxhQDjpRRQA7e\/99vzppJJyTn3oooAKKKKAP\/Z"}}}}},{"channel_id":1068453571,"post_id":7033,"date":1792754401000,"views":"192","text":"<b>Top Accessibility Errors in Production and How to Avoid Them<\/b><br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/www.sitepoint.com\/top-accessibility-errors-in-production\/\">https:\/\/www.sitepoint.com\/top-accessibility-errors-in-production\/<\/a>","text_length":127,"media":{"root":"\/011\/eRsAAMNOrz8AAAAARADLqKcEz7s","webpage":{"url":"https:\/\/sitepoint.com\/top-accessibility-errors-in-production","type":"photo","title":"Top Accessibility Errors in Production and How to Avoid Them","site_name":"Sitepoint","display_url":"sitepoint.com\/top-accessibility-errors-in-production","description":"The same accessibility errors have topped WebAIM\u2019s report for seven years running. Here\u2019s what they are, why they keep shipping, and how to catch them before release.","thumbs":{"m":{"w":320,"h":180,"hash":"FmOFpd2VaCOVV-tS6NFtVA&ts=1793167241"},"x":{"w":750,"h":422,"hash":"dMnMu3d6Q-56cIbEER5SUQ&ts=1793167241"},"i":{"bytes":"AXACg|DYqu08gJAt3P4ipz0ppBYnBHFMCH7RN\/z7P+Yp0c0jthoWQepIp7yJHgSMATUEtwyyOqhPlAyT36f400riuWqKZFIJI1cdxmikFx9HPrRRQMCM9agktkkcscgnrjvRRQnYRKqhVAAwBRRRQB\/\/2Q=="}}}}},{"channel_id":1068453571,"post_id":7032,"date":1792677601000,"forwards":"2","views":"276","text":"<b>className Considered Harmful<\/b><br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/mattrothenberg.com\/notes\/classname-considered-harmful\/\">https:\/\/mattrothenberg.com\/notes\/classname-considered-harmful\/<\/a>","text_length":92,"media":{"root":"\/003\/eBsAAMNOrz8AAAAAjlbK98rimU4","webpage":{"url":"https:\/\/mattrothenberg.com\/notes\/classname-considered-harmful","type":"photo","title":"className Considered Harmful","site_name":"Matt Rothenberg","display_url":"mattrothenberg.com\/notes\/classname-considered-harmful","description":"The cost of accepting className on system components.","author":"Matt Rothenberg","thumbs":{"m":{"w":320,"h":168,"hash":"MiqgUC3oEYzwOQP7eKxhCw&ts=1793167241"},"x":{"w":800,"h":420,"hash":"xzM2_NZ81RA_tGBlD-l-Vw&ts=1793167241"},"y":{"w":1200,"h":630,"hash":"MCPGTGU2dxMk0ReiqyJuYQ&ts=1793167241"},"i":{"bytes":"AVACg|DLQgHJUMPQ0+N41PzxBuPUioxS0AKCvdAeMdT19acrxgHMKnjH3j19aZj+XpRj+XpQAhFFKe\/+FFADQcdqXcMfd7UUUAG7PajcBn5aKKAAtntRRRQB\/9k="}}}}},{"channel_id":1068453571,"post_id":7031,"date":1792668002000,"forwards":"2","views":"99","text":"<b>What\u2019s New in React 19.3 and How It Changes UI Development<\/b><br><br>Explore React 19.3, including View Transitions, Fragment Refs, and browser-aware rendering, with practical examples and common pitfalls.<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/jsdev.space\/react-19-3\/\">https:\/\/jsdev.space\/react-19-3\/<\/a>","text_length":229,"media":{"root":"\/00d\/dxsAAMNOrz8AAAAAdJMHftFvuvY","photo":{"thumbs":{"m":{"w":320,"h":200,"hash":"DOF64xCsfwofFLZyi0VQGg&ts=1793167241"},"x":{"w":800,"h":500,"hash":"dmAAUIZtcWQjYevMKtE5JQ&ts=1793167241"},"i":{"bytes":"AZACg|DXJxR1ooAxQAUdKTv19qXFABRRRQAtJS0UAJjnrRS0UAFFFFAH\/9k="}}}}},{"channel_id":1068453571,"post_id":7030,"date":1792656901000,"views":"87","text":"<b>Recursion is DEAD and HTML killed it<\/b><br><br>There\u2019s a new web platform feature flighting in Chromium called Declarative Partial Updates. This proposal adds a new  element which enables out-of-order streaming of content. Rather than the traditional way of building the HTML you need on the server, or sending JSON down to a JavaScript framework, you can staple HTML onto the initial response and use the<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/daverupert.com\/2026\/10\/html-recursion\/\">https:\/\/daverupert.com\/2026\/10\/html-recursion\/<\/a>","text_length":444,"media":{"root":null,"webpage":{"url":"https:\/\/daverupert.com\/2026\/10\/html-recursion","type":"article","title":"Recursion is DEAD and HTML killed it","site_name":"Dave","display_url":"daverupert.com\/2026\/10\/html-recursion","description":"There\u2019s a new web platform feature flighting in Chromium called Declarative Partial Updates. This proposal adds a new <?marker> element which enables out-of-order streaming of content. Rather than the traditional way of building the HTML you need on the server, or sending JSON down to a JavaScript framework, you can staple HTML onto the initial response and use the <template for=\"\"> syntax to inject that content into the <?marker name=\"\"> placeholder.","author":"Dave Rupert"}}},{"channel_id":1068453571,"post_id":7029,"date":1792591203000,"forwards":"4","views":"92","text":"<b>Scroll-Triggered Animations Debugger (DevTools Extension)<\/b><br><br>I\u2019m extremely pleased to announce the release of Scroll-Triggered Animations Debugger, a DevTools extension to visualize and debug CSS Scroll-Triggered Animations.<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/www.bram.us\/2026\/10\/14\/scroll-triggered-animations-debugger-devtools-extension\/\">https:\/\/www.bram.us\/2026\/10\/14\/scroll-triggered-animations-debugger-devtools-extension\/<\/a>","text_length":311,"media":{"root":"\/00c\/dRsAAMNOrz8AAAAAyftKRtvKeRA","photo":{"thumbs":{"m":{"w":320,"h":208,"hash":"a28cAyll5qMI-MQSSRlApg&ts=1793167241"},"x":{"w":800,"h":520,"hash":"rHwAqCcXAlJ8LjNjYdSPug&ts=1793167241"},"y":{"w":1280,"h":832,"hash":"JAD83LWsntcQebbFm_lByQ&ts=1793167241"},"w":{"w":2560,"h":1664,"hash":"u39ZmmzUj49M0NkD9UEv2Q&ts=1793167241"},"i":{"bytes":"AaACg|DYxSY+tMmV2iIjxv7Z6daS3SRIgspBbJ5H1oAePrRSCndqAEFFKOlFAC0tNIGegpMD0FAD6aTzikwPQUYHoKAHUUgAz0FFAH\/\/2Q=="}}}}},{"channel_id":1068453571,"post_id":7028,"date":1792581602000,"forwards":"7","views":"455","text":"<b>Building a Fancy Scrollspy Using Modern CSS<\/b><br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/blog.master.dev\/building-a-fancy-scrollspy-using-modern-css\/\">https:\/\/blog.master.dev\/building-a-fancy-scrollspy-using-modern-css\/<\/a>","text_length":113,"media":{"root":"\/002\/dBsAAMNOrz8AAAAA-0QLDSDqzdw","photo":{"thumbs":{"m":{"w":320,"h":168,"hash":"O3jRpJBoE3VnLSwxd8o9UQ&ts=1793167241"},"x":{"w":800,"h":420,"hash":"0QqbM5n2CewbJ3lKt4umxg&ts=1793167241"},"y":{"w":1200,"h":630,"hash":"WeMzLRHI27PJGGFS3lXfDw&ts=1793167241"},"i":{"bytes":"AVACg|Cu3JxT41wM0xRuNT7fl4q2JFa6PFUsD1q\/JBnkiqsu1CVA5qRkNFFFIDVUbRkVDNO6jg0UU2BUeZ2OCaYCO4zRRQAZTnCt\/wB9f\/WooopAf\/\/Z"}}}}},{"channel_id":1068453571,"post_id":7027,"date":1792570502000,"forwards":"3","views":"179","text":"<b>Fit height to background pattern size with calc-size()<\/b><br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/ishadeed.com\/article\/fit-height-background-pattern-calc-size\/\">https:\/\/ishadeed.com\/article\/fit-height-background-pattern-calc-size\/<\/a>","text_length":125,"media":{"root":"\/002\/cxsAAMNOrz8AAAAA-0QLDSDqzdw","photo":{"thumbs":{"m":{"w":320,"h":160,"hash":"9kBQt-P4UolrUH-62OvJRA&ts=1793167241"},"x":{"w":800,"h":400,"hash":"SU5_ZQ-jc3YrOMfmAXLdpA&ts=1793167241"},"y":{"w":1280,"h":640,"hash":"CluCOzf3UsHJwkJfoM0w0A&ts=1793167241"},"w":{"w":1500,"h":750,"hash":"Oy_s-PDgd8Ua0MnTEPX6-A&ts=1793167241"},"i":{"bytes":"AUACg|DVLqOpo3rnqKCoJzz+Zo2D3\/M0xCSSrHEZDyBRBIs0QkHANO2gAjnn3oAx0JoAUiij8c0UAFFFFABRjNFFABRRRQB\/\/9k="}}}}},{"channel_id":1068453571,"post_id":7026,"date":1792504802000,"forwards":"3","views":"192","text":"<b>Scrolling is All You Need: Building a Swipeable Sheet<\/b><br><br>How we built a Sheet component with native swipe gestures, gesture-synchronized animations, snap points, and stacking, entirely powered by CSS scroll snapping and view timelines.<br><br><a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/react-aria.adobe.com\/blog\/sheet\">https:\/\/react-aria.adobe.com\/blog\/sheet<\/a>","text_length":274,"media":{"root":"\/002\/chsAAMNOrz8AAAAA-0QLDSDqzdw","photo":{"thumbs":{"m":{"w":320,"h":168,"hash":"ChF4PwtebwR9EDVz1tpAcA&ts=1793167241"},"x":{"w":800,"h":420,"hash":"GcxOzS-yCpJrK9k2grzsQg&ts=1793167241"},"y":{"w":1200,"h":630,"hash":"Aqhq3bVfTVQkdangMx21og&ts=1793167241"},"i":{"bytes":"AVACg|DZqMzLzw3Bx901HJCzzq+FAUjnuaYd+8\/Kcbv+en9KLAT+cnOMnHoDSrIrEYzk+oqBY5NpOwg9v3lSQhxneCPTL7qAJqKKKACiiigAooooAKKKKAP\/2Q=="}}}}}]