Valentin Galfré

2024 Frontend platform

Microfrontends for Mercado Libre's retail platform

Senior Software Engineer on the 1P (first-party) team

From April 2024 to September 2025 I worked on frontend platform engineering on Mercado Libre's first-party retail team, the direct retail experience on Latin America's highest-traffic e-commerce platform. I was the most experienced engineer on the team and its technical referent, not its manager.

Problem

Several teams shipped into the same retail surfaces, so every deploy depended on everyone else, and performance regressions on high-traffic pages were expensive at Mercado Libre's scale.

Solution

I architected microfrontend systems with React so each team could own and deploy its slice independently, and drove the performance optimization work across the highest-traffic surfaces.

Outcome

Teams gained independent deployments and a more modular codebase, modern web practices spread across the frontend teams, and engineers grew through code reviews and technical guidance.

Impact

Independent team deployments and measurably faster high-traffic pages on the retail experience.

A classical painting of a vast marketplace under a stormy sky, dozens of stalls each with its own colored awning, a long colonnade behind.
One marketplace, many stalls. Each team owns and ships its own.

The shape of a deploy

The problem was never the code. It was that every team’s change waited for every other team’s change, and when something broke on a page half of Latin America was looking at, finding the owner took longer than the fix.

Catalog Checkout Reviews Discovery release users

Four teams, one shared release. Anyone's change waits for everyone's, and anyone's bug is everyone's page. Four teams, four pipelines. A change reaches users when its owner says so, and a bug pages exactly one phone.

The shape of a deploy, before and after the platform work.

The work was in the seams: one owner per slice of the page, a thin shell that owned routing, design system and telemetry, a contract small enough to fit in your head, and failure isolation so a slice that did not load rendered its fallback while the rest of the page kept working.

How the standards travelled

Independent deploys gave teams autonomy. Performance budgets in the pipeline kept that autonomy from turning into slow pages. Neither would have held without the same few review comments, repeated across teams until they were habits.

apps/gallery/src/render.ts changes requested
14 import { loadRecommendations } from "./recommendations";
15 + import { trackingScript } from "@vendor/analytics";
16
17 + document.head.appendChild(trackingScript());
galfrevn

Who owns this script, and why is it on the critical path? If analytics needs it, it loads after first paint.

18 export async function renderGallery(productId: ProductId) {
19 + const recommendations = await loadRecommendations(productId);
galfrevn

Recommendations belong to Discovery. Gallery should not wait on their slice. Load it in their rectangle, not ours.

20 const gallery = await loadGallery(productId);
The two comments I left most often that year. Always the same questions, until nobody needed to be asked.

Around the work