[{"data":1,"prerenderedAt":179},["ShallowReactive",2],{"talk-\u002Ftalks\u002F2025-06-26\u002Fbreizhcamp":3,"talks-explore-en-691f7b68-74eb-438e-8e6a-1cb791599de9":86},{"metadata":4,"summary":41,"transcript":85},{"id":5,"title":6,"artifacts":7,"date":9,"description":10,"event":11,"extension":19,"links":20,"locale":27,"meta":28,"slug":29,"sourceLanguage":30,"stem":31,"talkId":32,"topics":33,"__hash__":40},"talks\u002Ftalks\u002F2025-06-26\u002Fbreizhcamp.json","In JavaScript, there's a package for everything... and often for nothing.",{"summary":8},"summary.en.md","2025-06-26","Examine the cost of unnecessary JavaScript dependencies and learn how to reduce the footprint of packages, bundles, and the delivery pipeline.",{"name":12,"url":13,"location":14},"BreizhCamp","https:\u002F\u002Fbreizhcamp.org\u002F",{"city":15,"country":16,"latitude":17,"longitude":18},"Rennes","France",48.111154286133214,-1.6369320132492642,"json",{"slides":21,"thumbnail":22,"thumbnailDark":23,"source":24,"pdf":25,"article":26},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-26\u002Fbreizhcamp\u002Farticle","en",{},"2025-06-26\u002Fbreizhcamp","fr","talks\u002F2025-06-26\u002Fbreizhcamp","691f7b68-74eb-438e-8e6a-1cb791599de9",[34,35,36,37,38,39],"bundle-size","dependencies","e18e","javascript","package-management","performance","TBEQIGy1IWxnnGVOfjDjiF0K6sY12XDkqQjXrc_W9OQ",{"id":42,"body":43,"extension":81,"meta":82,"rawbody":83,"stem":31,"__hash__":84},"talksSummary\u002Ftalks\u002F2025-06-26\u002Fbreizhcamp.md",{"type":44,"value":45,"toc":77},"minimark",[46,59],[47,48,49,50,54,55,58],"p",{},"JavaScript projects often depend on packages that developers never install directly. Using ",[51,52,53],"code",{},"is-string"," as an example, this talk examines transitive dependencies and the contents of ",[51,56,57],{},"node_modules",", where metadata and small utilities can account for much of what gets downloaded.",[47,60,61,62,65,66,65,69,72,73,76],{},"It introduces ",[51,63,64],{},"node-modules.dev",", ",[51,67,68],{},"pkg-size",[51,70,71],{},"deptree",", and ",[51,74,75],{},"npmgraph",", then presents e18e, or Ecosystem Performance, and its focus on cleaning up, speeding up, and improving the JavaScript ecosystem.",{"title":78,"searchDepth":79,"depth":79,"links":80},"",2,[],"md",{},"JavaScript projects often depend on packages that developers never install directly. Using `is-string` as an example, this talk examines transitive dependencies and the contents of `node_modules`, where metadata and small utilities can account for much of what gets downloaded.\n\nIt introduces `node-modules.dev`, `pkg-size`, `deptree`, and `npmgraph`, then presents e18e, or Ecosystem Performance, and its focus on cleaning up, speeding up, and improving the JavaScript ecosystem.\n","Riwn2HLCgqzagIgx_7pBHKHvNxZiqcgEKCuekUeStfk",null,[87,118,152],{"id":88,"title":89,"artifacts":90,"date":91,"description":92,"event":93,"extension":19,"links":100,"locale":27,"meta":106,"slug":107,"sourceLanguage":30,"stem":108,"talkId":109,"topics":110,"__hash__":117},"talks\u002Ftalks\u002F2025-10-14\u002Fparis-typescript.json","Reactivity and signals: demystifying frontend magic",{"summary":8},"2025-10-14","Unpack frontend reactivity: change propagation, dependency tracking, signals, computed values, and effects in modern frameworks.",{"name":94,"url":95,"location":96},"Paris TypeScript","https:\u002F\u002Ftypescript.paris\u002F",{"city":97,"country":16,"latitude":98,"longitude":99},"Paris",48.866768910791514,2.342438728872608,{"slides":101,"thumbnail":102,"thumbnailDark":103,"source":104,"pdf":105},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-10-14\u002Fparis-typescript\u002Fpdf",{},"2025-10-14\u002Fparis-typescript","talks\u002F2025-10-14\u002Fparis-typescript","0e074a1e-bc04-49a6-b1df-8053daaa0a2a",[111,112,113,114,115,116],"computed-values","dependency-tracking","effects","frontend-reactivity","signals","vue","-rVCW__i3J4xAmWFBbXRLa5Y0PArsJvA0TivUF4NycE",{"id":119,"title":120,"artifacts":121,"date":123,"description":124,"event":125,"extension":19,"links":131,"locale":27,"meta":141,"slug":142,"sourceLanguage":30,"stem":143,"talkId":144,"topics":145,"__hash__":151},"talks\u002Ftalks\u002F2023-04-12\u002Fdevoxxfr.json","Unpoly: taking back control!",{"summary":8,"transcript":122},"transcript.en.md","2023-04-12","Learn how Unpoly brings fast navigation, page fragments, forms, and modern interactions to server-rendered applications with an HTML-first approach.",{"name":126,"url":127,"location":128},"Devoxx France","https:\u002F\u002Fdevoxx.fr\u002F",{"city":97,"country":16,"latitude":129,"longitude":130},48.87920881050965,2.2836092090943354,{"slides":132,"thumbnail":133,"thumbnailDark":134,"source":135,"pdf":136,"recording":137,"youtubeEmbed":138,"audio":139,"transcript":140},"https:\u002F\u002Ftalks.soubiran.dev\u002F2023-04-12\u002Fdevoxxfr","https:\u002F\u002Ftalks.soubiran.dev\u002F2023-04-12\u002Fdevoxxfr\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2023-04-12\u002Fdevoxxfr\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2023-04-12\u002Fdevoxxfr\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2023-04-12\u002Fdevoxxfr\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2023-04-12\u002Fdevoxxfr\u002Frecording","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FMIM6E_XMRHQ","https:\u002F\u002Ftalks.soubiran.dev\u002F2023-04-12\u002Fdevoxxfr\u002Faudio","https:\u002F\u002Fsoubiran.dev\u002Ftalks\u002F2023-04-12\u002Fdevoxxfr",{},"2023-04-12\u002Fdevoxxfr","talks\u002F2023-04-12\u002Fdevoxxfr","a0982779-2bb2-4900-8034-a2b13415ec6b",[146,147,148,149,150],"html-over-the-wire","progressive-enhancement","server-rendered-applications","unpoly","web-performance","IzhmjgIb95wW-P8Uuzpk475V00teWjeOrZ063XGLPAA",{"id":153,"title":89,"artifacts":154,"date":155,"description":92,"event":156,"extension":19,"links":163,"locale":27,"meta":173,"slug":174,"sourceLanguage":30,"stem":175,"talkId":176,"topics":177,"__hash__":178},"talks\u002Ftalks\u002F2026-02-12\u002Ftouraine-tech.json",{"summary":8,"transcript":122},"2026-02-12",{"name":157,"url":158,"location":159},"Touraine Tech","https:\u002F\u002Ftouraine.tech\u002F",{"city":160,"country":16,"latitude":161,"longitude":162},"Tours",47.358059501856914,0.7028678082506143,{"slides":164,"thumbnail":165,"thumbnailDark":166,"source":167,"pdf":168,"recording":169,"youtubeEmbed":170,"audio":171,"transcript":172},"https:\u002F\u002Ftalks.soubiran.dev\u002F2026-02-12\u002Ftouraine-tech","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-02-12\u002Ftouraine-tech\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-02-12\u002Ftouraine-tech\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-02-12\u002Ftouraine-tech\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-02-12\u002Ftouraine-tech\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-02-12\u002Ftouraine-tech\u002Frecording","https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FLBc7S0yv9xY","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-02-12\u002Ftouraine-tech\u002Faudio","https:\u002F\u002Fsoubiran.dev\u002Ftalks\u002F2026-02-12\u002Ftouraine-tech",{},"2026-02-12\u002Ftouraine-tech","talks\u002F2026-02-12\u002Ftouraine-tech","d022fe9a-779c-4ee8-a7aa-e9f6cc358cbe",[111,112,113,114,115,116],"gbVXWoss2a7ijOv7LSMGQRi1mnWSRmkyLvEThfqgxGE",1790086905979]