41554 blogs · [ { "id": "01a087de-4da8-71d1-94be-1af908fc9f40", "title": "Create a Per-Request Database Instance with Middleware", "url": "https://sergiodxa.com/tutorials/create-a-per-request-database-instance-with-middleware", "published_at": "2026-03-03T05:37:11+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af908ffda7c", "title": "Create a Multi-Directory Route Organization in React Router", "url": "https://sergiodxa.com/tutorials/create-a-multi-directory-route-organization-in-react-router", "published_at": "2026-02-23T17:00:00+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af909258a9f", "title": "Use Sec-Fetch Headers for CSRF Protection", "url": "https://sergiodxa.com/tutorials/use-sec-fetch-headers-for-csrf-protection", "published_at": "2026-02-23T04:49:51+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af9097ce93c", "title": "SQLite-on-the-Server Is Misunderstood: Better At Hyper-Scale Than Micro-Scale", "url": "https://www.rivet.dev/blog/2025-02-16-sqlite-on-the-server-is-misunderstood/", "published_at": "2026-02-23T04:45:13+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af909b02e88", "title": "Using React Router Loaders and Actions as Integration Points", "url": "https://sergiodxa.com/articles/react-router-loaders-and-actions-as-integration-points", "published_at": "2026-02-20T06:40:28+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90a1b3331", "title": "The Too Early Breakpoint", "url": "https://ishadeed.com/article/too-early-breakpoint/", "published_at": "2026-02-03T19:32:28+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90a79d86d", "title": "More invoker commands, and more reasons not to use JavaScript please", "url": "https://pawelgrzybek.com/more-invoker-commands-and-more-reasons-not-to-use-javascript-please/", "published_at": "2026-02-03T19:25:26+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90b3f429e", "title": "sergiodxa/agent-skills", "url": "https://github.com/sergiodxa/agent-skills", "published_at": "2026-01-28T19:49:17+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90b65d1b7", "title": "The Incredible Overcomplexity of the Shadcn Radio Button", "url": "https://paulmakeswebsites.com/writing/shadcn-radio-button/", "published_at": "2026-01-20T23:15:22+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90b9d0750", "title": "Affordances: The Missing Layer in Frontend Architecture", "url": "https://fractaledmind.com/2025/12/01/ui-affordances/", "published_at": "2025-12-22T19:02:12+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90bef142e", "title": "Confirmation dialogs with zero JavaScript", "url": "https://fractaledmind.com/2025/12/16/turbo-confirm-dialogs-without-javascript/", "published_at": "2025-12-22T19:00:05+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90c2fd57a", "title": "Stylish dialogs", "url": "https://fractaledmind.com/2025/12/18/stylish-dialogs/", "published_at": "2025-12-22T19:00:00+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90d1b903a", "title": "Logging Sucks - Your Logs Are Lying To You", "url": "https://loggingsucks.com/", "published_at": "2025-12-22T07:18:06+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90d65e6f6", "title": "Micro-libraries need to die already", "url": "https://bvisness.me/microlibraries/", "published_at": "2025-12-01T18:44:47+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90e02daa0", "title": "The stacking workflow", "url": "https://www.stacking.dev/", "published_at": "2025-11-10T23:31:21+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90eec02f2", "title": "Composition Is All You Need by Fernando Rojo at React Universe Conf 2025", "url": "https://www.youtube.com/watch?v=4KvbVq3Eg5w", "published_at": "2025-11-05T06:35:12+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af90f5ab310", "title": "Tips for good UI implementation", "url": "https://jasonlbeggs.com/blog/tips-for-good-ui-implementation", "published_at": "2025-10-28T05:37:37+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af9103ae883", "title": "Dedupe Server Calls with Remix Utils Batcher", "url": "https://sergiodxa.com/tutorials/dedupe-server-calls-with-remix-utils-batcher", "published_at": "2025-10-19T07:14:18+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91106e7b7", "title": "Transform FormData Between UI and Database in React Router", "url": "https://sergiodxa.com/tutorials/transform-formdata-between-ui-and-database-in-react-router", "published_at": "2025-10-15T04:58:31+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af911731bcf", "title": "The Perils of Reactivity", "url": "https://outbox.matthewphillips.info/archive/perils-of-reactivity", "published_at": "2025-10-11T02:42:34+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af911744a5b", "title": "How MVC, MVT, MVVM, and Components Shape Web Development", "url": "https://sergiodxa.com/articles/how-architecture-patterns-shape-development", "published_at": "2025-10-04T05:26:12+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af9126efeec", "title": "Build a Nested Master-Detail View with Redirects in React Router", "url": "https://sergiodxa.com/tutorials/build-a-master-detail-ui-with-react-router", "published_at": "2025-10-03T06:42:21+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af912c0b94f", "title": "Stream Shared Promise Results in React Router", "url": "https://sergiodxa.com/tutorials/leverage-react-router-s-built-in-data-deduplication", "published_at": "2025-09-25T06:08:18+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af9137dbf49", "title": "No, you don't want to hire \"the best engineers'", "url": "https://www.otherbranch.com/shared/blog/no-you-dont-want-to-hire-the-best-engineers", "published_at": "2025-09-25T05:29:42+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af9138afc39", "title": "Redirect Based on Screen Size in React Router", "url": "https://sergiodxa.com/tutorials/redirect-based-on-screen-size-in-react-router", "published_at": "2025-08-13T08:18:55+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af9141e64cd", "title": "Avoid Waterfalls in React Suspense", "url": "https://sergiodxa.com/tutorials/avoid-waterfalls-in-react-suspense", "published_at": "2025-08-12T14:33:41+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af914f101cf", "title": "Render Loader Promises with Suspense in React Router", "url": "https://sergiodxa.com/tutorials/handle-deferred-data-in-react-router", "published_at": "2025-07-31T20:00:25+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af915af63c4", "title": "Create Reusable Action Routes in React Router", "url": "https://sergiodxa.com/tutorials/use-action-routes-in-react-router", "published_at": "2025-07-20T07:04:15+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af9168789b0", "title": "Prefer Gaps To Margins", "url": "https://kyleshevlin.com/prefer-gaps-to-margins/", "published_at": "2025-06-25T21:07:19+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af916e823f7", "title": "Syntax Highlighting code snippets with Prism and the Custom Highlight API", "url": "https://www.bram.us/2024/02/18/custom-highlight-api-for-syntax-highlighting/", "published_at": "2025-06-20T20:28:22+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af916f4a1ba", "title": "Resilient Import Maps - Better Theme Development and Beyond", "url": "https://shopify.engineering/resilient-import-maps", "published_at": "2025-06-03T05:56:11+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af917888021", "title": "Toasts are Bad UX", "url": "https://maxschmitt.me/posts/toasts-bad-ux", "published_at": "2025-05-22T23:15:45+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af917ff95ef", "title": "The XY Problem", "url": "https://xyproblem.info/", "published_at": "2025-05-18T17:46:46+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af918ce4c2e", "title": "Don't ask to ask, just ask", "url": "https://dontasktoask.com/", "published_at": "2025-05-18T17:46:41+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af9198a20ef", "title": "no\n hello", "url": "https://nohello.net/en/", "published_at": "2025-05-18T17:46:36+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91a777396", "title": "never just", "url": "https://www.neverjust.net/", "published_at": "2025-05-18T17:46:26+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91a9cf671", "title": "Add a Cookie-Based Color Scheme Toggle in React Router", "url": "https://sergiodxa.com/tutorials/add-a-color-scheme-toggle-in-react-router", "published_at": "2025-05-07T05:55:43+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91adc8224", "title": "JSX Over The Wire", "url": "https://overreacted.io/jsx-over-the-wire/", "published_at": "2025-04-20T04:42:19+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91ae0d4e0", "title": "The Back-end for Front-end Pattern (BFF)", "url": "https://philcalcado.com/2015/09/18/the_back_end_for_front_end_pattern_bff.html", "published_at": "2025-04-14T16:42:12+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91b48c4ea", "title": "Debounce Loaders and Actions in React Router", "url": "https://sergiodxa.com/tutorials/debounce-loaders-and-actions-in-react-router", "published_at": "2025-04-14T04:58:58+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91c3413fe", "title": "Authenticate OAuth2 Clients with client_id and client_secret", "url": "https://sergiodxa.com/tutorials/use-client_id-and-client_secret-in-oauth2", "published_at": "2025-04-05T00:17:43+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91c89fdf8", "title": "Use the OAuth2 Introspection Endpoint", "url": "https://sergiodxa.com/tutorials/use-the-oauth2-introspection-endpoint", "published_at": "2025-04-02T19:03:39+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91d3261a3", "title": "Revoke OAuth 2.0 Refresh Tokens via the Revocation Endpoint", "url": "https://sergiodxa.com/tutorials/revoke-a-refresh-token-in-oauth2", "published_at": "2025-04-01T00:02:49+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91da196ec", "title": "Protect OAuth 2.0 Authorization Code Flow with PKCE", "url": "https://sergiodxa.com/tutorials/use-pkce-in-oauth2-authorization-code-flow", "published_at": "2025-03-26T03:26:52+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91e026bb0", "title": "Add Custom Claims to JWT Access Tokens Safely", "url": "https://sergiodxa.com/tutorials/add-custom-claims-to-jwt-access-tokens", "published_at": "2025-03-25T18:03:05+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91e0c1a4a", "title": "Validate JWT Expiration, Issued-At, and Not-Before Claims", "url": "https://sergiodxa.com/tutorials/validate-exp-iat-and-nbf-in-jwts", "published_at": "2025-03-25T06:27:23+00:00" }, { "id": "01a087de-4da8-71d1-94be-1af91e75eefa", "title": "Use OAuth 2.0 Scopes to Authorize API Actions", "url": "https://sergiodxa.com/tutorials/use-scope-to-authorize-actions-in-your-api", "published_at": "2025-03-24T04:52:09+00:00" }, { "id": "01a087de-4da9-7003-b11e-39faeec0253a", "title": "Validate JWTs with JWKS", "url": "https://sergiodxa.com/tutorials/validate-jwts-with-jwks", "published_at": "2025-03-24T04:39:27+00:00" }, { "id": "01a087de-4da9-7003-b11e-39faef58db6e", "title": "JWT Claims in OAuth2 Access Tokens", "url": "https://sergiodxa.com/articles/oauth2-access-token-claims-explained", "published_at": "2025-03-19T23:30:58+00:00" }, { "id": "01a087de-4da9-7003-b11e-39faef77acae", "title": "OAuth2 Scopes Explained", "url": "https://sergiodxa.com/articles/oauth2-scopes-explained", "published_at": "2025-03-13T21:47:20+00:00" }, { "id": "01a087de-4da9-7003-b11e-39faf017abe1", "title": "Create a Per-Request Singleton with React Router Middleware", "url": "https://sergiodxa.com/tutorials/create-a-per-request-singleton-with-react-router-middleware", "published_at": "2025-03-11T05:34:35+00:00" }, { "id": "01a087de-4da9-7003-b11e-39faf0b92b0e", "title": "Test React Router Middleware with Bun Test", "url": "https://sergiodxa.com/tutorials/test-middleware-in-react-router", "published_at": "2025-03-10T19:17:05+00:00" }, { "id": "01a087de-4da9-7003-b11e-39faf1788003", "title": "OAuth2 Tokens Explained", "url": "https://sergiodxa.com/articles/oauth2-tokens-explained", "published_at": "2025-03-10T15:13:42+00:00" }, { "id": "01a087de-4da9-7003-b11e-39faf1b45a28", "title": "OAuth2 Audience Explained", "url": "https://sergiodxa.com/articles/oauth2-audience-explained", "published_at": "2025-03-10T04:09:54+00:00" }, { "id": "01a087de-4daa-728f-8082-686b5cfec6c7", "title": "JWT vs. Opaque Tokens", "url": "https://sergiodxa.com/articles/jwt-vs-opaque-tokens", "published_at": "2025-03-09T23:23:40+00:00" }, { "id": "01a087de-4daa-728f-8082-686b5d5bd065", "title": "Enable and use middleware in React Router 7.3", "url": "https://sergiodxa.com/tutorials/use-middleware-in-react-router", "published_at": "2025-03-08T07:43:41+00:00" }, { "id": "01a087de-4daa-728f-8082-686b5e5560ab", "title": "Maybe don't navigate(-1) in Remix/React Router", "url": "https://programmingarehard.com/2025/01/13/maybe-dont-navigate-1.html/", "published_at": "2025-03-05T18:37:55+00:00" }, { "id": "01a087de-4daa-728f-8082-686b5e76cdca", "title": "Using OAuth2 in a Backend for Frontend", "url": "https://sergiodxa.com/articles/oauth2-for-backend-for-frontend", "published_at": "2025-03-04T23:51:25+00:00" }, { "id": "01a087de-4daa-728f-8082-686b5ef3b0dd", "title": "Show a 404 in React Router", "url": "https://sergiodxa.com/tutorials/create-show-a-404-in-react-router", "published_at": "2025-03-02T10:11:07+00:00" }, { "id": "01a087de-4daa-728f-8082-686b5f6d7c21", "title": "Class methods are Ruby’s useEffect", "url": "https://www.campsite.com/blog/class-methods-are-rubys-useeffect", "published_at": "2025-02-28T05:36:42+00:00" }, { "id": "01a087de-4daa-728f-8082-686b60601594", "title": "What I learned at Campsite", "url": "https://danphilibin.com/what-i-learned-at-campsite", "published_at": "2025-02-28T04:37:14+00:00" }, { "id": "01a087de-4daa-728f-8082-686b611eff78", "title": "Throwing vs. Returning Redirects in React Router", "url": "https://sergiodxa.com/articles/throwing-vs-returning-redirects-in-react-router", "published_at": "2025-02-25T05:10:12+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6154a455", "title": "Trigger File Downloads from React Router Loaders and Actions", "url": "https://sergiodxa.com/tutorials/download-a-file-from-a-react-router-route", "published_at": "2025-02-24T06:15:30+00:00" }, { "id": "01a087de-4daa-728f-8082-686b61e14482", "title": "How I Stay Sane Implementing Stripe", "url": "https://github.com/t3dotgg/stripe-recommendations", "published_at": "2025-02-24T05:08:30+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6299ffc2", "title": "Domain driven boldness", "url": "https://dev.37signals.com/domain-driven-boldness/", "published_at": "2025-02-24T05:05:53+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6362b390", "title": "Good concerns", "url": "https://dev.37signals.com/good-concerns/", "published_at": "2025-02-24T05:05:44+00:00" }, { "id": "01a087de-4daa-728f-8082-686b63dbfa3f", "title": "Vanilla Rails is plenty", "url": "https://dev.37signals.com/vanilla-rails-is-plenty/", "published_at": "2025-02-24T05:05:30+00:00" }, { "id": "01a087de-4daa-728f-8082-686b63de870b", "title": "Active Record, nice and blended", "url": "https://dev.37signals.com/active-record-nice-and-blended/", "published_at": "2025-02-24T05:05:25+00:00" }, { "id": "01a087de-4daa-728f-8082-686b63ea6fdd", "title": "Globals, callbacks and other sacrileges", "url": "https://dev.37signals.com/globals-callbacks-and-other-sacrileges/", "published_at": "2025-02-24T05:05:19+00:00" }, { "id": "01a087de-4daa-728f-8082-686b648a22bd", "title": "Use Bullet to Detect N+1 Queries in Rails", "url": "https://sergiodxa.com/tutorials/use-bullet-to-detect-n-1-queries-in-rails", "published_at": "2025-02-08T22:30:12+00:00" }, { "id": "01a087de-4daa-728f-8082-686b64f335ce", "title": "Convert Markdown to PDF and ePub with Pandoc", "url": "https://sergiodxa.com/tutorials/use-pandoc-to-convert-a-markdown-to-a-pdf-and-epub", "published_at": "2025-02-07T19:32:44+00:00" }, { "id": "01a087de-4daa-728f-8082-686b65ac82df", "title": "Serve User-Specific Stylesheets in React Router", "url": "https://sergiodxa.com/tutorials/load-dynamic-stylesheets-in-react-router", "published_at": "2025-02-03T05:02:01+00:00" }, { "id": "01a087de-4daa-728f-8082-686b65d4a33b", "title": "Split a React Router Route Config across Multiple Files", "url": "https://sergiodxa.com/tutorials/split-routes-config-in-react-router", "published_at": "2025-01-15T05:36:05+00:00" }, { "id": "01a087de-4daa-728f-8082-686b668abeab", "title": "Configure the tracking branch in Git", "url": "https://sergiodxa.com/tutorials/configure-the-tracking-branch-in-git", "published_at": "2025-01-14T22:45:32+00:00" }, { "id": "01a087de-4daa-728f-8082-686b673dd4a7", "title": "Reuse route modules in React Router", "url": "https://sergiodxa.com/tutorials/reuse-route-modules-in-react-router", "published_at": "2025-01-13T18:12:37+00:00" }, { "id": "01a087de-4daa-728f-8082-686b67921a74", "title": "Stop just using “Frontend” or “Backend” to describe the Engineering you like", "url": "https://michellelim.dev/writing/stop-using-frontend-backend/", "published_at": "2025-01-03T20:27:48+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6859e51e", "title": "Populate Your Rails Database with Fixtures", "url": "https://sergiodxa.com/tutorials/populate-your-rails-database-with-fixtures", "published_at": "2024-12-18T21:03:28+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6905a8d1", "title": "You Can't Not Have a Framework", "url": "https://ryanflorence.com/blog/you-cant-not-have-a-framework.html", "published_at": "2024-12-13T21:19:40+00:00" }, { "id": "01a087de-4daa-728f-8082-686b694b64cd", "title": "This doesn't warrant a blog post", "url": "https://aaronfrancis.com/2024/this-doesnt-warrant-a-blog-post-40142b06", "published_at": "2024-11-27T04:23:38+00:00" }, { "id": "01a087de-4daa-728f-8082-686b698c9566", "title": "Because I wanted to", "url": "https://aaronfrancis.com/2024/because-i-wanted-to-12c5137c", "published_at": "2024-11-18T17:48:44+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6a5c7948", "title": "Making Web Component good enough", "url": "https://sergiodxa.com/articles/making-web-component-good-enough", "published_at": "2024-09-30T23:44:50+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6a728af2", "title": "Layered Architectures with Laravel", "url": "https://martinjoo.dev/layered-architectures-with-laravel", "published_at": "2024-09-27T01:43:22+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6adae736", "title": "Don't Sleep on AbortController", "url": "https://kettanaito.com/blog/dont-sleep-on-abort-controller", "published_at": "2024-09-18T13:57:07+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6b7e110e", "title": "Stub a method in a class with Minitest", "url": "https://sergiodxa.com/tutorials/stub-a-method-in-a-class-with-minitest", "published_at": "2024-09-02T17:49:10+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6baa8f3d", "title": "Show toast after a Remix action", "url": "https://sergiodxa.com/tutorials/show-toast-after-a-remix-action", "published_at": "2024-08-30T07:39:08+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6be9fc62", "title": "Building a Proper REST API", "url": "https://alexkondov.com/full-stack-tao-proper-rest-api/", "published_at": "2024-08-14T18:54:04+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6c0d905e", "title": "How I would do auth", "url": "https://pilcrowonpaper.com/blog/how-i-would-do-auth/", "published_at": "2024-07-14T09:34:37+00:00" }, { "id": "01a087de-4daa-728f-8082-686b6c89322f", "title": "Simplify Component Imports with TypeScript Namespaces", "url": "https://sergiodxa.com/tutorials/simplify-component-imports-with-typescript-namespaces", "published_at": "2024-07-10T21:34:33+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b6820db72", "title": "Card Stack", "url": "https://www.abjt.dev/lab/card-stack", "published_at": "2024-07-02T23:36:58+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b68854205", "title": "Counterscale and the New Self-Hosted", "url": "https://benv.ca/blog/posts/counterscale-and-the-new-self-hosted", "published_at": "2024-06-27T03:45:18+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b69289cf2", "title": "Why Frontend and Backend Are About Responsibilities, Not Languages", "url": "https://sergiodxa.com/articles/on-frontend-vs-backend", "published_at": "2024-06-19T09:06:58+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b694fa060", "title": "Validate a Form in Remix with clientAction", "url": "https://sergiodxa.com/tutorials/validate-form-in-remix-with-clientaction", "published_at": "2024-06-18T06:26:14+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b69b29649", "title": "Generate a Cloudflare Environment Type with wrangler", "url": "https://sergiodxa.com/tutorials/generate-cloudflare-environment-type-with-wrangler", "published_at": "2024-06-18T06:10:40+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b6a2c862b", "title": "Configure Scoped Private Packages in Bun", "url": "https://sergiodxa.com/tutorials/configure-scoped-private-packages-in-bun", "published_at": "2024-06-18T06:05:06+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b6aa47ef4", "title": "When to use Route Modal in React Router", "url": "https://sergiodxa.com/articles/when-to-use-route-modal-in-react-router", "published_at": "2024-06-16T06:30:40+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b6abe5674", "title": "Deconstructing the Monolith: Designing Software that Maximizes Developer Productivity", "url": "https://shopify.engineering/deconstructing-monolith-designing-software-maximizes-developer-productivity", "published_at": "2024-06-05T06:32:20+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b6ad7a49d", "title": "Ultimate guide to multi-tenant SaaS data modeling", "url": "https://www.flightcontrol.dev/blog/ultimate-guide-to-multi-tenant-saas-data-modeling", "published_at": "2024-05-30T23:34:27+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b6ae2702e", "title": "Migrating from Radix to React Aria: Improving Accessibility and UX", "url": "https://argos-ci.com/blog/react-aria-migration", "published_at": "2024-05-29T02:57:16+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b6b231d31", "title": "Creating a pointer-friendly submenu experience", "url": "https://react-spectrum.adobe.com/blog/creating-a-pointer-friendly-submenu-experience.html", "published_at": "2024-05-03T20:42:54+00:00" }, { "id": "01a087de-4dab-72b7-98aa-186b6bf8505f", "title": "Building like it's 1984: A comprehensive guide to creating intuitive context menus", "url": "https://height.app/blog/guide-to-build-context-menus", "published_at": "2024-05-03T19:31:43+00:00" } ] posts Claim your blog
Back to sergiodxa.com
Blog · corpus.blog/blogs/sergiodxa.com/posts

sergiodxa.com

sergiodxa.com

2026

2025

2024