Inspiration

As I was looking for Josh Comeau's public repositories, I saw a nice React library that was last committed 4 years ago. The project was not actively maintain, as admitted by the author. I realized that it relied heavily on findDomNode API, which has been removed since React 19. This means the library won't be workable on projects that use React 19 and above. I thought the library was too nice to go to waste, so I decided to modernize it with the help of Gitlab Duo agents.

What it does

react-flip-move is a widely-used MIT React animation library that has gone unmaintained and broke on React 19 because it relied on ReactDOM.findDOMNode (removed in React 19). This fork modernizes it so it runs on React 19 without breaking React 16–18 users, and ships a live demo that consumes the built package — so what you see in the demo is exactly what someone installs.

The project is powered with a custom-built GitLab Duo flow that collapses the review‑fix‑review loop. When you mention it on a merge request, it reads the review discussion threads, applies only the small, explicit, mechanical edits each comment calls for (typos, formatting, naming), commits them to the MR's source branch, and reports what it applied versus what it skipped. Trivial feedback goes from "review → fix → review again" to "review → merged."

How we built it

I built a hands-off agentic workflow on GitLab Duo Agent Platform and pointed it at a stale MIT library:

Plan: a Planner agent decomposed the modernization work (React 19 compatibility, demo fidelity, fixes) into issues. Create: I assigned those issues to Duo Developer, which produced the merge requests — the findDOMNode removal, the demo switched to the built dist/, and the follow-up fixes. I wrote no code by hand; I set intent and the agents executed. Verify/iterate: a custom Duo flow I built runs when @‑mentioned on an MR, reads the review threads, applies the small mechanical changes reviewers spelled out, commits to the source branch, and reports applied vs skipped — collapsing the review-fix-review loop. Ship: a CI pipeline builds and tests the library and demo, runs security scans, and deploys the demo to GitLab Pages; the result is versioned v3.1.0. My hand in it was the automation itself: the AGENTS.md instructions, the agent/flow configuration, and the pipeline.

Challenges we ran into

Building a useful custom flow requires a lot of trial and error, and endless revisions to the configurations.

On a side note,the workflow after code generation has a lot of moving pieces, and a lot of times there is not a definitive work order. Recording the process for reference and for demo was quite a challenge.

Accomplishments that we're proud of

I finally ship codes that I don't read. But I don't fear it, because I know what I was doing. It's the first time I participated in a hackathon and only worked on agent instructions, pipeline configurations etc. Making an antiquated, underapprciated library work again, within the span of a few hours.

What we learned

These days, AI has done a lot of code generation, but DevOps is still a green field. I've learned that using AI in DevOps is not so hard at all.

What's next for Clean Port

The task that took the longest time was the "review -> fix -> review again" cycle. A lot of times in the past, I would fix my MR according to the reviewer, but they were unavailable for reviewing again. Once they got around to review my fix, I already forgot about my MR altogether. It is an asynchronous, unpredictable process which AI agents can really help improve.

For the next step, I would implement a custom flow that auto-applies review fixes below a threshold.

Built With

Share this project:

Updates

Submission history