Platform rebuild · Dunelm
Migration to Micro-Frontends
Dunelm's teams went from tripping over each other to shipping three times as often.

- Company
- Dunelm
- Category
- Platform rebuild
- Timeline
- Jul 2022 – Apr 2024
- Services
- Website rebuild · Shared components · Release automation
THE CHALLENGE
Dunelm is one of the UK's biggest homeware retailers, and its entire website was built as a single block of code. Every team that wanted to change anything had to change that same block.
So they queued. One team's mistake could hold up everybody else's release, and a single bad merge could stall work across a site serving millions of customers.
Shipping anything felt risky, so people shipped less often — which meant improvements customers would have liked sat waiting for weeks.
WHAT I BUILT
We broke the site into separate pieces that each team could build, test and release on its own. The header, the footer and the shared parts that appear on every page became independent rather than one tangled whole.
I rebuilt those shared surfaces, built new features, and fixed faults on the old site while the new one grew alongside it — so shoppers never saw a pause while the work happened.
Releases were automated end to end and covered by automatic checks, so getting a change live stopped being an event that needed a meeting.
The short version
Dunelm's website was one enormous piece of code that every team had to share. I was part of the team that broke it into independent pieces, so each team could release its own work without waiting for anyone else. Releases went up roughly threefold and the site got faster for shoppers.
What was at stake
For a retailer this size, the website is the shop. Every week a change sat in a queue was a week of improvements customers never saw — a better checkout, a clearer product page, a fixed fault on a category listing.
The deeper problem was cultural. When releasing is risky, people batch changes up to reduce how often they do it, which makes each release bigger and riskier still. The team was stuck in that loop.
Splitting the site into pieces
Rather than rewrite everything at once — expensive, slow, and a genuine risk to trading — we carved the site up gradually. Parts that appear on every page came out first: the header, the footer, and the shared components everything else is built from.
Each piece became something a team could work on, test and release by itself. A change to the header no longer meant touching the code that runs the basket.
Keeping the shop open while rebuilding it
The old site kept trading throughout. I built new features on the new architecture and fixed faults on the old one at the same time, with both running side by side. Customers saw a site that kept working and gradually got better, not a big risky relaunch.
Making releases boring
Getting a change live was automated from start to finish, with checks that run on every change to catch mistakes before customers ever see them. The goal was to make releasing dull — the point at which a team stops planning releases and simply ships.
Working with the wider team
I worked alongside designers and testers rather than taking finished designs and handing back finished code, which caught the awkward details early — the states nobody thought about, the things that break on a small screen.
Where it landed
- Teams release around three times as often as before.
- No team is blocked by another team's unfinished or broken work.
- The site measurably improved on the speed checks Google uses to rank pages.
- Shared parts are built once and reused, instead of rebuilt per team.
THE OUTCOME
Three times as many releases, and a faster site for shoppers.
- 3×
- As many releases as before
- Millions
- Shoppers using the site
- 0
- Teams left waiting on someone else to release
Working on something similar?
Tell me what you're building — I'll reply within 8 hours with a free intro call and a fixed quote within 24 hours after our call.
Book a free intro call