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.
I wrote about Making Web Component good enough
I saved Don't Sleep on AbortController
I published how to Stub a method in a class with Minitest
I published how to Show toast after a Remix action
I saved Building a Proper REST API
I saved How I would do auth
I published how to Simplify Component Imports with TypeScript Namespaces
I saved Card Stack
I wrote about On Frontend vs Backend
I published how to Validate Form in Remix with clientAction
I published how to Generate Cloudflare environment type with wrangler
I published how to Configure scoped private packages in Bun
I wrote about When to use Route Modal in React Router
I published how to Use package.json#bin to create a CLI
I saved Margin considered harmful
I published how to Access location.state in Remix loaders and actions
I saved The Copenhagen Book
I published how to Add i18n to a Remix Vite app
I published how to Autoload the correct Node version with NVM
I added the definition of HDR to the glossary
I added the definition of HMR to the glossary
I added the definition of PPR to the glossary
I added the definition of ISR to the glossary
I added the definition of SSG to the glossary
I added the definition of PESPA to the glossary
I added the definition of PEMPA to the glossary
I published how to Nest routes with dynamic params in Remix
I published how to Build a simple login and logout with Remix
I published how to Access Remix's loader data from a route ErrorBoundary
I published how to Access Remix's loaders data in entry.client
I published how to Handle not found URLs with Remix
I published how to Persist the user locale using cookies with Remix & i18next
I published how to Add dynamic canonical URL to Remix routes
I saved Parallelized Decision Making
I published how to Add custom attributes to Markdoc code fences
I published how to Enable Remix ~/ aliased imports in Vitest
I added the definition of API to the glossary
I added the definition of MPA to the glossary
I added the definition of SPA to the glossary
I added the definition of CSR to the glossary
I added the definition of SSR to the glossary
I published how to Add syntax highlight to Markdoc using Prism.js
I published how to Create a CRUD with Remix
I saved I miss RSS
I published how to Pass cookies from a Remix loader to an external API
I published how to Call an action from a loader in Remix
I published how to Use React Portal in Remix
I published how to Prevent the Remix loader to run after document request
I published how to Defer a Fetch response in Remix
I published how to Use a CDN for your static assets in Remix
I published how to Get the absolute URL in Remix's MetaFunction
I published how to Build an app with Remix and Bun
I saved Designing better target sizes
I published how to Find and remove unused code with Knip
I published how to Create multiple top-level layouts in Remix
I saved Kind of annoyed at React
I published how to Test meta tags using Playwright
I saved React Aria
I published how to Prefetch data for Remix Fetcher usage
I published how to Keep Your Loader Data Fresh in Remix
I published how to Expose Remix Routes as API Endpoints
I published how to Access the Search Params of a Request in Remix
I published how to Upload Images in a Remix Application
I published how to Redirect with Search Param in Remix
I published how to Access the Loader Data in Remix
I published how to Abort Async Calls Inside Remix Loaders and Actions
I published how to Get Remix route params `entry.server`
I published how to Test meta tags with Cypress
I saved The ideal viewport doesn’t exist
I saved My thoughts on open-source
I published how to Strongly type Remix route IDs
I published how to Strongly type public assets in Remix
I published how to Create a reusable Form component in Remix
I published how to Sync text input with URLSearchParam in Remix
I saved Social RSS
I saved The fediverse and the indieweb
I saved Blogging as DRY
I published how to Use TANStack Query to share data between Remix loaders
I published how to Logout from Auth0 with Remix Auth
I published how to Send Node.js ReadStream objects from Remix loaders
I published how to Reset a form on success in Remix
I published how to Use `qs.parse` to use nested form fields in Remix
I published how to Send JSON to a Remix action
I published how to Set multiple cookies in the same response in Remix loaders
I published how to Close SSE connection from the server in Remix
I published how to Measure performance with the Server-Timing header in Remix
I published how to Automatically commit sessions on Remix
I published how to Customize Remix AppLoadContext type
I published how to Turn on Caps Lock on Cypress
I published how to Delete a Cookie using Remix cookie helpers
I published how to Add runtime SSG and ISR to Remix
I published how to Improve SEO by not sending JS in Remix
I published how to Use AMP with Remix
I published how to Use Remix as a SPA only
I saved A Theory of Web Relativity
I published how to Downgrade to MPA if users prefer reduced data in Remix
I published how to Add rolling sessions to Remix
I published how to Use Server-Sent Events with Remix
I published how to Progressively enhance the useFetcher hook in Remix
I published how to Use `process.env` client-side with Remix
I published how to Persist inputs after a form submit in Remix
I saved Streaming: is it worth it?
I wrote about Throwing vs. Returning responses in Remix
I published how to Lazy-load React components in Remix
I saved 💿 remix simplifies things
I wrote about Optional route segments with Remix
I published how to Destroy user session and while setting a flash message in Remix
I published how to Add additional data before submitting on Remix
I published how to Redirect to an external website with Remix
I published how to Bubble up data on Remix routes
I published how to Group related routes together in Remix
I saved How to Section Your HTML
I published how to Parse Markdown with Markdoc in Remix
I wrote about Dependency injection in Remix loaders and actions
I wrote about Using Zod to safely read env variables
I saved RSS
I wrote about Working with Refresh Tokens in Remix
I saved Device-Agnostic
I wrote about E2E test Remix with Vitest and Puppeteer
I published how to Optimize image loading with plain HTML
I wrote about Multiple forms per route in Remix
I published how to Add returnTo behavior to Remix Auth
I wrote about Building a Command Palette with Remix and Tailwind UI
I published how to Share session and cookies between Next and Remix
I published how to Fix double data request when prefetching in Remix
I published how to Run Tailwind and Remix in Parallel with PM2
I published how to Use Remix with socket.io
I published how to Generate a PDF in Remix with Resource Routes
I published how to Avoid waterfalls of queries in Remix loaders
I published how to Run Next and Remix on the same server
I wrote about HTTP vs. Server-side Cache in Remix
I wrote about Clase rápida de programación asíncrona
I wrote about On-Demand Hydration in Remix
I saved Live validation is problematic
I saved Stop building client-side forms
I wrote about Loader vs Route Cache Headers in Remix
I wrote about The useMatches hook in Remix
I wrote about Validating Remix forms with Constraints API
I published how to Test Remix loaders and actions
I published how to Use NProgress in a Remix app
I wrote about Result Objects in TS
I wrote about Dark Mode and Dark Context
I saved When You Stop Counting
I published how to Use Fathom with Remix
I saved Why You Should Never Use MongoDB
I saved A Case For Use Cases
I published how to Fix `gyp: No Xcode or CLT version detected!` error
I published how to Use Dependabot to keep Remix up-to-date
I wrote about Automatic Revalidation in Remix
I saved People read on the web
I saved Browsers and Representation
I saved Google vs. the web
I saved The Mythical Document Web
I saved Breaking the web forward
I saved Back to the Future with RSS
I saved Client-Side Architecture Basics
I saved Screaming Architecture
I saved Anemic Domain Model
I saved iOS 15, Humane
I wrote about Creating a PDF with React in the Browser
I saved Meta Theme Color and Trickery
I wrote about Sending data from layout to leaf routes in Remix
I wrote about Using Service Workers with Remix
I wrote about Localizing Remix apps with i18next
I wrote about Adding CSRF protection to Remix
I published how to Load only the data you need in Remix
I wrote about Server-Side authentication with Auth0 in Remix
I wrote about Using TailwindCSS with Remix
I published how to Use ETags in Remix
I wrote about Jest Matchers for Remix responses
I wrote about Using Form Objects inside Remix actions
I wrote about Route protection in Remix with Policies
I published how to Redirect to the original URL inside a Remix action
I published how to Read search params with JS
I published how to Use ActiveModel::Serializer with non ActiveRecord object
I published how to Serialize list of items with ActiveModel::Serializer
I published how to Use serializers with JSON.stringify and JSON.parse
I published how to Force a locale in Rails I18n from the params
I wrote about Que es un bundler de JS
I wrote about Remix vs Next.js Comparison
I saved Imagining native skip links
I published how to Add missing `created_at` and `updated_at` columns in Rails
I wrote about How to rename a column in a Rails migration
I saved Before You memo()
I wrote about Usar variables de entorno en Next.js
I published how to Build your own RSS Reader
I published how to Keep Heading Levels Consistent with React Context
I saved Preload: What Is It Good For?
I saved Open Peeps
I saved System Design 101
I wrote about About
I saved Be Wary of Nesting Roles
I saved Accessible SVGs
I wrote about 🔥 Pro Tip: Name your useEffect functions
I saved Alt-texts: The Ultimate Guide
I saved CSS and Scalability
I wrote about Using MDX with Remote Content
I saved Practical React Query
I published how to Use TailwindCSS Typography with Dark Mode Styles
I saved Don't design for mobile
I saved Stop Using “Drop-down”
I saved The Lava Layer Anti-Pattern
I saved UI as an afterthought
I wrote about Todo lo que sé de SWR
I saved In 2020, what is "frontend" 🤨
I saved Wormhole state management
I saved Todo el software está roto
I saved Margins and Composability in CSS
I saved Defining Component APIs in React
I saved Architecting UIs for Change
I saved When frontend means full stack
I wrote about The States of the UI
I saved "Semantic" CSS
I saved Second-guessing the modern web
I saved A clean start for the web
I wrote about What I Use
I saved Most tech content is bullshit
I saved The Art of UI Skeletons
I saved Shared Hook State with SWR
I saved Testing in the Frontend World
I saved The Real Dark Web
I saved The Elements of UI Engineering
I saved The Great Divide
I saved We have a problem with promises
I saved How the Blog Broke the Web
I saved How to Section Your HTML
I saved write on your own website
I saved Just write
I saved The Documentation Compendium
I saved The Power of Sensible Defaults
I saved HTML Reference
I saved CSS Reference
I saved The God Login
I saved Your Body Text Is Too Small
I saved Architecture as a burden
I saved Refactoring UI
I saved Cards
I saved Introducing Grial
I saved Implementando Pulse Editor
I saved Aplicación de escritorio Pulse
I saved Presentamos Pulse Editor
I saved ¿Qué es y para qué sirve Babel?
I saved Manejo de errores en Redux.js
I saved Migrando a Redux
I saved Glosario de términos de Redux
I saved Pruebas unitarias en Redux.js
I saved Acciones asíncronas en Redux.js
I saved Middlewares en Redux.js
I wrote about Como me inicié en el desarrollo web
I wrote about Why build a non-RESTful API
I wrote about How I work with static assets in React apps
I wrote about How shallow: true works in Rails
I wrote about Como organizo mis aplicaciones de React
I wrote about How I Organize React Applications
I wrote about Usa React.Suspense para controlar la carga de imagenes
I wrote about Data-Aware Components
I wrote about Collected Notes TS Client
I published how to Use SWR with Geolocation
I wrote about Using Collected Notes as CMS
I published how to Sync WebApp Session Status between Tabs with SWR
I published how to Sync SWR cache with Web Storage
I published how to Configure Google Suite MX records in Vercel
I published how to Report Web Vitals in Next.js
I published how to Use React.Suspense to wait for an image to load
I published how to Purge unused CSS with TailwindCSS
I published how to Setup a redirect inside a project deployed to Vercel
I published how to Use a scoped registry with Yarn
I wrote about Using Immer with SWR to mutate data
I wrote about Render as you Fetch Pattern in React with SWR
I wrote about Prefetching Data in a Next.js Application with SWR
I wrote about Using Tailwind with Next.js
I wrote about Using Suspense for Data Fetching Today with SWR
I wrote about Using Paginated Data with SWR
I wrote about Introduction to SWR
I published how to Automatically Publish to npm using GitHub Actions
I wrote about Feature Flags in React with Flagged
I wrote about Next.js File Structure
I wrote about Testing in Next.js: Dynamic Imports
I wrote about Redirects in Next.js, the Best Way
I wrote about Working with Forms in React without libraries
I wrote about Working with conditions & lists in React
I wrote about Introduction to React with the State & Effects hooks
I wrote about Introducing Contentz
I wrote about Career Titles and Levels in Tech
I wrote about Deploy de Contentz a Netlify
I wrote about Contentz es Omakase
I wrote about Conceptos básicos de JS: Array#forEach
I wrote about Cómo crear y publicar un módulo para npm
I wrote about Aplicaciones web con Zero Server
I wrote about Presentando Contentz
I wrote about Uso del prop children en React
I wrote about Componentes con Hijos Personalizables en React
I wrote about Composición de Componentes en React
I wrote about Tipos de datos en React
I wrote about Props con valores predefinidos en React
I wrote about Componente de React personalizables usando props
I wrote about Componentes con React
I wrote about Hola Mundo con React
I wrote about Cargando React desde un CDN
I wrote about Mi Static Site Generator ideal
I wrote about Automatización con Shell Scripts
I wrote about Conceptos básicos de JS: Array#push
I wrote about Conceptos básicos de JS: Array#filter
I wrote about Conceptos básicos de JS: Array#map
I wrote about Usando Generadores Asíncronos en JavaScript
I wrote about Carrusel de elementos dinámicos con React.js
I wrote about Scalable Real-Time Applications
I wrote about Aplicaciones Real-Time de Alta Escala
I wrote about React v16.6: lazy, memo y más
I wrote about Introducción a MDX
I wrote about Documentation, Lessons Learned
I wrote about Documentación, Lecciones Aprendidas
I wrote about Renderizando Markdown en React.js
I wrote about An Accessible Approach to Frontend Testing
I wrote about How to keep updated with the JavaScript ecosystem?
I wrote about Implementando un Servidor de GraphQL
I wrote about Bye Platzi, hi ▲ZEIT
I wrote about Ciclo de vida de un componente de React.js
I wrote about Introducción a GraphQL
I wrote about Qué son y cómo funcionan las promesas en JavaScript
I wrote about Sobre el ecosistema y la fatiga de JavaScript
I wrote about Combinando React.js y Redux.js
I wrote about Introducción a Redux.js
I wrote about Compilando el Frontend con webpack
I wrote about Internacionalización con React.js y FormatJS
I wrote about Introducción a ECMAScript 2016/7
I wrote about Mi experiencia como estudiante de los cursos de Platzi
I wrote about Lo nuevo en React v0.14
I wrote about Usando ECMAScript 6 en tus tareas de Gulp
I wrote about Usando ECMAScript 6/2015 con Babel
I wrote about Buenas prácticas del desarrollo FrontEnd
I wrote about Cómo usar la etiqueta template en HTML5
I wrote about Automatización de tareas de frontend usando Gulp.js
I wrote about Uso de módulos en JavaScript con ECMAScript 6
I wrote about Escribiendo CSS de la forma correcta
I wrote about Definiendo conceptos - Closure y Scope en JavaScript
I wrote about Ventajas y desventajas de los pre-procesadores de CSS
I wrote about ¿Qué es Scrum? ¿Y cómo te ayuda trabajar?
I wrote about El módulo Flexbox de CSS3
I wrote about JavaScript orientado a objetos