Code quality and design

55 posts
Taming a Python: don't let the snake bite

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

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.

Making an existing Laravel application multi-tenant with Tenancy for Laravel

Making an existing Laravel application multi-tenant with Tenancy for Laravel

Transforming a legacy application into a multi-tenant powerhouse is no small feat. Learn how we tackled the challenges of adding multi-tenancy to a Laravel app, from infrastructure planning to custom bootstrappers, and discover practical tips to future-proof your applications.

Accessibility in mobile apps: considerations for startups

Accessibility in mobile apps: considerations for startups

Accessibility isn’t just ethical—it’s essential for reaching a wider audience and creating loyalty. Designing apps with inclusivity in mind boosts engagement, ensures compliance, and sets your product apart in a competitive market.

Introducing URL: The Zero-Dependency, Framework-Agnostic State Manager

Introducing URL: The Zero-Dependency, Framework-Agnostic State Manager

Say hello to URL 🚀 We’re excited to introduce URL, a zero-dependency, framework-agnostic solution that simplifies state management for modern web development. No installs. No complex tools. Just pure simplicity.

How to manage technical debt as part of your agile process

How to manage technical debt as part of your agile process

How to manage technical debt effectively to keep startups agile with strategies for documenting and prioritising technical debt, integrating it into your roadmap, and creating a culture of continuous improvement. Keep your codebase healthy and your team productive with these actionable tips.

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

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.

Crossing boundaries: Handling data mutations in client components

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

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.

You’ve successfully subscribed to madewithlove
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.