JavaScript

How we rewrote our tech stack in under a day

Last week, we deleted 16,000 lines of code, rewrote 11,500, migrated frameworks, ripped out React, and swapped our entire CSS setup with AI. It took less than 6 hours.

Why front-end rewrites are more common than refactors

Why do engineering teams keep rewriting frontends? Let’s explore the leadership bias and tech churn that makes refactors feel harder—yet ultimately more sustainable.

Branded types in TypeScript: when string just isn’t enough

Discover how branded types can improve your TypeScript code quality, make your intent clearer, and catch bugs before they even compile.

Learning from OSS: legacyBehaviour property on Next.js 's Link component

Ever introduced a breaking change and instantly regretted it? Components evolve, but forcing users into painful refactors isn’t ideal. Next.js tackled this with a legacyBehaviour flag—letting devs opt out of the new behavior while they migrate at their own pace.

Caching routes, components and functions with "use cache" in Next.js 15 (canary)

"use cache" is an experimental Next.js 15 Canary feature and may change. In this tutorial, we explore "use cache" for caching, covering fetching and inserting comments with Drizzle to reduce database calls and improve performance while maintaining control.

Instant feedback using the useOptimistic hook in React

Implement optimistic updates in React with the useOptimistic hook for instant UI feedback. This technique enhances user experience by updating the interface immediately while the server processes actions in the background, creating a faster and more responsive app.

Crossing boundaries: Handling data mutations in client components

Discover how to efficiently mutate data in client components using server actions in Next.js. Learn to handle form submissions with React’s evolving hooks like useActionState, eliminate the need for API endpoints, and streamline client-server interactions for faster, more responsive applications.

Crossing boundaries: Passing server data to client components in React

Learn how to optimize performance by fetching data server-side without blocking the page render. This guide explores passing promises to React client components and resolving them asynchronously using Suspense, ensuring a smoother, faster user experience.

Cookie-based authentication with Laravel Sanctum

This is a detailed step-by-step guide for setting up Laravel Sanctum with cookie-based authentication. It explains the logic behind each step and how to set up Postman. We also tackle the most common CORs issues.

“Fake” e2e tests with react-testing-library

How to run fake e2e tests using react-testing-librabry? Here's a quick tutorial on how to speed up your feedback loop when working in front end applications.

Modern front-end monorepos — Part 2: running scripts

In the previous article, we set up a monorepo project with 2 applications and a package. We also enabled Yarn workspaces to manage the dependencies

Modern front-end monorepos — Part 1: managing dependencies and sharing code

I’ve really learned to love a good monorepo setup, a repository that contains multiple packages and/or applications. Being able to make changes across

Cypress or how I learned to stop worrying and love E2E

Over my career I’ve dabbled in various forms of testing, both on the backend and front-end. I’ve tried various frameworks and experimented with

Creating a Scientific Pitch Notation Type using template literal types

Ok. So. The honeymoon phase is over. I can say TypeScript is steadily becoming a part of my daily stack. While working on converting music-fns

Querying your Redux store with GraphQL

Rationale I love React and I love Redux, but one of the things I struggle with a lot is how complicated the latter can make

Subscribe