[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"verticals":3,"tag-webdev-15":44,"tags-all":180,"search-suggestions":303},[4,20,32],{"id":5,"slug":6,"name":7,"tagline":8,"description":9,"accentFrom":10,"accentTo":11,"icon":12,"defaultLocale":13,"locales":14,"features":16,"position":19},"019fe637-3d33-714b-b57f-23e163ffca0c","dev","Web Development","Read it. Run it. Prove it.","A post a day on modern web development — most with an editable playground and a quiz that explains every answer. Free, no account needed.","violet-500","cyan-400","◇","en",[13,15],"fa",{"courses":17,"paths":17,"articles":17,"exams":18,"flashcards":18,"packages":17,"community":17,"certificates":17,"teams":17,"commerce":17},true,false,0,{"id":21,"slug":22,"name":23,"tagline":24,"description":25,"accentFrom":26,"accentTo":10,"icon":27,"defaultLocale":13,"locales":28,"features":30,"position":31},"019fe637-3dc2-754c-8657-0f175bfee7c6","lang","Languages","Learn a language the way you learn a codebase.","Grammar explained the way good documentation explains an API — one idea at a time, each with a quiz.","amber-400","⌘",[13,15,29],"es",{"courses":18,"paths":18,"articles":17,"exams":18,"flashcards":17,"packages":18,"community":17,"certificates":17,"teams":18,"commerce":18},2,{"id":33,"slug":34,"name":35,"tagline":36,"description":37,"accentFrom":38,"accentTo":39,"icon":40,"defaultLocale":13,"locales":41,"features":42,"position":43},"7b3c16f2-931d-410e-802e-e1fa4edab7de","soft","Soft Skills","The half of the job nobody wrote documentation for.","Weekly, on the parts of working life that decide more than your code does — first weeks, meetings, interviews, promotions, and the people around you. Written from what actually happens, and recorded as a podcast you can listen to on the walk.","emerald-400","teal-300","◉",[13],{"courses":18,"paths":18,"articles":17,"exams":18,"flashcards":18,"packages":18,"community":17,"certificates":18,"teams":18,"commerce":18},3,{"items":45,"meta":176},[46,78,99,116,138,158],{"id":47,"slug":48,"title":49,"subtitle":50,"excerpt":51,"coverUrl":52,"locale":13,"readingMinutes":53,"publishedAt":54,"viewCount":55,"likeCount":19,"commentCount":19,"author":56,"vertical":61,"topic":62,"tags":65,"_count":77,"playground":50,"hasQuiz":18,"hasPlayground":18},"019fe65f-c193-7159-96ba-bff62b34e53d","container-queries-responsive-primitive","Your card breaks in the sidebar. Here's the real fix.",null,"A component that looks perfect in the main column falls apart in a sidebar — and the viewport width says everything's fine. The bug isn't your CSS. It's the question your CSS is asking.","\u002Fmedia\u002Fcovers\u002Fcontainer-queries-responsive-primitive.png",5,"2026-06-30T07:30:01.218Z",201,{"id":57,"name":58,"username":59,"avatarUrl":50,"headline":60},"019fe637-3c25-7088-9034-39c9f15dc3c8","Parsa Jiravand","parsa","Frontend engineer · building bestpractic",{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":63,"name":64},"css","CSS",[66,68,71,74],{"slug":63,"name":67,"color":50},"Css",{"slug":69,"name":70,"color":50},"webdev","Webdev",{"slug":72,"name":73,"color":50},"frontend","Frontend",{"slug":75,"name":76,"color":50},"javascript","Javascript",{"assessments":19},{"id":79,"slug":80,"title":81,"subtitle":50,"excerpt":82,"coverUrl":83,"locale":13,"readingMinutes":84,"publishedAt":85,"viewCount":86,"likeCount":19,"commentCount":19,"author":87,"vertical":88,"topic":89,"tags":91,"_count":98,"playground":50,"hasQuiz":18,"hasPlayground":18},"019fe65f-b9de-72a8-8656-ee81360dbd99","url-as-state-manager","The URL Is Your Best State Manager","You're storing filter state, search queries, and pagination in useState — and losing it every time someone refreshes. The URL already does this better.","\u002Fmedia\u002Fcovers\u002Furl-as-state-manager.png",4,"2026-06-29T07:59:09.726Z",320,{"id":57,"name":58,"username":59,"avatarUrl":50,"headline":60},{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":75,"name":90},"JavaScript",[92,93,94,95],{"slug":69,"name":70,"color":50},{"slug":72,"name":73,"color":50},{"slug":75,"name":76,"color":50},{"slug":96,"name":97,"color":50},"react","React",{"assessments":19},{"id":100,"slug":101,"title":102,"subtitle":50,"excerpt":103,"coverUrl":104,"locale":13,"readingMinutes":43,"publishedAt":105,"viewCount":106,"likeCount":19,"commentCount":19,"author":107,"vertical":108,"topic":109,"tags":110,"_count":115,"playground":50,"hasQuiz":18,"hasPlayground":18},"019fe65f-b1ba-7644-b327-4118cffd7d22","server-components-mental-model","Server Components Without the Hype: A Mental Model That Sticks","RSC isn't 'SSR 2.0' and it isn't magic. Here's the one distinction that makes the whole model click.","\u002Fmedia\u002Fcovers\u002Fserver-components-mental-model.png","2026-06-28T09:41:35.140Z",241,{"id":57,"name":58,"username":59,"avatarUrl":50,"headline":60},{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":96,"name":97},[111,112,113,114],{"slug":96,"name":97,"color":50},{"slug":69,"name":70,"color":50},{"slug":72,"name":73,"color":50},{"slug":75,"name":76,"color":50},{"assessments":19},{"id":117,"slug":118,"title":119,"subtitle":50,"excerpt":120,"coverUrl":121,"locale":13,"readingMinutes":43,"publishedAt":122,"viewCount":123,"likeCount":19,"commentCount":19,"author":124,"vertical":125,"topic":126,"tags":129,"_count":137,"playground":50,"hasQuiz":18,"hasPlayground":18},"019fe65f-a9f9-7079-bfbf-ca4dc5685bdd","typescript-won-what-it-bought-us","TypeScript Won. Here's What That Actually Bought Us.","The 'should we use TypeScript?' debate is over. The interesting question is what all those types are quietly enabling now.","\u002Fmedia\u002Fcovers\u002Ftypescript-won-what-it-bought-us.png","2026-06-28T07:31:54.189Z",246,{"id":57,"name":58,"username":59,"avatarUrl":50,"headline":60},{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":127,"name":128},"typescript","TypeScript",[130,132,133,134],{"slug":127,"name":131,"color":50},"Typescript",{"slug":75,"name":76,"color":50},{"slug":69,"name":70,"color":50},{"slug":135,"name":136,"color":50},"ai","Ai",{"assessments":19},{"id":139,"slug":140,"title":141,"subtitle":50,"excerpt":142,"coverUrl":143,"locale":13,"readingMinutes":43,"publishedAt":144,"viewCount":145,"likeCount":19,"commentCount":19,"author":146,"vertical":147,"topic":148,"tags":151,"_count":157,"playground":50,"hasQuiz":18,"hasPlayground":18},"019fe65f-a25a-702f-b8a0-ae60efb61964","design-system-api-for-machines","Your Design System Is Now an API for Machines","Component libraries used to be for humans. Now they're the rails an AI plans against — and that changes how you should build them.","\u002Fmedia\u002Fcovers\u002Fdesign-system-api-for-machines.png","2026-06-26T07:29:19.042Z",232,{"id":57,"name":58,"username":59,"avatarUrl":50,"headline":60},{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":149,"name":150},"designsystems","Design Systems",[152,153,154,156],{"slug":69,"name":70,"color":50},{"slug":72,"name":73,"color":50},{"slug":149,"name":155,"color":50},"Designsystems",{"slug":135,"name":136,"color":50},{"assessments":19},{"id":159,"slug":160,"title":161,"subtitle":50,"excerpt":162,"coverUrl":163,"locale":13,"readingMinutes":53,"publishedAt":164,"viewCount":165,"likeCount":19,"commentCount":19,"author":166,"vertical":167,"topic":168,"tags":170,"_count":175,"playground":50,"hasQuiz":18,"hasPlayground":18},"019fe65f-9991-7098-a2e8-28d741366ffa","frontend-future-ai","The Frontend Is Becoming a Conversation: Where UI Engineering Goes Next","Frontend stacks consolidated, the rendering wars cooled off, and AI quietly changed what a frontend engineer actually does all day. Here's where it's heading.","\u002Fmedia\u002Fcovers\u002Ffrontend-future-ai.png","2026-06-25T12:27:00.662Z",297,{"id":57,"name":58,"username":59,"avatarUrl":50,"headline":60},{"slug":6,"name":7,"accentFrom":10,"accentTo":11},{"slug":135,"name":169},"AI",[171,172,173,174],{"slug":69,"name":70,"color":50},{"slug":72,"name":73,"color":50},{"slug":135,"name":136,"color":50},{"slug":75,"name":76,"color":50},{"assessments":19},{"page":177,"perPage":178,"total":179,"totalPages":177},15,12,174,[181,182,184,186,190,192,196,198,200,204,208,212,215,219,223,226,230,234,237,240,244,247,251,254,257,260,261,264,267,270,273,276,279,282,285,288,291,294,297,300],{"slug":69,"name":70,"color":50,"articles":179},{"slug":75,"name":76,"color":50,"articles":183},141,{"slug":72,"name":73,"color":50,"articles":185},96,{"slug":187,"name":188,"color":50,"articles":189},"tutorial","Tutorial",71,{"slug":63,"name":67,"color":50,"articles":191},51,{"slug":193,"name":194,"color":50,"articles":195},"performance","Performance",30,{"slug":127,"name":131,"color":50,"articles":197},25,{"slug":96,"name":97,"color":50,"articles":199},20,{"slug":201,"name":202,"color":50,"articles":203},"programming","Programming",19,{"slug":205,"name":206,"color":50,"articles":207},"browser","Browser",18,{"slug":209,"name":210,"color":50,"articles":211},"node","Node",16,{"slug":213,"name":214,"color":50,"articles":178},"html","Html",{"slug":216,"name":217,"color":50,"articles":218},"nextjs","Nextjs",11,{"slug":220,"name":221,"color":50,"articles":222},"vue","Vue",10,{"slug":224,"name":225,"color":50,"articles":222},"accessibility","Accessibility",{"slug":227,"name":228,"color":50,"articles":229},"nestjs","Nestjs",9,{"slug":231,"name":232,"color":50,"articles":233},"nuxt","Nuxt",8,{"slug":235,"name":236,"color":50,"articles":233},"career","Career",{"slug":238,"name":239,"color":50,"articles":233},"discuss","Discuss",{"slug":241,"name":242,"color":50,"articles":243},"beginners","Beginners",7,{"slug":245,"name":246,"color":50,"articles":243},"productivity","Productivity",{"slug":248,"name":249,"color":50,"articles":250},"grammar","Grammar",6,{"slug":252,"name":253,"color":50,"articles":53},"security","Security",{"slug":255,"name":256,"color":50,"articles":84},"ssr","SSR",{"slug":258,"name":259,"color":50,"articles":84},"apis","Apis",{"slug":135,"name":136,"color":50,"articles":43},{"slug":262,"name":263,"color":50,"articles":43},"api","API",{"slug":265,"name":266,"color":50,"articles":43},"caching","Caching",{"slug":268,"name":269,"color":50,"articles":31},"async","Async",{"slug":271,"name":272,"color":50,"articles":31},"forms","Forms",{"slug":274,"name":275,"color":50,"articles":31},"dom","Dom",{"slug":277,"name":278,"color":50,"articles":31},"backend","Backend",{"slug":280,"name":281,"color":50,"articles":31},"english","English",{"slug":283,"name":284,"color":50,"articles":31},"verbs","Verbs",{"slug":286,"name":287,"color":50,"articles":31},"spanish","Spanish",{"slug":289,"name":290,"color":50,"articles":31},"a1","A1",{"slug":292,"name":293,"color":50,"articles":31},"a2","A2",{"slug":295,"name":296,"color":50,"articles":31},"tenses","Tenses",{"slug":298,"name":299,"color":50,"articles":31},"turkish","Turkish",{"slug":301,"name":302,"color":50,"articles":31},"animation","Animation",[304,305,306,307,308,309,310,311,312,313,314,315],{"slug":69,"name":70,"articles":179},{"slug":75,"name":76,"articles":183},{"slug":72,"name":73,"articles":185},{"slug":187,"name":188,"articles":189},{"slug":63,"name":67,"articles":191},{"slug":193,"name":194,"articles":195},{"slug":127,"name":131,"articles":197},{"slug":96,"name":97,"articles":199},{"slug":201,"name":202,"articles":203},{"slug":205,"name":206,"articles":207},{"slug":209,"name":210,"articles":211},{"slug":213,"name":214,"articles":178}]