[{"data":1,"prerenderedAt":501},["ShallowReactive",2],{"project-41213711":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":36,"aspects":37,"strip":47,"post_text":50,"what":51,"said":91,"maker_in_thread":181,"shape":190,"grid":195,"attempts":462,"same_week":463,"maker_shows":34,"maker_hidden":493,"reader_version":494,"card":495},"41213711","flutter_rust_bridge","Rust GUI Library via Flutter","title","Show HN: Rust GUI Library via Flutter","https:\u002F\u002Fcjycode.com\u002Fposts\u002Frust-ui-flutter\u002F","cjycode.com","fzyzcjy",1723344920,2024,301,103,205,3515,6,"legend","languages","cross-language bindings","library",[24,25,26,27,28],"flutter","rust","ffi bridge","dart interop","code generation","mixed",0.031,{"positive":32,"neutral":33,"mixed":34,"critical":35},12,17,2,9,40,{"execution":38,"design":40,"performance":42,"docs":45,"idea":46},{"positive":39,"critical":34},3,{"positive":41,"critical":39},7,{"positive":43,"critical":44},0,1,{"positive":43,"critical":43},{"positive":44,"critical":44},[48,48,48,43,43,49,44,43,43,48,44,43,48,48,43,43,39,39,48,48,39,43,48,39,39,43,43,44,39,44,43,43,43,48,44,43,43,43,39,39],5,4,"Hi, I made a bridge (https:\u002F\u002Fgithub.com\u002Ffzyzcjy\u002Fflutter_rust_bridge v2.0.0) between Flutter and Rust, which auto translates syntaxes like arbitrary types, &mut, async, traits, results, closure (callback), lifetimes, etc. The goal is to make a bridge between the two, seamlessly as if working in one single language.\n\nThen, as an example, I showed how to write Rust applications with GUI by utilizing Flutter. That is discussed in the link in details.\n\nTo play with it, please visit the GitHub repo, or refer to the end of the article for detailed folders and commands.\n\nWhen I first released 1.0.0 ye",{"problem":52,"audience":58,"pricing":70,"motivation":71,"time_to_build":70,"stack":75,"openness":88,"stage":89,"team_size":90},{"value":53,"source":54,"evidence":55},"Calling Rust code from Flutter\u002FDart without manual FFI glue.","maker",[56],{"id":57},"post",{"value":59,"source":60,"evidence":61},"Flutter developers who want Rust code in their apps.","inferred",[62,66],{"id":63,"by":64,"text":65},"41213960","tmpfs","I have been using this to build an app[0] for the last couple of years and I want to say that it has been a pleasure to use, there are some wrinkles but overall I have been very…",{"id":67,"by":68,"text":69},"41213985","blopker","While I don't see the advantage of writing UI in Rust vs Dart, I'm a huge fan of flutter_rust_bridge. The work fzyzcjy and the community have put into calling Rust code from Dart…",null,{"value":72,"source":54,"evidence":73},"Make Flutter and Rust work together as if one language.",[74],{"id":57},[76,80,84],{"value":77,"source":54,"evidence":78},"Rust",[79],{"id":57},{"value":81,"source":54,"evidence":82},"Dart",[83],{"id":57},{"value":85,"source":54,"evidence":86},"Flutter",[87],{"id":57},"open_source","launched","unknown",{"praise":92,"objections":107,"requests":126,"questions":134,"alternatives":156},[93,103],{"value":94,"source":95,"evidence":96},"Seamless Rust calls from Dart, excellent codegen and async support.","commenter",[97,98,99],{"id":63,"by":64,"text":65},{"id":67,"by":68,"text":69},{"id":100,"by":101,"text":102},"41214684","j-krieger","Flutter Rust Bridge is without a doubt the best FFI bridge I‘ve ever used. It works like magic. I have no idea how it‘s done.",{"value":104,"source":95,"evidence":105},"Upgrade from v1 to v2 was smooth with useful features.",[106],{"id":63,"by":64,"text":65},[108,119],{"value":109,"source":95,"evidence":110},"Flutter's long-term Google support and team size are doubted.",[111,115],{"id":112,"by":113,"text":114},"41221882","sydbarrett74","Does anyone know if Google plans to sunset the entire Flutter framework over time? Since they fired just about everybody internal who was working on it, I don't have a lot of…",{"id":116,"by":117,"text":118},"41220251","pzo","For ios and android maybe but I doubt for web. Also 12k+ open issues, team layoffs and all founders that left don't brink confidence to flutter. I think also roadmap and progress…",{"value":120,"source":95,"evidence":121},"Flutter's desktop support and job market are weaker than React's.",[122],{"id":123,"by":124,"text":125},"41216189","synergy20","flutter does a so so job on desktop and it's web version is wasm based. the job market for dart flutter is a drop while react is the lake. react with electron, react native,…",[127],{"value":128,"source":95,"evidence":129},"Accessibility support details are missing from the docs.",[130],{"id":131,"by":132,"text":133},"41215671","BodyCulture","How is the a11y story with this? I did not find any info about it in the document, but I can not imagine anyone releasing a GUI kit in 2024 without extensive a11y support, so why…",[135,146],{"value":136,"source":95,"evidence":137},"How does it compare to rinf and egui?",[138,142],{"id":139,"by":140,"text":141},"41213928","polyaniline","How does this compare to rinf?",{"id":143,"by":144,"text":145},"41229946","the__alchemist","Does anyone know how this compares to EGUI in terms of performance, binary size, flexibility, and overall experience?",{"value":147,"source":95,"evidence":148},"What is the technical approach, source-to-source translation?",[149,153],{"id":150,"by":151,"text":152},"41213929","burakemir","Interesting! IIUC this is done using source-to-source translation? It is a bit hard to understand from the docs what technical approach is. The docs are clearly aimed at users…",{"id":154,"by":11,"text":155},"41214330","Thanks! Shortly speaking, the Rust code is parsed (e.g. \"here is a function and there is a struct\"), and then some Rust and Flutter code are generated. As for comparison, some…",[157,167,171,177],{"value":158,"source":95,"evidence":159},"Tauri",[160,164],{"id":161,"by":162,"text":163},"41214313","bubblebeard","Commendable effort! I’m currently using Tauri for a project myself and was wondering if anyone has any pros\u002Fcons between the two?",{"id":165,"by":11,"text":166},"41214452","Thank you! I heard some people saying that, for apps using JavaScript, Tauri is replacing Electron and is popular nowadays, since Electron is very widely used. It seems Tauri…",{"value":168,"source":95,"evidence":169},"rinf",[170],{"id":139,"by":140,"text":141},{"value":172,"source":95,"evidence":173},"Crux",[174],{"id":175,"by":11,"text":176},"41214509","Yes, if someone needs to write UI using native Android\u002FiOS code, Crux would be suitable. On the other hand, personally speaking, I prefer to write all code 1 time, but Crux seems…",{"value":178,"source":95,"evidence":179},"egui",[180],{"id":143,"by":144,"text":145},{"comments":32,"answered":48,"key":182},[183,186,189],{"id":184,"text":185},"41214322","You are welcome, and happy to hear it works for you!",{"id":187,"text":188},"41214328","You are welcome, and I am happy to see it helps! When I initially develop flutter_rust_bridge, my personal usage scenario is quite similar to yours: using Rust for some high…",{"id":165,"text":166},{"commenters":191,"max_depth":192,"maker_replies":32,"first_comment_mins":193,"lifespan_hours":194},56,11,77,87,[196,198,200,204,208,212,214,216,219,222,225,227,229,232,236,239,241,244,245,247,249,251,253,255,257,259,263,266,269,271,275,278,282,285,288,289,290,291,292,294,296,299,301,303,307,310,312,316,318,321,323,326,329,331,334,336,338,342,344,349,352,354,358,360,363,365,368,370,372,374,375,377,379,381,384,387,390,393,396,398,400,401,403,406,408,410,411,413,414,418,423,426,429,432,435,437,440,442,445,449,454,456,459],[63,43,48,197,64,43],"project\u002Fpositive\u002Fexecution",[184,43,43,199,11,44],"maker\u002Fpositive\u002Fnone",[201,43,43,202,203,43],"41214593","commenter\u002Fneutral\u002Fdesign","MrJohz",[205,43,48,206,207,43],"41214802","project\u002Fpositive\u002Fdesign","mdhb",[209,43,43,210,211,43],"41214932","commenter\u002Fneutral\u002Fnone","satvikpendem",[213,43,48,206,64,43],"41214953",[215,43,43,210,203,43],"41215714",[217,43,43,210,218,43],"41216515","beanjuiceII",[220,43,43,210,221,43],"41220690","fngjdflmdflg",[223,43,43,210,224,43],"41221723","elbear",[226,43,43,210,221,43],"41221916",[228,43,43,210,211,43],"41226356",[230,43,48,206,231,43],"41215665","nu11ptr",[233,43,44,234,235,43],"41215808","project\u002Fcritical\u002Fdesign","amelius",[237,43,48,206,238,43],"41216978","tensor",[123,43,44,240,124,43],"project\u002Fcritical\u002Fexecution",[242,43,43,243,207,43],"41217102","commenter\u002Fpositive\u002Fnone",[116,43,44,240,117,43],[246,43,43,243,207,43],"41222477",[248,43,43,210,117,43],"41222635",[250,43,43,210,207,43],"41222689",[252,43,43,210,117,43],"41222827",[254,43,43,243,124,43],"41223325",[256,43,43,210,211,43],"41214925",[258,43,48,206,231,43],"41215630",[260,43,44,261,262,43],"41216469","project\u002Fcritical\u002Fnone","bmitc",[264,43,43,210,265,43],"41217203","seabrookmx",[267,43,43,210,268,43],"41217418","epcoa",[270,43,43,210,265,43],"41248554",[272,43,43,273,274,43],"41218353","other\u002Fneutral\u002Fnone","neonsunset",[276,43,43,210,277,43],"41221222","justahuman74",[279,43,39,280,281,43],"41220569","project\u002Fneutral\u002Fnone","sgarg26",[283,43,48,206,284,43],"41217135","samstave",[286,43,39,287,231,43],"41219219","project\u002Fneutral\u002Fdesign",[67,44,48,197,68,43],[187,44,43,199,11,44],[161,34,43,273,162,43],[165,34,43,273,11,44],[293,34,43,273,162,43],"41214828",[295,34,43,199,11,44],"41216124",[297,34,43,273,298,43],"41216588","bobajeff",[150,39,39,300,151,43],"project\u002Fneutral\u002Fexecution",[154,39,43,302,11,44],"maker\u002Fneutral\u002Fexecution",[304,49,39,305,306,43],"41214024","project\u002Fneutral\u002Fperformance","sbt567",[308,49,43,309,11,44],"41214366","maker\u002Fneutral\u002Fperformance",[131,48,39,311,132,43],"project\u002Fneutral\u002Fdocs",[313,48,48,314,315,43],"41216168","project\u002Fpositive\u002Fnone","nsriv",[317,18,39,287,231,43],"41215611",[319,18,39,280,320,43],"41215798","nevi-me",[322,18,48,206,207,43],"41215922",[324,18,43,273,325,43],"41225267","leononame",[327,18,43,328,207,43],"41234323","other\u002Fpositive\u002Fnone",[330,18,39,280,231,43],"41216362",[332,18,39,300,333,43],"41216999","duped",[335,18,43,210,231,43],"41217404",[337,18,43,210,333,43],"41224895",[339,41,48,340,341,43],"41214503","project\u002Fpositive\u002Fidea","pjmlp",[343,41,43,199,11,44],"41214520",[345,346,43,347,348,43],"41216523",8,"other\u002Fneutral\u002Fidea","danielvaughn",[350,346,39,287,351,43],"41217087","Zelphyr",[353,346,43,273,348,43],"41218466",[355,346,39,356,357,43],"41219809","project\u002Fmixed\u002Fdesign","virtualwhys",[359,346,43,210,211,43],"41226446",[361,346,43,273,362,43],"41217259","_bent",[364,346,43,273,348,43],"41218134",[366,346,43,273,367,43],"41218331","Tmpod",[369,346,43,273,348,43],"41218457",[371,346,43,273,274,43],"41218936",[373,346,43,273,348,43],"41220551",[112,35,44,261,113,43],[376,35,43,210,207,43],"41222434",[378,35,43,210,211,43],"41226389",[139,380,39,280,140,43],10,[382,380,39,280,383,43],"41213947","abound",[385,380,44,234,386,43],"41214037","oneshtein",[388,380,39,280,389,43],"41214472","itohihiyt",[391,380,44,392,386,43],"41214811","project\u002Fcritical\u002Fperformance",[394,380,43,395,207,43],"41214931","commenter\u002Fneutral\u002Fperformance",[397,380,43,210,389,43],"41215006",[399,380,43,199,11,44],"41214476",[175,380,43,287,11,44],[402,380,43,273,11,44],"41214388",[404,380,43,273,405,43],"41214437","operator-name",[407,380,43,199,11,44],"41214511",[409,380,43,273,211,43],"41226476",[100,192,48,197,101,43],[412,192,43,199,11,44],"41216128",[143,32,39,305,144,43],[415,416,44,234,417,43],"41220064",13,"api",[419,420,44,421,422,43],"41214985",14,"project\u002Fcritical\u002Fidea","webprofusion",[424,420,43,210,425,43],"41215109","jenadine",[427,420,43,210,428,43],"41215155","mtizim",[430,420,43,210,431,43],"41215612","CryZe",[433,420,43,210,434,43],"41215705","wongarsu",[436,420,43,210,341,43],"41216004",[438,420,43,210,439,43],"41220070","taneq",[441,420,43,210,341,43],"41221567",[443,420,43,210,444,43],"41224857","p_l",[446,420,39,447,448,43],"41216373","project\u002Fmixed\u002Fnone","ramon156",[450,451,39,452,453,43],"41214353",15,"project\u002Fneutral\u002Fidea","jurschreuder",[455,451,39,452,140,43],"41214415",[457,451,39,280,458,43],"41214502","ThePhysicist",[460,451,43,273,461,43],"41214883","imadj",[],[464,469,474,479,484,489],{"id":465,"name":466,"points":467,"category":468},"41247023","ytch",2741,"consumer_social",{"id":470,"name":471,"points":472,"category":473},"41224689","PGlite",509,"data",{"id":475,"name":476,"points":477,"category":478},"41203306","LLM-aided OCR",479,"productivity",{"id":480,"name":481,"points":482,"category":483},"41217109","Grandma's Word",454,"games",{"id":485,"name":486,"points":487,"category":488},"41203475","Thunder Compute",344,"infrastructure",{"id":490,"name":491,"points":492,"category":478},"41227350","bookshelf",263,false,"v2",{"id":496,"name":5,"line":6,"ai":493,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":497,"top":18,"kw":498,"maker":11,"domain":10,"tier":19,"attempts":43,"strip":499,"url":9,"mix":500,"praise":94,"objection":109,"sub":21},41213711,0.03,[24,25,26,27,28],"5550041005105500335530533001310005100033",[32,33,34,35],1794036659139]