Frontend

From template tag to hydrated component

A React island inside a Django page needs three things: a template tag that records rather than renders, one batched call to a render sidecar, and a browser that hydrates only the IDs the server named. Shared state then lives outside React, in a small store or the URL.

One screen doesn't need a rewrite

You don't need a front-end rewrite to make one screen feel like an app. A small render sidecar lets an existing back-end server render React components, hydrate only the islands that need to be interactive, and leave auth, the ORM, and your templates exactly where they are.

Curl says it's fast. Your users disagree.

Synthetic checks like curl and Lighthouse measure a request your users never make. A HAR file captures the real logged-in flow, and handed to Claude alongside the codebase it turns a wall of JSON into a ranked list of fixes that get implemented in the same conversation.

A back-end engineer can do what now?

A back-end engineer set out to redesign a React app with an AI agent and came out actually knowing React. The unlock wasn't the prompting, it was understanding the code well enough to steer it. As the cost of entry collapses, knowing the technology matters more, not less.

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.

No designer? No problem with v0

For small teams without a designer, v0 is a game-changer. The cost justifies itself by letting you explore and validate ideas in minutes rather than days.

Learning from OSS: configuring your Link component via a Provider (Braid)

Learn how SEEK’s Braid Design System uses a linkComponent provider to flexibly support routing across React apps. A great pattern for design systems, and one madewithlove engineers keep coming back to when building scalable front-end libraries.

Redux is legacy - modern ways to approach state in React

Stuck in Redux boilerplate for a simple React task? You're not alone. Learn how tools like Tanstack Query, nuqs, and react-hook-form help you replace Redux with simpler, more maintainable solutions—backed by madewithlove's engineering expertise.

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.

Lynx: a new contender in cross-platform development?

Lynx could revolutionize cross-platform mobile development with its unique approach and performance benefits. Is it time to switch from React Native or Flutter?

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.

Taming a Python: don't let the snake bite

Adapting to a new tech stack is all about mindset. Switching from PHP to Python was an eye-opener. Package management confusion, unexpected paradigms, and a lack of encapsulation made for an interesting challenge. Embracing constraints is the secret to growth.

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.

Subscribe