[{"type_of":"article","id":4906821,"title":"We Built an AI Screenshot-to-Report System. The Hard Part Was Knowing When Not to Trust the AI.","description":"How we're building a fraud-reporting experience with React, TypeScript, Supabase, and Gemini — and...","readable_publish_date":"Oct 23","slug":"we-built-an-ai-screenshot-to-report-system-the-hard-part-was-knowing-when-not-to-trust-the-ai-35p5","path":"/axon-osint/we-built-an-ai-screenshot-to-report-system-the-hard-part-was-knowing-when-not-to-trust-the-ai-35p5","url":"https://dev.to/axon-osint/we-built-an-ai-screenshot-to-report-system-the-hard-part-was-knowing-when-not-to-trust-the-ai-35p5","comments_count":0,"public_reactions_count":0,"collection_id":45586,"published_timestamp":"2026-10-23T17:37:29Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmel9ttd40gxplrdlvp4k.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmel9ttd40gxplrdlvp4k.png","canonical_url":"https://dev.to/axon-osint/we-built-an-ai-screenshot-to-report-system-the-hard-part-was-knowing-when-not-to-trust-the-ai-35p5","created_at":"2026-10-23T17:34:51Z","edited_at":"2026-10-23T18:10:47Z","crossposted_at":null,"published_at":"2026-10-23T17:37:29Z","last_comment_at":"2026-10-23T17:37:29Z","reading_time_minutes":10,"tag_list":["ai","react","security","showdev"],"tags":"ai, react, security, showdev","user":{"name":"Axon OSINT","username":"axonosint","twitter_username":null,"github_username":null,"user_id":4203110,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4203110%2Fb0cd7b98-aba3-4ca8-88e2-32d0ae87a89d.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4203110%2Fb0cd7b98-aba3-4ca8-88e2-32d0ae87a89d.png"},"organization":{"name":"Axon OSINT","username":"axon-osint","slug":"axon-osint","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15543%2Fa89a331a-a5d4-40b8-a2e1-23eabe14822b.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15543%2Fa89a331a-a5d4-40b8-a2e1-23eabe14822b.png"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4905292,"title":"This Week In React #302 : Next.js, React Router, DevTools, Security | RN 0.88, Expo 58, Navigation | TypeScript, PHP, CrUX","description":"Hi everyone, Seb and Jan here 👋!  It’s a heavy security week, with patches from React and Next.js....","readable_publish_date":"Oct 23","slug":"this-week-in-react-302-nextjs-react-router-devtools-security-rn-088-expo-58-navigation-1dk0","path":"/sebastienlorber/this-week-in-react-302-nextjs-react-router-devtools-security-rn-088-expo-58-navigation-1dk0","url":"https://dev.to/sebastienlorber/this-week-in-react-302-nextjs-react-router-devtools-security-rn-088-expo-58-navigation-1dk0","comments_count":0,"public_reactions_count":2,"collection_id":18494,"published_timestamp":"2026-10-23T12:30:07Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":2,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff7jq2j9xacgdkpb2ysbk.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff7jq2j9xacgdkpb2ysbk.png","canonical_url":"https://thisweekinreact.com/newsletter/302","created_at":"2026-10-23T12:30:07Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T12:30:07Z","last_comment_at":"2026-10-23T12:30:07Z","reading_time_minutes":11,"tag_list":["react","reactnative"],"tags":"react, reactnative","user":{"name":"Sebastien Lorber","username":"sebastienlorber","twitter_username":"sebastienlorber","github_username":"slorber","user_id":200435,"website_url":"https://sebastienlorber.com","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F200435%2F3a773e8a-0013-4afe-8af4-f619d87a2c0a.jpeg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F200435%2F3a773e8a-0013-4afe-8af4-f619d87a2c0a.jpeg"}},{"type_of":"article","id":4907056,"title":"I built a browser-only image toolkit with React and Canvas (no server needed)","description":"Most \"free online image tools\" upload your files to a server, keep them for some period, and often...","readable_publish_date":"Oct 23","slug":"i-built-a-browser-only-image-toolkit-with-react-and-canvas-no-server-needed-36jp","path":"/siddhartha_mondal/i-built-a-browser-only-image-toolkit-with-react-and-canvas-no-server-needed-36jp","url":"https://dev.to/siddhartha_mondal/i-built-a-browser-only-image-toolkit-with-react-and-canvas-no-server-needed-36jp","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T18:31:46Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0sg00wldi84dgzwuv5ry.png","canonical_url":"https://pixelshrink-tools.netlify.app/blog/how-to-compress-images-without-losing-quality/","created_at":"2026-10-23T18:31:46Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T18:31:46Z","last_comment_at":"2026-10-23T18:31:46Z","reading_time_minutes":2,"tag_list":["webdev","javascript","react","showdev"],"tags":"webdev, javascript, react, showdev","user":{"name":"Siddhartha Mondal","username":"siddhartha_mondal","twitter_username":null,"github_username":null,"user_id":4203225,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4203225%2Feb89e3c9-5088-4514-a6a6-bd3b4d4fe9aa.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4203225%2Feb89e3c9-5088-4514-a6a6-bd3b4d4fe9aa.png"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4906996,"title":"JOPS Meets Next.js: Class-Based SPAs Inside Server-Rendered Apps","description":"JOPS 1.1.0 runs a full single-page app inside a Next.js page, next to React, with Route Handlers as its backend and one component to connect them.","readable_publish_date":"Oct 23","slug":"jops-meets-nextjs-class-based-spas-inside-server-rendered-apps-28e","path":"/arik_wald_87b25f4b2939e11/jops-meets-nextjs-class-based-spas-inside-server-rendered-apps-28e","url":"https://dev.to/arik_wald_87b25f4b2939e11/jops-meets-nextjs-class-based-spas-inside-server-rendered-apps-28e","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T18:18:54Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs78ies1lao0iriz1k4e2.jpg","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs78ies1lao0iriz1k4e2.jpg","canonical_url":"https://ui-db.com/articles/jops-nextjs-integration/","created_at":"2026-10-23T18:17:40Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T18:18:54Z","last_comment_at":"2026-10-23T18:18:54Z","reading_time_minutes":5,"tag_list":["javascript","nextjs","react","webdev"],"tags":"javascript, nextjs, react, webdev","user":{"name":"Arik Wald","username":"arik_wald_87b25f4b2939e11","twitter_username":null,"github_username":null,"user_id":4175864,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4175864%2F30f681b8-1c51-4b96-8d6a-87fb456d4e3a.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4175864%2F30f681b8-1c51-4b96-8d6a-87fb456d4e3a.png"}},{"type_of":"article","id":4906238,"title":"Building Denge in 4 Hours: A Multilingual Wellness Tracking App","description":"By Joud Kattaa Shikhoni and Jana Sweity  Development time: 4 hours   Built with: Replit, React,...","readable_publish_date":"Oct 23","slug":"building-denge-in-4-hours-a-multilingual-wellness-tracking-app-314j","path":"/jana_sweity3/building-denge-in-4-hours-a-multilingual-wellness-tracking-app-314j","url":"https://dev.to/jana_sweity3/building-denge-in-4-hours-a-multilingual-wellness-tracking-app-314j","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T15:45:43Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Figvg2cyy72fdbrmhixi7.png","canonical_url":"https://dev.to/jana_sweity3/building-denge-in-4-hours-a-multilingual-wellness-tracking-app-314j","created_at":"2026-10-23T15:45:43Z","edited_at":"2026-10-23T15:47:56Z","crossposted_at":null,"published_at":"2026-10-23T15:45:43Z","last_comment_at":"2026-10-23T15:45:43Z","reading_time_minutes":5,"tag_list":["buildinpublic","react","typescript","webdev"],"tags":"buildinpublic, react, typescript, webdev","user":{"name":"Jana Sweity3","username":"jana_sweity3","twitter_username":null,"github_username":null,"user_id":4202778,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202778%2F74383fba-d826-4245-89c3-d9316244626c.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202778%2F74383fba-d826-4245-89c3-d9316244626c.png"}},{"type_of":"article","id":4906048,"title":"Building Denge in 4 Hours: A Multilingual Wellness Tracking App","description":"By Joud Kattaa Shikhoni and Jana Sweity  Development time: 4 hours   Built with: Replit, React,...","readable_publish_date":"Oct 23","slug":"building-denge-in-4-hours-a-multilingual-wellness-tracking-app-8o6","path":"/joud_kattaa/building-denge-in-4-hours-a-multilingual-wellness-tracking-app-8o6","url":"https://dev.to/joud_kattaa/building-denge-in-4-hours-a-multilingual-wellness-tracking-app-8o6","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T15:11:44Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3vtmwyuwg9x59k9ui5jv.png","canonical_url":"https://dev.to/joud_kattaa/building-denge-in-4-hours-a-multilingual-wellness-tracking-app-8o6","created_at":"2026-10-23T15:11:44Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T15:11:44Z","last_comment_at":"2026-10-23T15:11:44Z","reading_time_minutes":5,"tag_list":["showdev","react","typescript","webdev"],"tags":"showdev, react, typescript, webdev","user":{"name":"Joud Kattaa","username":"joud_kattaa","twitter_username":null,"github_username":null,"user_id":4202735,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202735%2F8d4bde84-d743-4840-a93a-e4d2cf618dce.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202735%2F8d4bde84-d743-4840-a93a-e4d2cf618dce.png"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4905715,"title":"I Passed AZ-900 and Built a Quiz App with React, TypeScript and Supabase to Prepare","description":"I'm officially Microsoft Certified: Azure Fundamentals! ☁️  I'm a self-taught developer focused on...","readable_publish_date":"Oct 23","slug":"i-passed-az-900-and-built-a-quiz-app-with-react-typescript-and-supabase-to-prepare-3o0j","path":"/cyn4sh/i-passed-az-900-and-built-a-quiz-app-with-react-typescript-and-supabase-to-prepare-3o0j","url":"https://dev.to/cyn4sh/i-passed-az-900-and-built-a-quiz-app-with-react-typescript-and-supabase-to-prepare-3o0j","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T13:57:30Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3tm2gh7qg9ciu4mp3x23.jpg","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3tm2gh7qg9ciu4mp3x23.jpg","canonical_url":"https://dev.to/cyn4sh/i-passed-az-900-and-built-a-quiz-app-with-react-typescript-and-supabase-to-prepare-3o0j","created_at":"2026-10-23T13:57:31Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T13:57:30Z","last_comment_at":"2026-10-23T13:57:30Z","reading_time_minutes":2,"tag_list":["azure","react","typescript","beginners"],"tags":"azure, react, typescript, beginners","user":{"name":"Ashfall","username":"cyn4sh","twitter_username":null,"github_username":"cyn4sh","user_id":4134072,"website_url":"https://github.com/cyn4sh","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4134072%2F17a51608-40a9-4250-82c2-b73bea0c1430.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4134072%2F17a51608-40a9-4250-82c2-b73bea0c1430.jpg"}},{"type_of":"article","id":4905692,"title":"How to add an embedded wallet to a React app (Google login, gasless transactions)","description":"Most people who bounce off a web3 app never get past the \"install a browser extension and write down...","readable_publish_date":"Oct 23","slug":"how-to-add-an-embedded-wallet-to-a-react-app-google-login-gasless-transactions-4l98","path":"/adrianvrj/how-to-add-an-embedded-wallet-to-a-react-app-google-login-gasless-transactions-4l98","url":"https://dev.to/adrianvrj/how-to-add-an-embedded-wallet-to-a-react-app-google-login-gasless-transactions-4l98","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T13:51:33Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F88xybsrfyrg4n1qpx9lz.png","canonical_url":"https://dev.to/adrianvrj/how-to-add-an-embedded-wallet-to-a-react-app-google-login-gasless-transactions-4l98","created_at":"2026-10-23T13:51:33Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T13:51:33Z","last_comment_at":"2026-10-23T13:51:33Z","reading_time_minutes":8,"tag_list":["webdev","web3","react","tutorial"],"tags":"webdev, web3, react, tutorial","user":{"name":"Adrián Vargas Rodríguez","username":"adrianvrj","twitter_username":null,"github_username":null,"user_id":4202768,"website_url":"https://x.com/0xAdrianvrj","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202768%2F66caeb05-905d-4e27-979f-8880e7e98e56.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202768%2F66caeb05-905d-4e27-979f-8880e7e98e56.jpg"}},{"type_of":"article","id":4904344,"title":"How I built MetroNow Chennai: live train tracking for Chennai Metro","description":"A web app that shows where every Chennai Metro train is and when it will reach your station, across...","readable_publish_date":"Oct 23","slug":"how-i-built-metronow-chennai-live-train-tracking-for-chennai-metro-21p7","path":"/niranjan_4407/how-i-built-metronow-chennai-live-train-tracking-for-chennai-metro-21p7","url":"https://dev.to/niranjan_4407/how-i-built-metronow-chennai-live-train-tracking-for-chennai-metro-21p7","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T09:41:09Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto/https%3A%2F%2Fniranjand.in%2Fproject-shots%2Fmetronow.webp%3Fv%3D2","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto/https%3A%2F%2Fniranjand.in%2Fproject-shots%2Fmetronow.webp%3Fv%3D2","canonical_url":"https://niranjand.in/projects/metronow-chennai","created_at":"2026-10-23T09:41:09Z","edited_at":"2026-10-23T09:57:38Z","crossposted_at":null,"published_at":"2026-10-23T09:41:09Z","last_comment_at":"2026-10-23T09:41:09Z","reading_time_minutes":2,"tag_list":["react","opendata","transit","research"],"tags":"react, opendata, transit, research","user":{"name":"Niranjan","username":"niranjan_4407","twitter_username":null,"github_username":null,"user_id":4202211,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202211%2F170ec609-8bb1-47d9-b17e-a716f369927a.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202211%2F170ec609-8bb1-47d9-b17e-a716f369927a.png"}},{"type_of":"article","id":4879486,"title":"How to Update shadcn Components Without Losing Edits","description":"Update shadcn components without losing edits: what shadcn diff and add --diff show, why a 2-way diff hides whose change is whose, and how a 3-way merge works.","readable_publish_date":"Oct 23","slug":"how-to-update-shadcn-components-without-losing-edits-o1b","path":"/wingo-ui/how-to-update-shadcn-components-without-losing-edits-o1b","url":"https://dev.to/wingo-ui/how-to-update-shadcn-components-without-losing-edits-o1b","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T15:00:00Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto/https%3A%2F%2Fwingo-ui.com%2Fblog%2Fcovers%2Fupdate-shadcn-components-without-losing-edits.webp","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto/https%3A%2F%2Fwingo-ui.com%2Fblog%2Fcovers%2Fupdate-shadcn-components-without-losing-edits.webp","canonical_url":"https://wingo-ui.com/blog/update-shadcn-components-without-losing-edits","created_at":"2026-10-19T19:42:52Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T15:00:00Z","last_comment_at":"2026-10-23T15:00:00Z","reading_time_minutes":12,"tag_list":["shadcn","git","react","cli"],"tags":"shadcn, git, react, cli","user":{"name":"Serban Dan Rusu","username":"serbanrusu","twitter_username":null,"github_username":null,"user_id":4193961,"website_url":"https://wingo-ui.com","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4193961%2Fb0cd9d03-00e0-4a93-b2f5-ee463fa6cfed.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4193961%2Fb0cd9d03-00e0-4a93-b2f5-ee463fa6cfed.jpg"},"organization":{"name":"Wingo UI","username":"wingo-ui","slug":"wingo-ui","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15415%2F3d958290-6c30-4c8b-9ae5-fbab7bb46f06.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15415%2F3d958290-6c30-4c8b-9ae5-fbab7bb46f06.png"}},{"type_of":"article","id":4884721,"title":"An OTP input that feels native: autofill, paste across six boxes, and a shake on error","description":"Six single-digit inputs that behave like one field: iOS code autofill, paste anywhere, backspace that walks back, no gaps, a spinning arc while the code is checked, and a shake that replays on every wrong code.","readable_publish_date":"Oct 23","slug":"an-otp-input-that-feels-native-autofill-paste-across-six-boxes-and-a-shake-on-error-3noj","path":"/teodoravadani/an-otp-input-that-feels-native-autofill-paste-across-six-boxes-and-a-shake-on-error-3noj","url":"https://dev.to/teodoravadani/an-otp-input-that-feels-native-autofill-paste-across-six-boxes-and-a-shake-on-error-3noj","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T08:04:40Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fqodesign-media.sites.tab.bot%2Ftutorial-2-cover.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fqodesign-media.sites.tab.bot%2Ftutorial-2-cover.png","canonical_url":"https://dev.to/teodoravadani/an-otp-input-that-feels-native-autofill-paste-across-six-boxes-and-a-shake-on-error-3noj","created_at":"2026-10-20T17:37:19Z","edited_at":"2026-10-23T08:15:23Z","crossposted_at":null,"published_at":"2026-10-23T08:04:40Z","last_comment_at":"2026-10-23T08:04:40Z","reading_time_minutes":11,"tag_list":["react","nextjs","a11y","webdev"],"tags":"react, nextjs, a11y, webdev","user":{"name":"Teodor Avadani","username":"teodoravadani","twitter_username":null,"github_username":"teodoravadani","user_id":4196608,"website_url":"https://qodesign.dev","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4196608%2F63b8cab0-581c-459c-8344-ef54e70564f8.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4196608%2F63b8cab0-581c-459c-8344-ef54e70564f8.png"}},{"type_of":"article","id":4903812,"title":"How I built Word-style A4 pages for TipTap without touching the document","description":"If you've built an editor with TipTap / ProseMirror, you've probably heard this request: \"Make it...","readable_publish_date":"Oct 23","slug":"how-i-built-word-style-a4-pages-for-tiptap-without-touching-the-document-778","path":"/huy_phan_173c933272803418/how-i-built-word-style-a4-pages-for-tiptap-without-touching-the-document-778","url":"https://dev.to/huy_phan_173c933272803418/how-i-built-word-style-a4-pages-for-tiptap-without-touching-the-document-778","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T08:07:55Z","language":"en","subforem_id":1,"ai_disclosure_level":"some_ai","ai_disclosure_label":"AI-assisted","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmgctu6pmdeggwec7bhl.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmgctu6pmdeggwec7bhl.png","canonical_url":"https://dev.to/huy_phan_173c933272803418/how-i-built-word-style-a4-pages-for-tiptap-without-touching-the-document-778","created_at":"2026-10-23T08:07:55Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T08:07:55Z","last_comment_at":"2026-10-23T08:07:55Z","reading_time_minutes":5,"tag_list":["react","javascript","opensource","webdev"],"tags":"react, javascript, opensource, webdev","user":{"name":"Huy Phan","username":"huy_phan_173c933272803418","twitter_username":null,"github_username":null,"user_id":4201866,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4201866%2F2bdac583-b8f3-483b-b3a4-717fb68cfdb7.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4201866%2F2bdac583-b8f3-483b-b3a4-717fb68cfdb7.png"}},{"type_of":"article","id":4903650,"title":"Skills Are Guidance, Not a Security Boundary: A Next.js Server Action That Stays Server-Side","description":"How a barrel export with 'use client' can quietly pull server credentials into the browser bundle—and the ownership-scoped architecture that prevents it.","readable_publish_date":"Oct 23","slug":"skills-are-guidance-not-a-security-boundary-a-nextjs-server-action-that-stays-server-side-296i","path":"/elena_rostova/skills-are-guidance-not-a-security-boundary-a-nextjs-server-action-that-stays-server-side-296i","url":"https://dev.to/elena_rostova/skills-are-guidance-not-a-security-boundary-a-nextjs-server-action-that-stays-server-side-296i","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T07:37:42Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fopengraph.githubassets.com%2F1%2Fvercel-labs%2Fskills","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fopengraph.githubassets.com%2F1%2Fvercel-labs%2Fskills","canonical_url":"https://dev.to/elena_rostova/skills-are-guidance-not-a-security-boundary-a-nextjs-server-action-that-stays-server-side-296i","created_at":"2026-10-23T07:37:42Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T07:37:42Z","last_comment_at":"2026-10-23T07:37:42Z","reading_time_minutes":5,"tag_list":["nextjs","react","typescript","webdev"],"tags":"nextjs, react, typescript, webdev","user":{"name":"Elena Rostova","username":"elena_rostova","twitter_username":null,"github_username":null,"user_id":4190042,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4190042%2Fc921631b-0a32-4efb-afc7-a55e00824d12.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4190042%2Fc921631b-0a32-4efb-afc7-a55e00824d12.png"}},{"type_of":"article","id":4904203,"title":"React Cheat Sheet 2026: Learn Once, Remember Forever (React 19.2)","description":"A no-fluff React cheat sheet: JSX, state, hooks, effects, React 19 features, performance, testing and interview questions. Built from react.dev and MDN.","readable_publish_date":"Oct 23","slug":"react-cheat-sheet-2026-learn-once-remember-forever-react-192-2bo2","path":"/devcodehub99/react-cheat-sheet-2026-learn-once-remember-forever-react-192-2bo2","url":"https://dev.to/devcodehub99/react-cheat-sheet-2026-learn-once-remember-forever-react-192-2bo2","comments_count":0,"public_reactions_count":0,"collection_id":45565,"published_timestamp":"2026-10-23T09:18:11Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2ztysj0gf7li8crq9ycx.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2ztysj0gf7li8crq9ycx.png","canonical_url":"https://dev.to/devcodehub99/react-cheat-sheet-2026-learn-once-remember-forever-react-192-2bo2","created_at":"2026-10-23T09:18:12Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T09:18:11Z","last_comment_at":"2026-10-23T09:18:11Z","reading_time_minutes":22,"tag_list":["react","webdev","javascript","beginners"],"tags":"react, webdev, javascript, beginners","user":{"name":"VIKAS","username":"devcodehub99","twitter_username":"VikasMukhiya99","github_username":"DevCodeHub99","user_id":912241,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F912241%2Ffe7d2cff-def4-4609-bba6-56465b753a86.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F912241%2Ffe7d2cff-def4-4609-bba6-56465b753a86.jpg"}},{"type_of":"article","id":4905058,"title":"My Invite-Only Gate Lived in the Browser","description":"Originally published on meridianbuild.dev, my build log for FastPass, a paid inbox where people pay...","readable_publish_date":"Oct 23","slug":"my-invite-only-gate-lived-in-the-browser-3697","path":"/marcoblch/my-invite-only-gate-lived-in-the-browser-3697","url":"https://dev.to/marcoblch/my-invite-only-gate-lived-in-the-browser-3697","comments_count":3,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T11:51:41Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsojo4ixjz5v44h480b0u.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsojo4ixjz5v44h480b0u.png","canonical_url":"https://dev.to/marcoblch/my-invite-only-gate-lived-in-the-browser-3697","created_at":"2026-10-23T11:51:41Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T11:51:41Z","last_comment_at":"2026-10-23T13:24:10Z","reading_time_minutes":6,"tag_list":["security","webdev","react"],"tags":"security, webdev, react","user":{"name":"MarcoBlch","username":"marcoblch","twitter_username":null,"github_username":"MarcoBlch","user_id":4112464,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4112464%2F71d50e82-606f-4c4a-98bc-5443c44d14ac.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4112464%2F71d50e82-606f-4c4a-98bc-5443c44d14ac.jpg"}},{"type_of":"article","id":4905052,"title":"Four of our 24 shadcn components are imported by nothing, and that folder is the only code in the repo with no semicolons","description":"An audit of the one directory a CLI wrote: 338 dead lines, a formatting seam you can measure, a one line shim so an alias keeps working, and the Radix plus React 19 form-reset bug patched in three of them.","readable_publish_date":"Oct 23","slug":"four-of-our-24-shadcn-components-are-imported-by-nothing-and-that-folder-is-the-only-code-in-the-2f83","path":"/daniel_pertu/four-of-our-24-shadcn-components-are-imported-by-nothing-and-that-folder-is-the-only-code-in-the-2f83","url":"https://dev.to/daniel_pertu/four-of-our-24-shadcn-components-are-imported-by-nothing-and-that-folder-is-the-only-code-in-the-2f83","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T11:50:33Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F63m5uhntkegma1ix5er1.png","canonical_url":"https://dev.to/daniel_pertu/four-of-our-24-shadcn-components-are-imported-by-nothing-and-that-folder-is-the-only-code-in-the-2f83","created_at":"2026-10-23T11:50:33Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T11:50:33Z","last_comment_at":"2026-10-23T11:50:33Z","reading_time_minutes":7,"tag_list":["react","typescript","tailwindcss","webdev"],"tags":"react, typescript, tailwindcss, webdev","user":{"name":"Daniel Pertu","username":"daniel_pertu","twitter_username":null,"github_username":null,"user_id":3981169,"website_url":"https://cogniprep.app","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3981169%2F83f3f6c9-9d75-47a7-9b7c-c28d13594696.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3981169%2F83f3f6c9-9d75-47a7-9b7c-c28d13594696.jpg"}},{"type_of":"article","id":4877398,"title":"Best Open Source React Calendar Libraries for Scheduling in 2026","description":"The best open source React calendar libraries depend on what you're building. The need for a simple...","readable_publish_date":"Oct 23","slug":"best-open-source-react-calendar-libraries-for-scheduling-in-2026-4h11","path":"/hadil/best-open-source-react-calendar-libraries-for-scheduling-in-2026-4h11","url":"https://dev.to/hadil/best-open-source-react-calendar-libraries-for-scheduling-in-2026-4h11","comments_count":2,"public_reactions_count":20,"collection_id":null,"published_timestamp":"2026-10-23T09:32:26Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":20,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhiep7c1e7k32yxkhkbfh.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhiep7c1e7k32yxkhkbfh.png","canonical_url":"https://dev.to/hadil/best-open-source-react-calendar-libraries-for-scheduling-in-2026-4h11","created_at":"2026-10-19T11:16:01Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T09:32:26Z","last_comment_at":"2026-10-23T09:57:38Z","reading_time_minutes":21,"tag_list":["webdev","programming","react","css"],"tags":"webdev, programming, react, css","user":{"name":"Hadil Ben Abdallah","username":"hadil","twitter_username":"hadilbnabdallah","github_username":"Hadil-Ben-Abdallah","user_id":1209000,"website_url":"https://www.linkedin.com/in/hadil-ben-abdallah/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1209000%2Fb29d37d8-2efe-4391-9796-a6f8a483f1bd.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1209000%2Fb29d37d8-2efe-4391-9796-a6f8a483f1bd.png"}},{"type_of":"article","id":4904485,"title":"Give Your AI Feature a Kill Switch, a Budget, and a Paper Trail","description":"The second-most dangerous demo is \"watch the agent do everything.\" The most dangerous is shipping...","readable_publish_date":"Oct 23","slug":"give-your-ai-feature-a-kill-switch-a-budget-and-a-paper-trail-ila","path":"/jwzqeygxtonh/give-your-ai-feature-a-kill-switch-a-budget-and-a-paper-trail-ila","url":"https://dev.to/jwzqeygxtonh/give-your-ai-feature-a-kill-switch-a-budget-and-a-paper-trail-ila","comments_count":1,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T10:04:57Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmuze0iywi3o8asdjxfjs.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmuze0iywi3o8asdjxfjs.png","canonical_url":"https://dev.to/jwzqeygxtonh/give-your-ai-feature-a-kill-switch-a-budget-and-a-paper-trail-ila","created_at":"2026-10-23T10:04:57Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T10:04:57Z","last_comment_at":"2026-10-23T11:07:15Z","reading_time_minutes":5,"tag_list":["ai","javascript","react","node"],"tags":"ai, javascript, react, node","user":{"name":"Chaminade Dondah ADJOLOU","username":"jwzqeygxtonh","twitter_username":null,"github_username":null,"user_id":3955097,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png"}},{"type_of":"article","id":4904769,"title":"'use client' Doesn't Turn Your Whole App Into a Client Component (The Children Trick Nobody Explains)","description":"You need a theme provider, so you create a file, add 'use client' at the top, and wrap your app in...","readable_publish_date":"Oct 23","slug":"use-client-doesnt-turn-your-whole-app-into-a-client-component-the-children-trick-nobody-5501","path":"/anas_sheikh_2/use-client-doesnt-turn-your-whole-app-into-a-client-component-the-children-trick-nobody-5501","url":"https://dev.to/anas_sheikh_2/use-client-doesnt-turn-your-whole-app-into-a-client-component-the-children-trick-nobody-5501","comments_count":2,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T10:56:44Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faja52f1s4s2nrfinkrzv.png","canonical_url":"https://dev.to/anas_sheikh_2/use-client-doesnt-turn-your-whole-app-into-a-client-component-the-children-trick-nobody-5501","created_at":"2026-10-23T10:56:44Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T10:56:44Z","last_comment_at":"2026-10-23T18:54:51Z","reading_time_minutes":4,"tag_list":["nextjs","javascript","webdev","react"],"tags":"nextjs, javascript, webdev, react","user":{"name":"Anas Sheikh","username":"anas_sheikh_2","twitter_username":null,"github_username":null,"user_id":4023868,"website_url":"http://www.pixelanas.com/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4023868%2Fa72627f1-0556-4d31-aa00-0cc6ada7c4fb.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4023868%2Fa72627f1-0556-4d31-aa00-0cc6ada7c4fb.png"}},{"type_of":"article","id":4906799,"title":"How I Built a Cross-Platform App Using Tauri and Python FastAPI","description":"Talking first about the front-end framework Tauri, Tauri was first introduced in 2019 as an...","readable_publish_date":"Oct 23","slug":"how-i-built-a-cross-platform-app-using-tauri-and-python-fastapi-3734","path":"/moqunaybi/how-i-built-a-cross-platform-app-using-tauri-and-python-fastapi-3734","url":"https://dev.to/moqunaybi/how-i-built-a-cross-platform-app-using-tauri-and-python-fastapi-3734","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T17:55:40Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fow5y1g2n0y8n3e0fk9ne.png","canonical_url":"https://dev.to/moqunaybi/how-i-built-a-cross-platform-app-using-tauri-and-python-fastapi-3734","created_at":"2026-10-23T17:29:05Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T17:55:40Z","last_comment_at":"2026-10-23T17:55:40Z","reading_time_minutes":2,"tag_list":["python","typescript","tauri","react"],"tags":"python, typescript, tauri, react","user":{"name":"Mo Qunaybi","username":"moqunaybi","twitter_username":null,"github_username":null,"user_id":1743774,"website_url":"https://ihives.com","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1743774%2F7c4f2db4-fe38-464e-a898-5294b4b71fc3.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1743774%2F7c4f2db4-fe38-464e-a898-5294b4b71fc3.jpg"}},{"type_of":"article","id":4865550,"title":"Why my portfolio looks like a newspaper (and what that taught me about design systems)","description":"Most developer portfolios are a dark gradient with a glowing card. I wanted something people would...","readable_publish_date":"Oct 23","slug":"why-my-portfolio-looks-like-a-newspaper-and-what-that-taught-me-about-design-systems-46m9","path":"/suraj_nandan_dcd78e7ec898/why-my-portfolio-looks-like-a-newspaper-and-what-that-taught-me-about-design-systems-46m9","url":"https://dev.to/suraj_nandan_dcd78e7ec898/why-my-portfolio-looks-like-a-newspaper-and-what-that-taught-me-about-design-systems-46m9","comments_count":0,"public_reactions_count":0,"collection_id":45299,"published_timestamp":"2026-10-23T03:30:00Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmzop265qx25vddvaiety.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmzop265qx25vddvaiety.png","canonical_url":"https://dev.to/suraj_nandan_dcd78e7ec898/why-my-portfolio-looks-like-a-newspaper-and-what-that-taught-me-about-design-systems-46m9","created_at":"2026-10-17T04:25:18Z","edited_at":"2026-10-17T04:54:21Z","crossposted_at":null,"published_at":"2026-10-23T03:30:00Z","last_comment_at":"2026-10-23T03:30:00Z","reading_time_minutes":5,"tag_list":["design","css","react","webdev"],"tags":"design, css, react, webdev","user":{"name":"SURAJ NANDAN","username":"suraj_nandan_dcd78e7ec898","twitter_username":null,"github_username":null,"user_id":3859390,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3859390%2Fc4b8a659-c2b8-414d-ae38-8cc52126999d.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3859390%2Fc4b8a659-c2b8-414d-ae38-8cc52126999d.jpg"}},{"type_of":"article","id":4903633,"title":"Building a 29-skill map from an append-only answer log","description":"I build satultra, a digital SAT practice site. After a practice test, most tools lead with one...","readable_publish_date":"Oct 23","slug":"building-a-29-skill-map-from-an-append-only-answer-log-1o1","path":"/ahmet_koc_b5a6d8cd526edd6/building-a-29-skill-map-from-an-append-only-answer-log-1o1","url":"https://dev.to/ahmet_koc_b5a6d8cd526edd6/building-a-29-skill-map-from-an-append-only-answer-log-1o1","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T07:34:14Z","language":"en","subforem_id":1,"ai_disclosure_level":"fully_autonomous","ai_disclosure_label":"Fully Autonomous","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjvdxpbchc7vihl56baqa.png","canonical_url":"https://dev.to/ahmet_koc_b5a6d8cd526edd6/building-a-29-skill-map-from-an-append-only-answer-log-1o1","created_at":"2026-10-23T07:34:14Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T07:34:14Z","last_comment_at":"2026-10-23T07:34:14Z","reading_time_minutes":5,"tag_list":["showdev","react","firebase","javascript"],"tags":"showdev, react, firebase, javascript","user":{"name":"Ahmet Koc","username":"ahmet_koc_b5a6d8cd526edd6","twitter_username":null,"github_username":null,"user_id":4201587,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4201587%2Ffaedcd8e-34e5-4d77-91b4-aa7cfaeabc11.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4201587%2Ffaedcd8e-34e5-4d77-91b4-aa7cfaeabc11.jpg"},"flare_tag":{"name":"showdev","bg_color_hex":"#091b47","text_color_hex":"#b2ffe1"}},{"type_of":"article","id":4874062,"title":"What static analysis can't tell you about React re-renders","description":"Re-render lab is a small tool I built: you paste a React component, describe a scenario (a prop...","readable_publish_date":"Oct 23","slug":"what-static-analysis-cant-tell-you-about-react-re-renders-3e9i","path":"/kolodziejczykamil/what-static-analysis-cant-tell-you-about-react-re-renders-3e9i","url":"https://dev.to/kolodziejczykamil/what-static-analysis-cant-tell-you-about-react-re-renders-3e9i","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T07:00:00Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcb9wi21fm9nw94deywes.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcb9wi21fm9nw94deywes.png","canonical_url":"https://kamilkolodziejczyk.dev/notes/what-static-analysis-cannot-tell-you-about-react-re-renders","created_at":"2026-10-18T20:50:58Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T07:00:00Z","last_comment_at":"2026-10-23T07:00:00Z","reading_time_minutes":3,"tag_list":["react","javascript","performance","webdev"],"tags":"react, javascript, performance, webdev","user":{"name":"Kamil Kołodziejczyk","username":"kolodziejczykamil","twitter_username":null,"github_username":null,"user_id":4192829,"website_url":"https://kamilkolodziejczyk.dev","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4192829%2F66fd20a2-3013-4b95-9a27-e6e9d1db481c.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4192829%2F66fd20a2-3013-4b95-9a27-e6e9d1db481c.png"}},{"type_of":"article","id":4897425,"title":"Permissions in React that explain themselves","description":"Every app with roles ends up with the same support ticket: \"I can't see the Refund button.\"  Then...","readable_publish_date":"Oct 23","slug":"permissions-in-react-that-explain-themselves-9g","path":"/mostafashadow/permissions-in-react-that-explain-themselves-9g","url":"https://dev.to/mostafashadow/permissions-in-react-that-explain-themselves-9g","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T07:00:00Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftx0twhs9c07g12kpjcyq.png","canonical_url":"https://dev.to/mostafashadow/permissions-in-react-that-explain-themselves-9g","created_at":"2026-10-22T14:29:51Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T07:00:00Z","last_comment_at":"2026-10-23T07:00:00Z","reading_time_minutes":3,"tag_list":["react","nextjs","typescript","webdev"],"tags":"react, nextjs, typescript, webdev","user":{"name":"Msotafa Mohamed","username":"mostafashadow","twitter_username":null,"github_username":"Mostafashadow1","user_id":887374,"website_url":"https://www.shadow-coding.com/","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F887374%2Fae71d42c-2a15-4829-a952-db0f05b49d04.webp","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F887374%2Fae71d42c-2a15-4829-a952-db0f05b49d04.webp"}},{"type_of":"article","id":4905028,"title":"Two Postgres error codes are the only ones we retry, and the retry sits underneath a React cache()","description":"33 call sites ask who you are and 19 ask which venue you run. One request answers each question once, retries exactly two SQLSTATEs, and rethrows everything else on the first attempt.","readable_publish_date":"Oct 23","slug":"two-postgres-error-codes-are-the-only-ones-we-retry-and-the-retry-sits-underneath-a-react-cache-3n4e","path":"/daniel_pertu/two-postgres-error-codes-are-the-only-ones-we-retry-and-the-retry-sits-underneath-a-react-cache-3n4e","url":"https://dev.to/daniel_pertu/two-postgres-error-codes-are-the-only-ones-we-retry-and-the-retry-sits-underneath-a-react-cache-3n4e","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T11:44:28Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faz7paeah7mhf4whu0rbf.png","canonical_url":"https://dev.to/daniel_pertu/two-postgres-error-codes-are-the-only-ones-we-retry-and-the-retry-sits-underneath-a-react-cache-3n4e","created_at":"2026-10-23T11:44:28Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T11:44:28Z","last_comment_at":"2026-10-23T11:44:28Z","reading_time_minutes":6,"tag_list":["nextjs","postgres","react","webdev"],"tags":"nextjs, postgres, react, webdev","user":{"name":"Daniel Pertu","username":"daniel_pertu","twitter_username":null,"github_username":null,"user_id":3981169,"website_url":"https://cogniprep.app","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3981169%2F83f3f6c9-9d75-47a7-9b7c-c28d13594696.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3981169%2F83f3f6c9-9d75-47a7-9b7c-c28d13594696.jpg"}},{"type_of":"article","id":4905024,"title":"Our setup wizard writes nothing to the database until the last step, and the Back button still works","description":"The step lives in the URL through pushState, a watermark stops deep links into step four, and the reason the Continue button is off is one expression that also locks the step list.","readable_publish_date":"Oct 23","slug":"our-setup-wizard-writes-nothing-to-the-database-until-the-last-step-and-the-back-button-still-works-59ic","path":"/daniel_pertu/our-setup-wizard-writes-nothing-to-the-database-until-the-last-step-and-the-back-button-still-works-59ic","url":"https://dev.to/daniel_pertu/our-setup-wizard-writes-nothing-to-the-database-until-the-last-step-and-the-back-button-still-works-59ic","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T11:43:22Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fko0tid8emuqycyd2p4ve.png","canonical_url":"https://dev.to/daniel_pertu/our-setup-wizard-writes-nothing-to-the-database-until-the-last-step-and-the-back-button-still-works-59ic","created_at":"2026-10-23T11:43:22Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T11:43:22Z","last_comment_at":"2026-10-23T11:43:22Z","reading_time_minutes":8,"tag_list":["react","nextjs","typescript","ux"],"tags":"react, nextjs, typescript, ux","user":{"name":"Daniel Pertu","username":"daniel_pertu","twitter_username":null,"github_username":null,"user_id":3981169,"website_url":"https://cogniprep.app","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3981169%2F83f3f6c9-9d75-47a7-9b7c-c28d13594696.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3981169%2F83f3f6c9-9d75-47a7-9b7c-c28d13594696.jpg"}},{"type_of":"article","id":4903189,"title":"Your Custom Hooks Tear in React 18. `useSyncExternalStore` Fixes It.","description":"A useState + useEffect hook that subscribes to window size, localStorage, or a WebSocket looks fine until React 18's concurrent rendering shows two parts of your UI two different values at once. useSyncExternalStore is the hook built to stop that.","readable_publish_date":"Oct 23","slug":"your-custom-hooks-tear-in-react-18-usesyncexternalstore-fixes-it-2ogd","path":"/parsajiravand/your-custom-hooks-tear-in-react-18-usesyncexternalstore-fixes-it-2ogd","url":"https://dev.to/parsajiravand/your-custom-hooks-tear-in-react-18-usesyncexternalstore-fixes-it-2ogd","comments_count":0,"public_reactions_count":5,"collection_id":null,"published_timestamp":"2026-10-23T06:11:03Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":5,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fbestpractic.org%2Fmedia%2Fcovers%2Fusesyncexternalstore-tearing-fix.png","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fbestpractic.org%2Fmedia%2Fcovers%2Fusesyncexternalstore-tearing-fix.png","canonical_url":"https://bestpractic.org/blog/usesyncexternalstore-tearing-fix","created_at":"2026-10-23T06:11:03Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T06:11:03Z","last_comment_at":"2026-10-23T06:11:03Z","reading_time_minutes":4,"tag_list":["react","javascript","webdev","frontend"],"tags":"react, javascript, webdev, frontend","user":{"name":"Parsa Jiravand","username":"parsajiravand","twitter_username":null,"github_username":null,"user_id":3831018,"website_url":"https://github.com/parsajiravand","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3831018%2Ff09b70fc-3b0d-4ce2-bb7e-d78ee6f7d701.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3831018%2Ff09b70fc-3b0d-4ce2-bb7e-d78ee6f7d701.jpg"}},{"type_of":"article","id":4904449,"title":"useAsRef: The Latest Value Without the Re-Subscribe","description":"A four-line hook that kills stale closures without making your effects run again — and why the update...","readable_publish_date":"Oct 23","slug":"useasref-the-latest-value-without-the-re-subscribe-jg2","path":"/saiful7778/useasref-the-latest-value-without-the-re-subscribe-jg2","url":"https://dev.to/saiful7778/useasref-the-latest-value-without-the-re-subscribe-jg2","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2026-10-23T09:57:22Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":1,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2nzzp73y3jdp6zmb6ftl.jpeg","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2nzzp73y3jdp6zmb6ftl.jpeg","canonical_url":"https://dev.to/saiful7778/useasref-the-latest-value-without-the-re-subscribe-jg2","created_at":"2026-10-23T09:57:22Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T09:57:22Z","last_comment_at":"2026-10-23T09:57:22Z","reading_time_minutes":9,"tag_list":["react","typescript"],"tags":"react, typescript","user":{"name":"Saiful Islam","username":"saiful7778","twitter_username":null,"github_username":"saiful7778","user_id":1339511,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1339511%2F443eae91-cf10-4dee-9c41-2e5fc645933f.jpeg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1339511%2F443eae91-cf10-4dee-9c41-2e5fc645933f.jpeg"}},{"type_of":"article","id":4879485,"title":"Shadcn Responsive Dialog: Card on Desktop, Sheet on Phones","description":"Build a shadcn responsive dialog once: a centered card above 768px, a draggable bottom sheet below it, one copy of the content and no hydration flash.","readable_publish_date":"Oct 23","slug":"shadcn-responsive-dialog-card-on-desktop-sheet-on-phones-3aoj","path":"/wingo-ui/shadcn-responsive-dialog-card-on-desktop-sheet-on-phones-3aoj","url":"https://dev.to/wingo-ui/shadcn-responsive-dialog-card-on-desktop-sheet-on-phones-3aoj","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T07:00:00Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto/https%3A%2F%2Fwingo-ui.com%2Fblog%2Fcovers%2Fshadcn-responsive-dialog-on-mobile.webp","social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto/https%3A%2F%2Fwingo-ui.com%2Fblog%2Fcovers%2Fshadcn-responsive-dialog-on-mobile.webp","canonical_url":"https://wingo-ui.com/blog/shadcn-responsive-dialog-on-mobile","created_at":"2026-10-19T19:42:44Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T07:00:00Z","last_comment_at":"2026-10-23T07:00:00Z","reading_time_minutes":12,"tag_list":["react","shadcn","nextjs","mobile"],"tags":"react, shadcn, nextjs, mobile","user":{"name":"Serban Dan Rusu","username":"serbanrusu","twitter_username":null,"github_username":null,"user_id":4193961,"website_url":"https://wingo-ui.com","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4193961%2Fb0cd9d03-00e0-4a93-b2f5-ee463fa6cfed.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4193961%2Fb0cd9d03-00e0-4a93-b2f5-ee463fa6cfed.jpg"},"organization":{"name":"Wingo UI","username":"wingo-ui","slug":"wingo-ui","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15415%2F3d958290-6c30-4c8b-9ae5-fbab7bb46f06.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15415%2F3d958290-6c30-4c8b-9ae5-fbab7bb46f06.png"}},{"type_of":"article","id":4894045,"title":"Static HTML passed on all 46 pages. Rendered in Chrome, 8 were broken","description":"Layout bugs live in the computed box model, not the markup. Five headless Chrome measurements I now gate on, and a payload bug that whitescreens pages.","readable_publish_date":"Oct 23","slug":"static-html-passed-on-all-46-pages-rendered-in-chrome-8-were-broken-5dn","path":"/tong_zhang_142dabd4f2b865/static-html-passed-on-all-46-pages-rendered-in-chrome-8-were-broken-5dn","url":"https://dev.to/tong_zhang_142dabd4f2b865/static-html-passed-on-all-46-pages-rendered-in-chrome-8-were-broken-5dn","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2026-10-23T02:05:54Z","language":"en","subforem_id":1,"ai_disclosure_level":"not_disclosed","ai_disclosure_label":"Not Disclosed","positive_reactions_count":0,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6u8yev7y4vhw72k3u1ha.png","canonical_url":"https://dev.to/tong_zhang_142dabd4f2b865/static-html-passed-on-all-46-pages-rendered-in-chrome-8-were-broken-5dn","created_at":"2026-10-22T05:32:53Z","edited_at":null,"crossposted_at":null,"published_at":"2026-10-23T02:05:54Z","last_comment_at":"2026-10-23T02:05:54Z","reading_time_minutes":4,"tag_list":["webdev","javascript","react","testing"],"tags":"webdev, javascript, react, testing","user":{"name":"tong zhang","username":"tong_zhang_142dabd4f2b865","twitter_username":null,"github_username":null,"user_id":4199629,"website_url":null,"profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4199629%2F427f0b6e-bf0d-4f8d-97c4-5d26ca7267fc.png","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4199629%2F427f0b6e-bf0d-4f8d-97c4-5d26ca7267fc.png"}}]