[{"data":1,"prerenderedAt":123},["ShallowReactive",2],{"project-41162352":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":28,"sentiment":29,"stance_mix":30,"scored_comments":15,"aspects":32,"strip":33,"post_text":35,"what":36,"said":63,"maker_in_thread":77,"shape":79,"grid":82,"attempts":85,"same_week":86,"maker_shows":81,"maker_hidden":116,"reader_version":117,"card":118},"41162352","nuqs","Type-safe search params state management for Next.js","title","Show HN: Type-safe search params state management for Next.js","https:\u002F\u002Fnuqs.47ng.com","nuqs.47ng.com","franky47",1722872281,2024,10,1,2671,3515,76,"shown","languages","react state library","library",[24,25,26,27],"nextjs search params","url state","react usestate","type-safe query params","quiet",null,{"positive":15,"neutral":31,"mixed":31,"critical":31},0,{},[34],5,"Next.js has APIs to read and update search params (the \u002F?foo=bar part of the URL), but they lack type-safety for consistent keys and proper parsing\u002Fserializing of JS data types. I found myself repeatedly building the same custom hook to get a React.useState-like approach. In 2021, I published it to NPM and then forgot about it.\n\nSince then, the `nuqs` package has gained popularity and is now used by companies like Vercel, Auth.js, Gitbook, and Midday.ai, with 200K weekly downloads.\n\nIt's been fun building this as a side project and automating as much as possible to ensure a high-quality output",{"problem":37,"audience":43,"pricing":29,"motivation":48,"time_to_build":29,"stack":52,"openness":61,"stage":62,"team_size":61},{"value":38,"source":39,"evidence":40},"Next.js search params lack type-safety and proper parsing\u002Fserializing of JS data types","maker",[41],{"id":42},"post",{"value":44,"source":45,"evidence":46},"Next.js developers","inferred",[47],{"id":42},{"value":49,"source":39,"evidence":50},"Repeatedly built the same custom hook to get a useState-like approach to search params",[51],{"id":42},[53,57],{"value":54,"source":39,"evidence":55},"Next.js",[56],{"id":42},{"value":58,"source":39,"evidence":59},"React",[60],{"id":42},"unknown","launched",{"praise":64,"objections":73,"requests":74,"questions":75,"alternatives":76},[65],{"value":66,"source":67,"evidence":68},"Commenter says they love nuqs and recommend it","commenter",[69],{"id":70,"by":71,"text":72},"41163468","pontusabra","I really love nuqs, recommend it to everyone! thanks!",[],[],[],[],{"comments":31,"answered":31,"key":78},[],{"commenters":15,"max_depth":15,"maker_replies":31,"first_comment_mins":80,"lifespan_hours":81},120,2,[83],[70,31,34,84,71,31],"maker\u002Fpositive\u002Fnone",[],[87,92,97,102,107,112],{"id":88,"name":89,"points":90,"category":91},"41180504","Roometron",694,"creative",{"id":93,"name":94,"points":95,"category":96},"41156872","WebGPU Unleashed",471,"learning_science",{"id":98,"name":99,"points":100,"category":101},"41173161","1-FPS",433,"dev_tools",{"id":103,"name":104,"points":105,"category":106},"41160268","Pie Menu",309,"productivity",{"id":108,"name":109,"points":110,"category":111},"41163645","Iso20022.js",291,"finance_crypto",{"id":113,"name":114,"points":115,"category":106},"41180441","BudgetFlow",275,false,"v2",{"id":119,"name":5,"line":6,"ai":116,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":120,"maker":11,"domain":10,"tier":19,"attempts":31,"strip":121,"url":9,"mix":122,"praise":66,"objection":-1,"sub":21},41162352,[24,25,26,27],"5",[15,31,31,31],1794036658871]