Sergio Xalambrí

I'm a web developer from Buenos Aires, Argentina. I work at Daffy as a Web Developer.

Subscribe to my content using RSS.

  1. I saved Toasts are Bad UX

  2. I saved The XY Problem

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

  4. I saved no hello

  5. I saved never just

  6. I published how to Add a Color Scheme Toggle in React Router

  7. I saved JSX Over The Wire

  8. I published how to Use client_id and client_secret in OAuth2

  9. I published how to Use the OAuth2 Introspection Endpoint

  10. I published how to Revoke a Refresh Token in OAuth2

  11. I published how to Use PKCE in OAuth2 Authorization Code Flow

  12. I published how to Add Custom Claims to JWT Access Tokens

  13. I published how to Validate exp, iat, and nbf in JWTs

  14. I published how to Validate JWTs with JWKS

  15. I wrote about OAuth2 Access Token Claims Explained

  16. I wrote about OAuth2 Scopes Explained

  17. I published how to Test Middleware in React Router

  18. I wrote about OAuth2 Tokens Explained

  19. I wrote about OAuth2 Audience Explained

  20. I wrote about JWT vs. Opaque Tokens

  21. I published how to Use middleware in React Router

  22. I wrote about OAuth2 for Backend-for-Frontend

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

  24. I saved What I learned at Campsite

  25. I published how to Download a file from a React Router route

  26. I saved Domain driven boldness

  27. I saved Good concerns

  28. I saved Vanilla Rails is plenty

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

  30. I published how to Load Dynamic Stylesheets in React Router

  31. I published how to Split routes config in React Router

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

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

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

  35. I saved Because I wanted to

  36. I wrote about Making Web Component good enough

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

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

  39. I saved Building a Proper REST API

  40. I saved How I would do auth

  41. I saved Card Stack

  42. I wrote about On Frontend vs Backend

  43. I published how to Validate Form in Remix with clientAction

  44. I published how to Configure scoped private packages in Bun

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

  46. I saved Margin considered harmful

  47. I saved The Copenhagen Book

  48. I published how to Add i18n to a Remix Vite app

  49. I published how to Autoload the correct Node version with NVM

  50. I added the definition of HDR to the glossary

  51. I added the definition of HMR to the glossary

  52. I added the definition of PPR to the glossary

  53. I added the definition of ISR to the glossary

  54. I added the definition of SSG to the glossary

  55. I added the definition of PESPA to the glossary

  56. I added the definition of PEMPA to the glossary

  57. I published how to Nest routes with dynamic params in Remix

  58. I published how to Build a simple login and logout with Remix

  59. I published how to Access Remix's loaders data in entry.client

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

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

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

  63. I added the definition of API to the glossary

  64. I added the definition of MPA to the glossary

  65. I added the definition of SPA to the glossary

  66. I added the definition of CSR to the glossary

  67. I added the definition of SSR to the glossary

  68. I published how to Create a CRUD with Remix

  69. I saved I miss RSS

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

  71. I published how to Use React Portal in Remix

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

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

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

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

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

  77. I saved Kind of annoyed at React

  78. I published how to Test meta tags using Playwright

  79. I saved React Aria

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

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

  82. I published how to Expose Remix Routes as API Endpoints

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

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

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

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

  87. I published how to Test meta tags with Cypress

  88. I saved My thoughts on open-source

  89. I published how to Strongly type Remix route IDs

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

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

  92. I saved Social RSS

  93. I saved Blogging as DRY

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

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

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

  97. I published how to Automatically commit sessions on Remix

  98. I published how to Customize Remix AppLoadContext type

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

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

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

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

  103. I published how to Use AMP with Remix

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

  105. I saved A Theory of Web Relativity

  106. I published how to Add rolling sessions to Remix

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

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

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

  110. I saved Streaming: is it worth it?

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

  112. I wrote about Optional route segments with Remix

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

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

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

  116. I saved How to Section Your HTML

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

  118. I saved RSS

  119. I wrote about Working with Refresh Tokens in Remix

  120. I saved Device-Agnostic

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

  122. I wrote about Multiple forms per route in Remix

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

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

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

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

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

  128. I wrote about On-Demand Hydration in Remix

  129. I wrote about The useMatches hook in Remix

  130. I published how to Test Remix loaders and actions

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

  132. I wrote about Result Objects in TS

  133. I wrote about Dark Mode and Dark Context

  134. I saved When You Stop Counting

  135. I published how to Use Fathom with Remix

  136. I saved A Case For Use Cases

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

  138. I wrote about Automatic Revalidation in Remix

  139. I saved People read on the web

  140. I saved Browsers and Representation

  141. I saved Google vs. the web

  142. I saved The Mythical Document Web

  143. I saved Breaking the web forward

  144. I saved Back to the Future with RSS

  145. I saved Screaming Architecture

  146. I saved Anemic Domain Model

  147. I saved iOS 15, Humane

  148. I wrote about Using Service Workers with Remix

  149. I wrote about Localizing Remix apps with i18next

  150. I wrote about Adding CSRF protection to Remix

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

  152. I wrote about Using TailwindCSS with Remix

  153. I published how to Use ETags in Remix

  154. I wrote about Jest Matchers for Remix responses

  155. I published how to Read search params with JS

  156. I wrote about Que es un bundler de JS

  157. I wrote about Remix vs Next.js Comparison

  158. I saved Imagining native skip links

  159. I saved Before You memo()

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

  161. I published how to Build your own RSS Reader

  162. I saved Open Peeps

  163. I saved System Design 101

  164. I wrote about About

  165. I saved Be Wary of Nesting Roles

  166. I saved Accessible SVGs

  167. I saved CSS and Scalability

  168. I wrote about Using MDX with Remote Content

  169. I saved Practical React Query

  170. I saved Don't design for mobile

  171. I saved Stop Using “Drop-down”

  172. I saved The Lava Layer Anti-Pattern

  173. I saved UI as an afterthought

  174. I wrote about Todo lo que sé de SWR

  175. I saved Wormhole state management

  176. I saved Todo el software está roto

  177. I saved Architecting UIs for Change

  178. I wrote about The States of the UI

  179. I saved "Semantic" CSS

  180. I saved A clean start for the web

  181. I wrote about What I Use

  182. I saved The Art of UI Skeletons

  183. I saved Shared Hook State with SWR

  184. I saved The Real Dark Web

  185. I saved The Great Divide

  186. I saved How the Blog Broke the Web

  187. I saved How to Section Your HTML

  188. I saved write on your own website

  189. I saved Just write

  190. I saved HTML Reference

  191. I saved CSS Reference

  192. I saved The God Login

  193. I saved Your Body Text Is Too Small

  194. I saved Architecture as a burden

  195. I saved Refactoring UI

  196. I saved Cards

  197. I saved Introducing Grial

  198. I saved Implementando Pulse Editor

  199. I saved Presentamos Pulse Editor

  200. I saved Migrando a Redux

  201. I saved Middlewares en Redux.js

  202. I wrote about Como me inicié en el desarrollo web

  203. I wrote about Why build a non-RESTful API

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

  205. I wrote about How I Organize React Applications

  206. I wrote about Data-Aware Components

  207. I wrote about Collected Notes TS Client

  208. I published how to Use SWR with Geolocation

  209. I wrote about Using Collected Notes as CMS

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

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

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

  213. I published how to Purge unused CSS with TailwindCSS

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

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

  216. I wrote about Using Tailwind with Next.js

  217. I wrote about Using Paginated Data with SWR

  218. I wrote about Introduction to SWR

  219. I wrote about Feature Flags in React with Flagged

  220. I wrote about Next.js File Structure

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

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

  223. I wrote about Introducing Contentz

  224. I wrote about Career Titles and Levels in Tech

  225. I wrote about Deploy de Contentz a Netlify

  226. I wrote about Contentz es Omakase

  227. I wrote about Aplicaciones web con Zero Server

  228. I wrote about Presentando Contentz

  229. I wrote about Uso del prop children en React

  230. I wrote about Composición de Componentes en React

  231. I wrote about Tipos de datos en React

  232. I wrote about Componentes con React

  233. I wrote about Hola Mundo con React

  234. I wrote about Cargando React desde un CDN

  235. I wrote about Mi Static Site Generator ideal

  236. I wrote about Automatización con Shell Scripts

  237. I wrote about Conceptos básicos de JS: Array#push

  238. I wrote about Conceptos básicos de JS: Array#map

  239. I wrote about Scalable Real-Time Applications

  240. I wrote about React v16.6: lazy, memo y más

  241. I wrote about Introducción a MDX

  242. I wrote about Documentation, Lessons Learned

  243. I wrote about Documentación, Lecciones Aprendidas

  244. I wrote about Renderizando Markdown en React.js

  245. I wrote about Implementando un Servidor de GraphQL

  246. I wrote about Bye Platzi, hi ▲ZEIT

  247. I wrote about Introducción a GraphQL

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

  249. I wrote about Introducción a Redux.js

  250. I wrote about Compilando el Frontend con webpack

  251. I wrote about Introducción a ECMAScript 2016/7

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

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

  254. I wrote about Escribiendo CSS de la forma correcta

  255. I wrote about El módulo Flexbox de CSS3

  256. I wrote about JavaScript orientado a objetos