Sergio Xalambrรญ

Sergio Xalambrรญ

Web Developer from Buenos Aires with 10+ years of experience. I work at Daffy and maintain several open-source libraries around React Router and OAuth2.

Subscribe to my content using RSS.

Activity

  1. I saved Everything I know about good API design

  2. I saved Your code is your responsibility, even if AI wrote it

  3. I saved No Meat Proxy

  4. I published how to Make Regional HTTP Requests with Durable Objects

  5. I published how to Add URL Normalization Middleware in React Router

  6. I published how to Think in Remix UI Instead of React

  7. I published how to Hydrate Isolated UI with Remix Client Entries

  8. I wrote about Multi-Entry Package Architecture

  9. I wrote about Structuring a Bun Monorepo with Shared Packages

  10. I published how to Create Animated Tab Indicators with CSS Variables

  11. I wrote about Compound Component Pattern in React

  12. I wrote about Building Accessible UI with React Aria Components

  13. I published how to Create a Copy Button for Code Blocks

  14. I published how to Build a Type-Safe Markdown Pipeline with Markdoc

  15. I published how to Use waitUntil for Non-Blocking Cache Writes

  16. I published how to Build a Cache Abstraction for Cloudflare KV

  17. I published how to Use Client Hints for Server-Side Timezone Rendering

  18. I published how to Add a Global Hotkey to a Remix UI Dialog

  19. I saved Render JSX to images.Skip the browser.

  20. I published how to Build a Command-Driven Markdown Toolbar in React

  21. I published how to Handle Custom Invoker Commands in React

  22. I published how to Build a User Menu in React with Invoker Popover Commands

  23. I published how to Prevent a Modal Dialog from Closing with request-close in React

  24. I published how to Open a Modal Dialog in React with the Invoker Commands API

  25. I saved Ship the policy, not the code

  26. I saved The Field Guide to Grid Lanes

  27. I saved The Best Loading States Are No Loading States

  28. I saved How's Linear so fast? A technical breakdown

  29. I published how to Use an `iife` Helper for Inline Control Flow in TypeScript

  30. I wrote about How AI is Industrializing Software Engineering

  31. I published how to Cancel `useFetcher().load()` Requests on Unmount in React Router

  32. I saved The Boring Internet

  33. I saved When life gives you lemons, write better error messages

  34. I saved Accept: text/markdown

  35. I saved Domain structure for SaaS products

  36. I saved The Vertical Codebase

  37. I saved Details that make interfaces feel better

  38. I saved Expand your hit areas

  39. I saved Nobody Gets Promoted for Simplicity

  40. I saved Why I don't use down migrations

  41. I saved How we enabled Content Security Policy for everyone

  42. I added the definition of RESTful

  43. I added the definition of MIME Type

  44. I added the definition of Same-Origin Policy

  45. I added the definition of CORS

  46. I added the definition of Bearer Token

  47. I added the definition of OIDC

  48. I added the definition of OAuth2

  49. I added the definition of GraphQL

  50. I added the definition of REST

  51. I added the definition of XML

  52. I added the definition of JSON

  53. I added the definition of TLS

  54. I added the definition of TCP

  55. I added the definition of IP

  56. I added the definition of URI

  57. I added the definition of URL

  58. I added the definition of DNS

  59. I added the definition of FTP

  60. I added the definition of CSS

  61. I added the definition of HTML

  62. I added the definition of HTTPS

  63. I added the definition of HTTP

  64. I added the definition of WSS

  65. I added the definition of Web API

  66. I added the definition of Static Assets

  67. I added the definition of Routing

  68. I added the definition of Rendering

  69. I added the definition of SSE

  70. I added the definition of WebSockets

  71. I added the definition of Idempotency

  72. I added the definition of CDN

  73. I added the definition of Caching

  74. I added the definition of Rate Limiting

  75. I added the definition of Webhooks

  76. I added the definition of Edge Runtime

  77. I added the definition of RSC

  78. I added the definition of Optimistic UI

  79. I added the definition of Progressive Enhancement

  80. I added the definition of PKCE

  81. I added the definition of Resource Server

  82. I added the definition of Authorization Server

  83. I added the definition of Refresh Token

  84. I added the definition of Access Token

  85. I added the definition of JWKS

  86. I added the definition of JWK

  87. I added the definition of JWT

  88. I added the definition of API Gateway

  89. I added the definition of Edge Functions

  90. I added the definition of Serverless

  91. I added the definition of Microservices

  92. I added the definition of Monolith

  93. I added the definition of BFF

  94. I added the definition of Edge Rendering

  95. I added the definition of Streaming SSR

  96. I added the definition of Islands Architecture

  97. I added the definition of Partial Hydration

  98. I added the definition of Hydration

  99. I published how to Access React Router Context with AsyncLocalStorage

  100. I saved Hire managers of one

  101. I published how to Create a Per-Request Database Instance with Middleware

  102. I published how to Create a Multi-Directory Route Organization in React Router

  103. I published how to Use Sec-Fetch Headers for CSRF Protection

  104. I saved SQLite-on-the-Server Is Misunderstood: Better At Hyper-Scale Than Micro-Scale

  105. I wrote about Using React Router Loaders and Actions as Integration Points

  106. I saved The Too Early Breakpoint

  107. I saved More invoker commands, and more reasons not to use JavaScript please

  108. I saved sergiodxa/agent-skills

  109. I saved The Incredible Overcomplexity of the Shadcn Radio Button

  110. I saved Affordances: The Missing Layer in Frontend Architecture

  111. I saved Confirmation dialogs with zero JavaScript

  112. I saved Stylish dialogs

  113. I saved Logging Sucks - Your Logs Are Lying To You

  114. I saved Micro-libraries need to die already

  115. I saved The stacking workflow

  116. I saved Composition Is All You Need by Fernando Rojo at React Universe Conf 2025

  117. I saved Tips for good UI implementation

  118. I published how to Dedupe Server Calls with Remix Utils Batcher

  119. I published how to Transform FormData Between UI and Database in React Router

  120. I saved The Perils of Reactivity

  121. I wrote about How MVC, MVT, MVVM, and Components Shape Web Development

  122. I published how to Build a Nested Master-Detail View with Redirects in React Router

  123. I published how to Stream Shared Promise Results in React Router

  124. I saved No, you don't want to hire "the best engineers'

  125. I published how to Redirect Based on Screen Size in React Router

  126. I published how to Avoid Waterfalls in React Suspense

  127. I published how to Render Loader Promises with Suspense in React Router

  128. I published how to Create Reusable Action Routes in React Router

  129. I saved Prefer Gaps To Margins

  130. I saved Syntax Highlighting code snippets with Prism and the Custom Highlight API

  131. I saved Resilient Import Maps - Better Theme Development and Beyond

  132. I saved Toasts are Bad UX

  133. I saved The XY Problem

  134. I saved Don't ask to ask, just ask

  135. I saved no hello

  136. I saved never just

  137. I published how to Add a Cookie-Based Color Scheme Toggle in React Router

  138. I saved JSX Over The Wire

  139. I saved The Back-end for Front-end Pattern (BFF)

  140. I published how to Debounce Loaders and Actions in React Router

  141. I published how to Authenticate OAuth2 Clients with client_id and client_secret

  142. I published how to Use the OAuth2 Introspection Endpoint

  143. I published how to Revoke OAuth 2.0 Refresh Tokens via the Revocation Endpoint

  144. I published how to Protect OAuth 2.0 Authorization Code Flow with PKCE

  145. I published how to Add Custom Claims to JWT Access Tokens Safely

  146. I published how to Validate JWT Expiration, Issued-At, and Not-Before Claims

  147. I published how to Use OAuth 2.0 Scopes to Authorize API Actions

  148. I published how to Validate JWTs with JWKS

  149. I wrote about JWT Claims in OAuth2 Access Tokens

  150. I wrote about OAuth2 Scopes Explained

  151. I published how to Create a Per-Request Singleton with React Router Middleware

  152. I published how to Test React Router Middleware with Bun Test

  153. I wrote about OAuth2 Tokens Explained

  154. I wrote about OAuth2 Audience Explained

  155. I wrote about JWT vs. Opaque Tokens

  156. I published how to Enable and use middleware in React Router 7.3

  157. I saved Maybe don't navigate(-1) in Remix/React Router

  158. I wrote about Using OAuth2 in a Backend for Frontend

  159. I published how to Show a 404 in React Router

  160. I saved Class methods are Rubyโ€™s useEffect

  161. I saved What I learned at Campsite

  162. I wrote about Throwing vs. Returning Redirects in React Router

  163. I published how to Trigger File Downloads from React Router Loaders and Actions

  164. I saved How I Stay Sane Implementing Stripe

  165. I saved Domain driven boldness

  166. I saved Good concerns

  167. I saved Vanilla Rails is plenty

  168. I saved Active Record, nice and blended

  169. I saved Globals, callbacks and other sacrileges

  170. I published how to Use Bullet to Detect N+1 Queries in Rails

  171. I published how to Convert Markdown to PDF and ePub with Pandoc

  172. I published how to Serve User-Specific Stylesheets in React Router

  173. I published how to Split a React Router Route Config across Multiple Files

  174. I published how to Configure the tracking branch in Git

  175. I published how to Reuse route modules in React Router

  176. I saved Stop just using โ€œFrontendโ€ or โ€œBackendโ€ to describe the Engineering you like

  177. I published how to Populate Your Rails Database with Fixtures

  178. I saved You Can't Not Have a Framework

  179. I saved This doesn't warrant a blog post

  180. I saved Because I wanted to

  181. I wrote about Making Web Component good enough

  182. I saved Layered Architectures with Laravel

  183. I saved Don't Sleep on AbortController

  184. I published how to Stub a method in a class with Minitest

  185. I published how to Show toast after a Remix action

  186. I saved Building a Proper REST API

  187. I saved How I would do auth

  188. I published how to Simplify Component Imports with TypeScript Namespaces

  189. I saved Card Stack

  190. I saved Counterscale and the New Self-Hosted

  191. I wrote about Why Frontend and Backend Are About Responsibilities, Not Languages

  192. I published how to Validate a Form in Remix with clientAction

  193. I published how to Generate a Cloudflare Environment Type with wrangler

  194. I published how to Configure Scoped Private Packages in Bun

  195. I wrote about When to use Route Modal in React Router

  196. I saved Deconstructing the Monolith: Designing Software that Maximizes Developer Productivity

  197. I saved Ultimate guide to multi-tenant SaaS data modeling

  198. I saved Migrating from Radix to React Aria: Improving Accessibility and UX

  199. I saved Creating a pointer-friendly submenu experience

  200. I saved Building like it's 1984: A comprehensive guide to creating intuitive context menus

  201. I saved Building future facing frontend architectures

  202. I saved Navigating the future of frontend

  203. I published how to Use package.json#bin to create a CLI

  204. I saved Margin considered harmful

  205. I saved In Loving Memory of Square Checkbox

  206. I published how to Access location.state in Remix Client Loaders and Actions

  207. I saved The Copenhagen Book

  208. I published how to Add Internationalization with remix-i18next to a Remix Vite App

  209. I saved Documenting Architecture Decisions

  210. I published how to Autoload the Correct Node.js Version with NVM

  211. I added the definition of HDR

  212. I added the definition of HMR

  213. I added the definition of PPR

  214. I added the definition of ISR

  215. I added the definition of SSG

  216. I added the definition of PESPA

  217. I added the definition of PEMPA

  218. I published how to Nest Routes with Dynamic Params in Remix

  219. I published how to Build Register, Login, and Logout Flows with Remix Sessions

  220. I published how to Access React Router's loader data from a route ErrorBoundary

  221. I published how to Access React Router's Loaders Data in entry.client

  222. I published how to Handle not found URLs with Remix

  223. I published how to Persist the User Locale Using Cookies with React Router and i18next

  224. I published how to Add dynamic canonical URL to Remix routes

  225. I saved Parallelized Decision Making

  226. I published how to Add custom attributes to Markdoc code fences

  227. I published how to Enable Remix ~/ aliased imports in Vitest

  228. I added the definition of API

  229. I added the definition of MPA

  230. I added the definition of SPA

  231. I added the definition of CSR

  232. I added the definition of SSR

  233. I published how to Add syntax highlight to Markdoc using Prism.js

  234. I published how to Create a CRUD with Remix

  235. I saved I miss RSS

  236. I saved RSC is React Server + Component | bobae kang

  237. I published how to Pass Cookies from a React Router Loader to an External API

  238. I published how to Call an action from a loader in Remix

  239. I published how to Use React Portal in Remix

  240. I published how to Prevent the React Router Loader to Run after Document Request

  241. I saved Passkey-Based Auth in Remix (feat. Alex Anderson) - YouTube

  242. I saved Remix Movies: build a movie browser with Remix - YouTube

  243. I saved Trellix: build a Trello clone using Remix - YouTube

  244. I published how to Defer a Fetch response in Remix

  245. I published how to Use a CDN for your static assets in Remix

  246. I published how to Get the absolute URL in Remix's MetaFunction

  247. I published how to Build an app with Remix and Bun

  248. I saved Designing better target sizes

  249. I published how to Find and remove unused code with Knip

  250. I published how to Create multiple top-level layouts in Remix

  251. I saved Kind of annoyed at React

  252. I saved Increasingly miffed about the state of React releases

  253. I saved The Website vs. Web App Dichotomy Does Not Exist

  254. I published how to Test meta tags using Playwright

  255. I saved gilest.org: Make the indie web easier

  256. I saved Why Fetch Promise Does Not Reject on Error Responses

  257. I saved A Well-Known Links Resource - Jim Nielsenโ€™s Blog

  258. I saved The OG Social Network: Other Peopleโ€™s Websites - Jim Nielsenโ€™s Blog

  259. I saved Rationale for a Browser-Level Color Scheme Preference - Jim Nielsenโ€™s Blog

  260. I saved A Well Known URL For Your Personal Avatar - Jim Nielsenโ€™s Blog

  261. I saved React Aria

  262. I saved Stop Lying to Your Users | Epic Web Dev by Kent C. Dodds

  263. I published how to Prefetch data for Remix Fetcher usage

  264. I published how to Keep Your Loader Data Fresh in Remix

  265. I published how to Share Remix Route Logic between Web and API Routes

  266. I published how to Access the Search Params of a Request in React Router

  267. I published how to Upload Images in a Remix Application

  268. I published how to Redirect with Search Param in Remix

  269. I published how to Access the Loader Data in Remix

  270. I published how to Abort Async Calls Inside Remix Loaders and Actions

  271. I published how to Get Remix route params `entry.server`

  272. I published how to Test meta tags with Cypress

  273. I saved Challenging Established Norms: Making Component Fetching the Exception

  274. I saved Be the browserโ€™s mentor, not its micromanager

  275. I saved The ideal viewport doesnโ€™t exist

  276. I saved My thoughts on open-source

  277. I published how to Strongly type Remix route IDs

  278. I published how to Strongly type public assets in Remix

  279. I published how to Create a reusable Form component in Remix

  280. I published how to Sync text input with URLSearchParam in Remix

  281. I saved Social RSS

  282. I saved The fediverse and the indieweb

  283. I saved Blogging as DRY

  284. I saved Everything You Can Test In Your Laravel Application

  285. I saved Dear Open Source: letโ€™s do a better job of asking for money

  286. I saved Don't make me think, or why I switched to Rails from JavaScript SPAs

  287. I saved Generating income from open source

  288. I published how to Use TanStack Query to Share Data between React Router Loaders

  289. I published how to Logout from Auth0 with Remix Auth

  290. I published how to Send Node.js ReadStream objects from Remix loaders

  291. I published how to Reset a form on success in Remix

  292. I published how to Use `qs.parse` to use nested form fields in Remix

  293. I published how to Send JSON to a Remix action

  294. I published how to Set Multiple Cookies in the Same Response in React Router Loaders

  295. I published how to Close SSE connection from the server in Remix

  296. I published how to Measure performance with the Server-Timing header in React Router

  297. I published how to Automatically commit sessions on Remix

  298. I published how to Customize Remix AppLoadContext type

  299. I saved Client-side JavaScript and React criticism: What comes next?

  300. I published how to Turn on Caps Lock on Cypress

  301. I saved Fast and maintainable patterns for fetching from a database

  302. I published how to Delete a Cookie using Remix cookie helpers

  303. I published how to Add runtime SSG and ISR to Remix

  304. I published how to Improve SEO by not sending JS in Remix

  305. I published how to Use AMP with Remix

  306. I published how to Use Remix as a SPA only

  307. I saved A Theory of Web Relativity

  308. I published how to Downgrade to MPA if Users Prefer Reduced Data in React Router

  309. I published how to Add rolling sessions to Remix

  310. I published how to Use Server-Sent Events with Remix

  311. I published how to Progressively Enhance the useFetcher Hook in React Router

  312. I published how to Use `process.env` client-side with Remix

  313. I published how to Persist inputs after a form submit in Remix

  314. I saved Streaming: is it worth it?

  315. I saved Prioritise content over components

  316. I wrote about Throwing Vs. Returning Responses in Remix Loaders and Actions

  317. I published how to Lazy-load React components in Remix

  318. I saved Overcoming Popular Issues With React Projects

  319. I saved ๐Ÿ’ฟ remix simplifies things

  320. I saved Progressively enhance for a more resilient web

  321. I saved Get in Zoomer, We're Saving React

  322. I wrote about Reusing Remix Routes for Optional Segments

  323. I published how to Destroy User Session and While Setting a Flash Message in React Router

  324. I published how to Add additional data before submitting on Remix

  325. I published how to Redirect to an external website with Remix

  326. I published how to Bubble up data on Remix routes

  327. I published how to Group related routes together in Remix

  328. I saved What if your Index Page was Smart?

  329. I saved Building websites for Safari Reader Mode and other reading apps

  330. I saved How to Section Your HTML

  331. I saved Block Links: The Search for a Perfect Solution

  332. I published how to Parse Markdown with Markdoc in Remix

  333. I wrote about Dependency injection in Remix loaders and actions

  334. I wrote about Validating Environment Variables with Zod

  335. I saved Debug your server-side Remix code using VSCode

  336. I saved RSS

  337. I wrote about Handling Refresh Tokens in Remix Loaders and Actions

  338. I saved Device-Agnostic

  339. I wrote about E2E Testing Remix with Vitest and Puppeteer

  340. I published how to Optimize image loading with plain HTML

  341. I saved Using rel=preload for responsive images

  342. I wrote about Multiple forms per route in Remix

  343. I saved How to avoid layout shifts caused by web fonts

  344. I saved โ€œGuys, weโ€™re doing pagination wrongโ€ฆโ€

  345. I saved Why Remix doesnโ€™t infer types from loaders for useLoaderData

  346. I published how to Add returnTo behavior to Remix Auth

  347. I saved Survivorship Bias in Web Performance

  348. I wrote about Building a Command Palette with Remix and Tailwind UI

  349. I published how to Share session and cookies between Next and Remix

  350. I published how to Fix double data request when prefetching in Remix

  351. I saved The "best" way to manage icons in React.js

  352. I published how to Run Tailwind and Remix in Parallel with PM2

  353. I published how to Use Remix with socket.io

  354. I published how to Generate a PDF in Remix with Resource Routes

  355. I published how to Avoid waterfalls of queries in Remix loaders

  356. I published how to Run Next and Remix on the same server

  357. I wrote about HTTP vs. Server-side Cache in Remix

  358. I wrote about Clase rรกpida de programaciรณn asรญncrona

  359. I wrote about On-Demand Hydration in Remix

  360. I saved Live validation is problematic

  361. I saved Stop building client-side forms

  362. I wrote about Loader vs Route Cache Headers in Remix

  363. I wrote about The useMatches hook in Remix

  364. I wrote about Validating Remix forms with Constraints API

  365. I published how to Test Remix loaders and actions

  366. I published how to Use NProgress in a Remix app

  367. I wrote about Result Objects in TS

  368. I wrote about Dark Mode and Dark Context

  369. I saved Why Decentralization Isn't as Important as You Think

  370. I saved When You Stop Counting

  371. I saved Why I Quit Google to Work for Myself

  372. I published how to Use Fathom with Remix

  373. I saved Donโ€™t Build A General Purpose API To Power Your Own Front End

  374. I saved Why You Should Never Use MongoDB

  375. I saved A Case For Use Cases

  376. I published how to Fix `gyp: No Xcode or CLT version detected!` error

  377. I published how to Use Dependabot to keep Remix up-to-date

  378. I wrote about Automatic Revalidation in Remix

  379. I saved People read on the web

  380. I saved Why we use progressive enhancement to build GOV.UK

  381. I saved Building a resilient frontend using progressive enhancement

  382. I saved I Want To Confirm a Prompt That We Stay Alert

  383. I saved Browsers and Representation

  384. I saved Google vs. the web

  385. I saved Back to the Bad Old Days of the Web

  386. I saved The Mythical Document Web

  387. I saved Breaking the web forward

  388. I saved Back to the Future with RSS

  389. I saved Client-Side Architecture Basics

  390. I saved Organizing App Logic with the Clean Architecture

  391. I saved Implementing DTOs, Mappers and the Repository Pattern

  392. I saved Screaming Architecture

  393. I saved Better Software Design with Application Layer Use Cases

  394. I saved Anemic Domain Model

  395. I saved Value Objects - DDD w/ TypeScript

  396. I saved iOS 15, Humane

  397. I saved Don't overabstract your components

  398. I wrote about Creating a PDF with React in the Browser

  399. I saved Meta Theme Color and Trickery

  400. I wrote about Sending data from layout to leaf routes in Remix

  401. I wrote about Caching Remix Assets and Locales with a Service Worker

  402. I wrote about Localizing Remix apps with i18next

  403. I wrote about Adding CSRF protection to Remix

  404. I published how to Load only the data you need in Remix

  405. I wrote about Implementing Auth0 Login in Remix without Express

  406. I wrote about Using TailwindCSS with Remix

  407. I published how to Use ETags in Remix

  408. I wrote about Jest Matchers for Remix responses

  409. I wrote about Using Form Objects inside Remix actions

  410. I wrote about Route protection in Remix with Policies

  411. I published how to Redirect to the original URL inside a Remix action

  412. I published how to Read search params with JS

  413. I published how to Use ActiveModel::Serializer with non ActiveRecord object

  414. I published how to Serialize list of items with ActiveModel::Serializer

  415. I published how to Use serializers with JSON.stringify and JSON.parse

  416. I published how to Force a locale in Rails I18n from the params

  417. I wrote about Que es un bundler de JS

  418. I wrote about Remix vs Next.js Comparison

  419. I saved Imagining native skip links

  420. I published how to Add missing `created_at` and `updated_at` columns in Rails

  421. I saved Rails design patterns - The big picture

  422. I wrote about How to rename a column in a Rails migration

  423. I saved Before You memo()

  424. I wrote about Usar variables de entorno en Next.js

  425. I saved Implement a Skip Link for Navigation-Heavy Sites

  426. I saved Meaningful Motion with Action-Driven Animation

  427. I saved An Interactive Guide to CSS Transitions

  428. I published how to Build your own RSS Reader

  429. I published how to Keep Heading Levels Consistent with React Context

  430. I saved Preload: What Is It Good For?

  431. I saved The unreasonable effectiveness of simple HTML

  432. I saved Open Peeps

  433. I saved System Design 101

  434. I saved A primer on investing for designers and developers

  435. I wrote about About

  436. I saved In Critical Defense of Frontend Develop

  437. I saved Be Wary of Nesting Roles

  438. I saved Accessible SVGs

  439. I wrote about ยฟQuรฉ son Server Components de React y cรณmo se relacionan con SSR/SSG/ISR?

  440. I wrote about ๐Ÿ”ฅ Pro Tip: Name your useEffect functions

  441. I saved dotCSS 2019 - Sarah Dayan - In Defense of Utility-First CSS

  442. I saved Alt-texts: The Ultimate Guide

  443. I saved Polymorphic React Components in TypeScript

  444. I saved CSS and Scalability

  445. I wrote about Using MDX with Remote Content

  446. I saved The UI and UX Tips Collection: Volume One.

  447. I saved Practical React Query

  448. I published how to Use TailwindCSS Typography with Dark Mode Styles

  449. I saved Don't design for mobile

  450. I saved Stop Using โ€œDrop-downโ€

  451. I saved Decoupling, Architecture and Teams

  452. I saved The Lava Layer Anti-Pattern

  453. I saved UI as an afterthought

  454. I wrote about Todo lo que sรฉ de SWR

  455. I saved In 2020, what is "frontend" ๐Ÿคจ

  456. I saved How React Query gives you almost everything you thought you needed GraphQL for

  457. I saved Wormhole state management

  458. I saved Todo el software estรก roto

  459. I saved What is the Value of Browser Diversity?

  460. I saved Margins and Composability in CSS

  461. I saved Nailing Your First (Info-Product) Launch

  462. I saved Defining Component APIs in React

  463. I saved The Modern Front-End Design System Stack

  464. I saved Building the New facebook.com with React, GraphQL and Relay

  465. I saved Architecting UIs for Change

  466. I saved When frontend means full stack

  467. I saved Building a Button Part 2: Hover Interactions

  468. I saved Building a Button Part 1: Press Events

  469. I wrote about The States of the UI

  470. I saved About HTML semantics and front-end architecture

  471. I saved "Semantic" CSS

  472. I saved CSS Utility Classes and "Separation of Concerns"

  473. I saved Second-guessing the modern web

  474. I saved A clean start for the web

  475. I wrote about What I Use

  476. I saved Writing Type-Safe Polymorphic React Components (Without Crashing TypeScript)

  477. I saved Using SwiftUI's Spacer to Create Complex Layouts

  478. I saved Most tech content is bullshit

  479. I saved The Art of UI Skeletons

  480. I saved How to Design a Web Application: Software Architecture 101

  481. I saved Shared Hook State with SWR

  482. I saved Testing in the Frontend World

  483. I saved The Real Dark Web

  484. I saved The Elements of UI Engineering

  485. I saved frontend design, react, and a bridge over the great divide

  486. I saved The Great Divide

  487. I saved We have a problem with promises

  488. I saved Taming the asynchronous beast with ES7

  489. I saved The Fault in Our Tolerance: Accounting for Failures in React

  490. I saved 7 Principles of Rich Web Applications

  491. I saved ๐ŸŒฑ My blog is a digital garden, not a blog

  492. I saved Shape Up: Stop Running in Circles and Ship Work that Matters

  493. I saved How the Blog Broke the Web

  494. I saved Turning the database inside-out with Apache Samza

  495. I saved Design Systems and Front-End Architecture by Stuart Robson

  496. I saved How to Section Your HTML

  497. I saved write on your own website

  498. I saved Going Indie. Step 2: Reclaiming Content

  499. I saved Just write

  500. I saved The Documentation Compendium

  501. I saved Why Text Buttons Hurt Mobile Usability

  502. I saved Bulletproof node.js project architecture ๐Ÿ›ก๏ธ

  503. I saved The Power of Sensible Defaults

  504. I saved HTML Reference

  505. I saved CSS Reference

  506. I saved The God Login

  507. I saved Your Body Text Is Too Small

  508. I saved Architecture as a burden

  509. I saved The Architecture of Open Source Applications (Volume 2): Scalable Web Architecture and Distributed Systems

  510. I saved Scaling React Server-Side Rendering

  511. I saved Refactoring UI

  512. I saved Cards

  513. I saved Introducing Grial

  514. I saved Aplicando estilos a Pulse Editor con styled-components

  515. I saved Usando socket.io en aplicaciones de Next.js

  516. I saved Depurando aplicaciones de Node.js v8.0.0

  517. I saved Personalizando Babel.js en aplicaciones de Next.js

  518. I saved Creando botones propios para Pulse Editor

  519. I saved Te presentamos la nueva versiรณn de Node.js

  520. I saved Creando sitios estรกticos con Next.js

  521. I saved Implementando Pulse Editor

  522. I saved Aplicaciรณn de escritorio Pulse

  523. I saved Presentamos Pulse Editor

  524. I saved Crea aplicaciones de escritorio con Electron y Next.js

  525. I saved Implementa Progressive server-side render con Next.js

  526. I saved Next.js, el futuro de las aplicaciones con React

  527. I saved Manejo de dependencias JavaScript con Yarn

  528. I saved Deploy y orquestaciรณn de microservicios con now.sh

  529. I saved Introducciรณn a JSON Web Tokens (JWT)

  530. I saved ยฟQuรฉ es y para quรฉ sirve Babel?

  531. I saved Desarrollando aplicaciones de escritorio con Electron.js

  532. I saved ยฟQuรฉ es una aplicaciรณn isomรณrfica?

  533. I saved Crea microservicios en Node.js con micro.js

  534. I saved Usando React.js en el servidor con Django

  535. I saved Estado inmutable con Redux e Immutable.js

  536. I saved Componentes de Alto Orden en React.js

  537. I saved Obteniendo datos en aplicaciones de Redux

  538. I saved Usando Redux en el servidor con Socket.io

  539. I saved Creando cรณdigo modular con ducks de Redux

  540. I saved Renderizando aplicaciones de Redux en el servidor

  541. I saved Manejo de errores en Redux.js

  542. I saved Migrando a Redux

  543. I saved Ruteo en aplicaciones de Redux y React.js

  544. I saved Glosario de tรฉrminos de Redux

  545. I saved Estructura de archivos Ducks para Redux.js

  546. I saved Pruebas unitarias en Redux.js

  547. I saved Acciones asรญncronas en Redux.js

  548. I saved Middlewares en Redux.js

  549. I wrote about Como me iniciรฉ en el desarrollo web

  550. I wrote about When to Use Custom API Endpoints Instead of REST

  551. I wrote about How I work with static assets in React apps

  552. I wrote about How shallow: true works in Rails

  553. I wrote about Build an Optimistic UI in React using SWR with useMutation

  554. I wrote about Como organizo mis aplicaciones de React

  555. I wrote about How I Organize React Applications

  556. I wrote about Usa React.Suspense para controlar la carga de imagenes

  557. I wrote about Data-Aware Components

  558. I wrote about Collected Notes TS Client

  559. I published how to Use SWR with Geolocation

  560. I wrote about Using Collected Notes as CMS

  561. I published how to Sync WebApp Session Status between Tabs with SWR

  562. I published how to Sync SWR cache with Web Storage

  563. I published how to Configure Google Suite MX records in Vercel

  564. I published how to Report Web Vitals in Next.js

  565. I published how to Use React.Suspense to wait for an image to load

  566. I published how to Purge unused CSS with TailwindCSS

  567. I published how to Setup a redirect inside a project deployed to Vercel

  568. I published how to Use a scoped registry with Yarn

  569. I wrote about Using Immer with SWR to mutate data

  570. I wrote about Render as you Fetch Pattern in React with SWR

  571. I wrote about Prefetching Data in a Next.js Application with SWR

  572. I wrote about What Type of States Could You Find in a Client-Side Application?

  573. I wrote about Using Tailwind with Next.js

  574. I wrote about Using Suspense for Data Fetching Today with SWR

  575. I wrote about Using Paginated Data with SWR

  576. I wrote about Introduction to SWR

  577. I published how to Automatically Publish to npm using GitHub Actions

  578. I wrote about Feature Flags in React with Flagged

  579. I wrote about Next.js File Structure

  580. I wrote about Testing in Next.js: Dynamic Imports

  581. I wrote about Redirects in Next.js, the Best Way

  582. I wrote about Working with Forms in React without libraries

  583. I wrote about Working with conditions and lists in React

  584. I wrote about Introduction to React with the State and Effects hooks

  585. I wrote about Introducing Contentz

  586. I wrote about Career Titles and Levels in Tech

  587. I wrote about Deploy de Contentz a Netlify

  588. I wrote about Contentz es Omakase

  589. I wrote about Conceptos bรกsicos de JS: Array#forEach

  590. I wrote about Cรณmo crear y publicar un mรณdulo para npm

  591. I wrote about Aplicaciones web con Zero Server

  592. I wrote about Presentando Contentz

  593. I wrote about Uso del prop children en React

  594. I wrote about Componentes con Hijos Personalizables en React

  595. I wrote about Composiciรณn de Componentes en React

  596. I wrote about Tipos de datos en React

  597. I wrote about Props con valores predefinidos en React

  598. I wrote about Componente de React personalizables usando props

  599. I wrote about Componentes con React

  600. I wrote about Hola Mundo con React

  601. I wrote about Cargando React desde un CDN

  602. I wrote about Mi Static Site Generator ideal

  603. I wrote about Automatizaciรณn con Shell Scripts

  604. I wrote about Conceptos bรกsicos de JS: Array#push

  605. I wrote about Conceptos bรกsicos de JS: Array#filter

  606. I wrote about Conceptos bรกsicos de JS: Array#map

  607. I wrote about Usando Generadores Asรญncronos en JavaScript

  608. I wrote about Carrusel de elementos dinรกmicos con React.js

  609. I wrote about Scalable Real-Time Applications

  610. I wrote about Aplicaciones Real-Time de Alta Escala

  611. I wrote about React v16.6: lazy, memo y mรกs

  612. I wrote about Introducciรณn a MDX

  613. I wrote about Documentation, Lessons Learned

  614. I wrote about Documentaciรณn, Lecciones Aprendidas

  615. I wrote about ยฟCรณmo mantenerse actualizado con el ecosistema de JavaScript?

  616. I wrote about Renderizando Markdown en React.js

  617. I wrote about An Accessible Approach to Frontendย Testing

  618. I wrote about How to keep updated with the JavaScript ecosystem?

  619. I wrote about Implementando un Servidor de GraphQL

  620. I wrote about Bye Platzi, hi โ–ฒZEIT

  621. I wrote about Ciclo de vida de un componente de React.js

  622. I wrote about Mezclando flujos sรญncronos y asรญncronos usando promesas en JavaScript

  623. I wrote about Introducciรณn a GraphQL

  624. I wrote about Quรฉ son y cรณmo funcionan las promesas en JavaScript

  625. I wrote about Sobre el ecosistema y la fatiga de JavaScript

  626. I wrote about Combinando React.js y Redux.js

  627. I wrote about Introducciรณn a Redux.js

  628. I wrote about Compilando el Frontend con webpack

  629. I wrote about Internacionalizaciรณn con React.js y FormatJS

  630. I wrote about Introducciรณn a ECMAScript 2016/7

  631. I wrote about Mi experiencia como estudiante de los cursos de Platzi

  632. I wrote about Lo nuevo en React v0.14

  633. I wrote about Usando ECMAScript 6 en tus tareas de Gulp

  634. I wrote about Usando ECMAScript 6/2015 con Babel

  635. I wrote about Buenas prรกcticas del desarrollo FrontEnd

  636. I wrote about Renderizando React.js en el server con Express.js y react-engine

  637. I wrote about ECMAScript 6: nueva sintaxis y caracterรญsticas para JavaScript

  638. I wrote about Cรณmo usar la etiqueta template en HTML5

  639. I wrote about Automatizaciรณn de tareas de frontend usando Gulp.js

  640. I wrote about Uso de mรณdulos en JavaScript con ECMAScript 6

  641. I wrote about Escribiendo CSS de la forma correcta

  642. I wrote about Definiendo conceptos - Closure y Scope en JavaScript

  643. I wrote about Ventajas y desventajas de los pre-procesadores de CSS

  644. I wrote about ยฟQuรฉ es Scrum? ยฟY cรณmo te ayuda trabajar?

  645. I wrote about El mรณdulo Flexbox de CSS3

  646. I wrote about JavaScript orientado a objetos