[{"data":1,"prerenderedAt":155},["ShallowReactive",2],{"talk-\u002Ftalks\u002F2025-06-25\u002Fbreizhcamp":3,"talks-explore-en-0c9e3384-6fd5-4ba7-ba88-efd785549732":71},{"metadata":4,"summary":41,"transcript":70},{"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-25\u002Fbreizhcamp.json","Reactivity and signals: demystifying frontend magic",{"summary":8},"summary.en.md","2025-06-25","Unpack frontend reactivity: change propagation, dependency tracking, signals, computed values, and effects in modern frameworks.",{"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-25\u002Fbreizhcamp","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-25\u002Fbreizhcamp\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-25\u002Fbreizhcamp\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-25\u002Fbreizhcamp\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-25\u002Fbreizhcamp\u002Fpdf","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-06-25\u002Fbreizhcamp\u002Farticle","en",{},"2025-06-25\u002Fbreizhcamp","fr","talks\u002F2025-06-25\u002Fbreizhcamp","0c9e3384-6fd5-4ba7-ba88-efd785549732",[34,35,36,37,38,39],"computed-values","dependency-tracking","effects","frontend-reactivity","signals","vue","wbp-Oi0XfNtFXzqtVmFHpx70SkeYqs7i_iaR6fhAKic",{"id":42,"body":43,"extension":66,"meta":67,"rawbody":68,"stem":31,"__hash__":69},"talksSummary\u002Ftalks\u002F2025-06-25\u002Fbreizhcamp.md",{"type":44,"value":45,"toc":62},"minimark",[46,59],[47,48,49,50,54,55,58],"p",{},"Frontend reactivity can be described as a graph of dependencies that connects state, computed values, and effects. This talk uses the equation ",[51,52,53],"code",{},"ui = fn(state)",", an Excel analogy, and the ",[51,56,57],{},"alien-signals"," library to explain how changes propagate through that graph.",[47,60,61],{},"The presentation introduces directed acyclic graphs, topological sorting, and doubly linked lists before examining signal getters, subscribers, push and pull propagation, and effect execution. It ends by connecting these ideas to Vue's component scopes and reactive rendering.",{"title":63,"searchDepth":64,"depth":64,"links":65},"",2,[],"md",{},"Frontend reactivity can be described as a graph of dependencies that connects state, computed values, and effects. This talk uses the equation `ui = fn(state)`, an Excel analogy, and the `alien-signals` library to explain how changes propagate through that graph.\n\nThe presentation introduces directed acyclic graphs, topological sorting, and doubly linked lists before examining signal getters, subscribers, push and pull propagation, and effect execution. It ends by connecting these ideas to Vue's component scopes and reactive rendering.\n","jvL5sQVtLb5b89pkp0PHkzF_yZze0qaLdvtzKCwDy4Q",null,[72,103,125],{"id":73,"title":74,"artifacts":75,"date":76,"description":77,"event":78,"extension":19,"links":85,"locale":27,"meta":91,"slug":92,"sourceLanguage":30,"stem":93,"talkId":94,"topics":95,"__hash__":102},"talks\u002Ftalks\u002F2026-04-09\u002Flatelier.json","Inside a pipeline: demystifying Vite and its plugins",{"summary":8},"2026-04-09","Follow a Vite request through resolution, loading, and transformation to understand and build plugins, virtual modules, and custom integrations.",{"name":79,"url":80,"location":81},"L'Atelier","https:\u002F\u002Flatelier.co\u002F",{"city":82,"country":16,"latitude":83,"longitude":84},"Paris",48.860686046886585,2.3425619115823837,{"slides":86,"thumbnail":87,"thumbnailDark":88,"source":89,"pdf":90},"https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-09\u002Flatelier","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-09\u002Flatelier\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-09\u002Flatelier\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-09\u002Flatelier\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-09\u002Flatelier\u002Fpdf",{},"2026-04-09\u002Flatelier","talks\u002F2026-04-09\u002Flatelier","fe3f3d42-5509-402d-8ea9-4750c546d9d9",[96,97,98,99,100,101],"bundlers","esm","module-transforms","plugin-development","virtual-modules","vite","hAqS7HYrS6CfBNXUjulQgRX7XH7PA8CmavayfjWjUQc",{"id":104,"title":74,"artifacts":105,"date":106,"description":77,"event":107,"extension":19,"links":113,"locale":27,"meta":119,"slug":120,"sourceLanguage":30,"stem":121,"talkId":122,"topics":123,"__hash__":124},"talks\u002Ftalks\u002F2026-04-13\u002Ftakima.json",{"summary":8},"2026-04-13",{"name":108,"url":109,"location":110},"Takima","https:\u002F\u002Ftakima.fr\u002F",{"city":82,"country":16,"latitude":111,"longitude":112},48.80486167446941,2.324595137047259,{"slides":114,"thumbnail":115,"thumbnailDark":116,"source":117,"pdf":118},"https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-13\u002Ftakima","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-13\u002Ftakima\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-13\u002Ftakima\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-13\u002Ftakima\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2026-04-13\u002Ftakima\u002Fpdf",{},"2026-04-13\u002Ftakima","talks\u002F2026-04-13\u002Ftakima","6dbe3ee7-8cf9-4aa1-8385-36842c5a4959",[96,97,98,99,100,101],"n5OoIIesUoTBCNILZTqUdNB9PhDL65gWsb4F-T2xuGM",{"id":126,"title":127,"artifacts":128,"date":129,"description":130,"event":131,"extension":19,"links":137,"locale":27,"meta":143,"slug":144,"sourceLanguage":30,"stem":145,"talkId":146,"topics":147,"__hash__":154},"talks\u002Ftalks\u002F2025-03-05\u002Fnodejs-paris.json","You don't need these new Node.js APIs",{"summary":8},"2025-03-05","Take a closer look at newer Node.js APIs, from --watch and node:test to parseArgs, .env, and SQLite, then decide which tools your projects actually need.",{"name":132,"url":133,"location":134},"Node.js Paris","http:\u002F\u002Fnodejs.paris\u002Fmeetups",{"city":82,"country":16,"latitude":135,"longitude":136},48.86860314335723,2.3354337719970117,{"slides":138,"thumbnail":139,"thumbnailDark":140,"source":141,"pdf":142},"https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris\u002Fthumbnail.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris\u002Fthumbnail-dark.png","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris\u002Fsrc","https:\u002F\u002Ftalks.soubiran.dev\u002F2025-03-05\u002Fnodejs-paris\u002Fpdf",{},"2025-03-05\u002Fnodejs-paris","talks\u002F2025-03-05\u002Fnodejs-paris","4e7cb9ea-82aa-4d56-b335-002a5420db26",[148,149,150,151,152,153],"developer-tooling","nodejs","nodejs-apis","package-managers","runtimes","yagni","bxW-xTB89tTPCShKZfpyB3LMwZR5Ka7d9U0W6vGgb8s",1790086906159]