
You Only Get to See It From the Outside Once
The most valuable thing an experienced engineer brings to a new project isn't a skill — it's a vantage point. For a short window, you can st...
Subscribe to Maksym Kuzmitskyi (MaximusFT)'s Newsletter
Get new articles and engineering posts delivered to your inbox.

The most valuable thing an experienced engineer brings to a new project isn't a skill — it's a vantage point. For a short window, you can st...

The theming article ended on a move from how an app looks to how power users drive it. The command palette — the Cmd+K menu that fuzzy-searc...

The command palette article closed by promising the last piece of this look-and-feel stretch, and it's the one that looks the most like a so...

I work across six or seven repositories on one project — a big hybrid thing, part microfrontend, part backend, several apps that all talk to...

This cluster has been about how the parts of an app communicate — event buses for ambient signals, feature flags for toggling behavior. Both...

The event bus article ended on a warning about a certain kind of switch teams sprinkle everywhere with a casual "it's just a toggle" attitud...

The last cluster was about making state inside a feature explicit and well-modeled. This one is about what happens between features — how th...

Look at a component you wrote recently and count its status booleans. isLoading, isError, isSuccess, isEditing, isSubmitting. Five of them. ...

The optimistic UI article ended on a small observation that turns out to be a big one. The rollback in onError was a single-step reversal: s...

At the end of the last article I said that once you hold one coherent copy of server state and can invalidate it precisely, a door opens tha...

The previous article drew a hard line: state the client owns versus data it doesn't. Everything there was about the stuff you own — theme, d...

At the end of the last article I said I wanted to start this run with the deceptively simple persistence question: what belongs in localStor...

The hardest part of a UI kit is not writing the components. That's the trap. You can build a clean <Button>, a flexible <Select>, a beautifu...

At the end of the last article I told you to go find the one component everyone reimplements slightly differently. So let's say you found it...

Here's a thing that took me too long to internalize: the most reusable UI code I've ever written renders nothing. No <div>, no class name, n...

You build a <Select>. It starts clean — options in, value out. Then the requests arrive. Someone needs a divider between groups. Someone nee...

Somewhere around 2019, "container vs presentational components" got quietly filed under obsolete. Hooks had landed, the man who popularized ...

Every code review eventually gets the comment: "this component is too big, split it up." It's good advice roughly half the time. The other h...

Draw your app's architecture on a whiteboard and it always looks clean. Neat boxes, sensible names, tidy layers stacked top to bottom. Every...

There's a specific kind of import that feels like good engineering: import { Button, Card, Modal, Tooltip } from '@/shared/ui'; One line. On...

Open the shared/ folder in almost any React app that's been alive for a year. Count the files. Then try to explain, out loud, what the folde...

The first time someone tells you that you can build a 3D scene — a rotating model, a lit environment, a VR world — using React, it sounds li...

The single most useful thing to get straight about React Native is a slogan, and it's one people consistently misquote. The promise was neve...

There's a specific moment where the desktop pitch becomes irresistible. You've built a genuinely good React app, it lives in a browser tab, ...

Every team I've watched try to document their components starts in the same place: a page in the wiki. Someone writes up the Button — here a...

The way most engineers relate to a design file is as a target to hit. The designer hands over a Figma frame, and the job — as everyone tacit...

"When someone signs up, just send them a welcome email." It's the kind of request that gets tossed into a standup like it's nothing, and the...

Adding a file upload feels like a solved problem. You drop an <input type="file"> on the page, grab the file in an onChange, POST it to an e...

A date is just a value. It sits there in your data looking as harmless as a string or a number, and for a while it behaves. Then one day a u...

On the surface, taking a payment looks like the most ordinary thing in the world: a form with some fields, a submit button, a success messag...

Ask most developers what internationalization means and you'll get the same answer: instead of writing "Save" in your JSX, you look up a key...

I've been writing code since 2003. That's over twenty years of watching patterns come and go — and occasionally making the same mistakes the...

Everything in this series so far has had the same conversation shape: the client asks a question, the server answers. You call useQuery, the...

The first AI demo you build feels like cheating. A text input, a fetch to a model, a response on screen — thirty lines, maybe less, and sudd...

Two developers look at the same untested codebase and reach opposite conclusions. One says "this is reckless, we need 100% coverage before w...

The first time I deployed something to production, it took a week and a person whose entire job was making deployments happen. There was a s...

There's a specific fear a lot of frontend developers have, and I had it too: the database is where I'm not supposed to go. Tables, indexes, ...

For most of this series I've drawn a clean line: React runs in the browser, the backend runs on a server, and the contract between them is w...

"That's a backend concern" is one of the most expensive sentences a frontend developer can say. I understand the instinct. There's a clean l...

Authentication always starts as a login form. Two fields and a button. You could build that in an afternoon, and that afternoon is exactly t...

A few weeks ago I wrote about giving your AI agent a persistent memory — a simple system of markdown files the agent reads and writes across...

The chart looked perfect in the demo. Clean line, smooth animation, a tooltip that felt expensive. Then real data showed up — forty thousand...

Every codebase has one file everyone is a little afraid of. In the apps I've worked on, it's usually a form. Not a login form. Those are fin...

The demo always goes well. That's the trap. You're evaluating a component library. You drop in their date picker, their data table, their mo...

Ask ten React developers how to style a component and you'll start a fight. Not a discussion. A fight. Tailwind people and CSS-in-JS people ...

The company had a legacy PHP application, and we were not brought in to rebuild it. We were brought in to add one module. One module. A self...

I was mass-scrolling LinkedIn and almost missed it. A post from Dmytro Sergiev — a Product Manager, not an engineer — about how he gives his...

The policy builder did not look dangerous at first. It was "just a form." A few sections, some conditional fields, a Save Draft button, a fi...

I recently wrote a detailed article on this topic. It came out long because I wanted to cover every nuance — the full story, detailed interv...

I have failed interviews. Multiple times. Not because I did not know my craft — I have been shipping production frontend for well over a dec...

The policy list bug started as a support ticket. An agent filtered policies by status, page, and renewal date. She copied the URL and sent i...

Three months into the insurance CRM, we had a page that felt haunted. The policy list would load. Then it would blink. Then it would refetch...

The first serious error-handling conversation on the insurance CRM happened after a demo. We had built the policy detail page. It fetched th...

At the insurance company, our React app started with a structure I still like for small projects. src/ api/ components/ hooks/ layouts/ page...

Six weeks into the insurance CRM project, we had a production incident. The backend team renamed a field — policy_number became policyNumber...

I joined a project where everyone was writing code. Not just developers — project managers, analysts, even a designer who had never seen a t...

Static export remains the simplest deployment model for content-focused sites. This article documents the setup behind this very site — ma-x...

I remember the exact moment I realized I couldn't go back. I had been writing TypeScript for a while, got used to it, and then joined a proj...

I was three weeks into a new client engagement — a mid-sized insurance company building a policy administration CRM from scratch. No legacy ...

At Motorola Solutions I built a multi-step contract wizard where users selected products, services, additional options, and pricing tiers — ...

At Motorola Solutions I walked into a codebase with hundreds of internal projects. Every team followed the brand book — in theory. In practi...

I joined a large Canadian automotive company as one of three senior frontend engineers. The site was public-facing — a product catalog where...

I learned to love monorepos the hard way — by suffering through the alternative. At a large Canadian automotive company, we had a repository...