[{"data":1,"prerenderedAt":134},["ShallowReactive",2],{"project-47204570":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":33,"aspects":34,"strip":36,"post_text":37,"what":38,"said":61,"maker_in_thread":85,"shape":88,"grid":91,"attempts":96,"same_week":97,"maker_shows":126,"maker_hidden":127,"reader_version":128,"card":129},"47204570","React-Kino","Cinematic scroll storytelling for React (1KB core)","title","Show HN: React-Kino – Cinematic scroll storytelling for React (1KB core)","https:\u002F\u002Fgithub.com\u002Fbtahir\u002Freact-kino","github.com","bilater",1772350593,2026,19,2,2068,4366,48,"shown","languages","react component library","library",[24,25,26,27,28],"react scroll animation","scroll storytelling","react parallax","sticky scroll react","reduced motion react","quiet",null,{"positive":32,"neutral":32,"mixed":32,"critical":33},0,1,{"execution":35},{"positive":32,"critical":33},[33,32],"I built react-kino because I wanted Apple-style scroll experiences in React without pulling in GSAP (33KB for ScrollTrigger alone).\n\nThe core scroll engine is under 1KB gzipped. It uses CSS position: sticky with a spacer div for pinning — same technique as ScrollTrigger but with zero dependencies.\n\n12 declarative components: Scene, Reveal, Parallax, Counter, TextReveal, CompareSlider, VideoScroll, HorizontalScroll, Progress, Marquee, StickyHeader.\n\nSSR-safe, respects prefers-reduced-motion, works with Next.js App Router.\n\nDemo: https:\u002F\u002Freact-kino.dev\nGitHub: https:\u002F\u002Fgithub.com\u002Fbtahir\u002Freact-kin",{"problem":39,"audience":30,"pricing":30,"motivation":45,"time_to_build":30,"stack":49,"openness":58,"stage":59,"team_size":60},{"value":40,"source":41,"evidence":42},"Apple-style scroll experiences in React without heavy dependencies like GSAP ScrollTrigger","maker",[43],{"id":44},"post",{"value":46,"source":41,"evidence":47},"Wanted Apple-style scroll experiences in React without pulling in GSAP",[48],{"id":44},[50,54],{"value":51,"source":41,"evidence":52},"React",[53],{"id":44},{"value":55,"source":41,"evidence":56},"Next.js App Router",[57],{"id":44},"open_source","launched","unknown",{"praise":62,"objections":63,"requests":72,"questions":73,"alternatives":80},[],[64],{"value":65,"source":66,"evidence":67},"Template pages appeared broken when opened in a background tab","commenter",[68],{"id":69,"by":70,"text":71},"47239244","hmartin","This seems really cool! However, every one of the template pages look broken if I open them in a new background tab and then switch to it.",[],[74],{"value":75,"source":66,"evidence":76},"Which template page was affected by the background-tab issue",[77],{"id":78,"by":11,"text":79},"47241169","thanks - can't replicate this which template were you talking about?",[81],{"value":82,"source":41,"evidence":83},"GSAP ScrollTrigger",[84],{"id":44},{"comments":33,"answered":32,"key":86},[87],{"id":78,"text":79},{"commenters":15,"max_depth":15,"maker_replies":33,"first_comment_mins":89,"lifespan_hours":90},3708,65,[92,94],[69,32,33,93,70,32],"project\u002Fcritical\u002Fexecution",[78,32,32,95,11,33],"project\u002Fneutral\u002Fexecution",[],[98,103,108,112,117,121],{"id":99,"name":100,"points":101,"category":102},"47224295","I built a sub-500ms latency voice agent from scratch",570,"ai",{"id":104,"name":105,"points":106,"category":107},"47164270","Terminal Phone",322,"security_privacy",{"id":109,"name":110,"points":111,"category":102},"47195123","Now I Get It",305,{"id":113,"name":114,"points":115,"category":116},"47220809","Govbase",219,"productivity",{"id":118,"name":119,"points":120,"category":102},"47212576","Timber",207,{"id":122,"name":123,"points":124,"category":125},"47180083","RetroTick",195,"dev_tools",14,false,"v2",{"id":130,"name":5,"line":6,"ai":127,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":30,"top":18,"kw":131,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":132,"url":9,"mix":133,"praise":-1,"objection":65,"sub":21},47204570,[24,25,26,27,28],"10",[32,32,32,33],1794036694808]