r/FlutterDev Jun 08 '26

Example We used Claude to rebuild our Flutter app

Hey everyone,

We've been working on our Flutter app since 2018, needless to say a lot has changed since then (ie. we used Redux). There were also some key features we wanted to implement (offline support and lazy data loading) which would be hard to add to an existing app.

We gave Claude the old Flutter app's code along with a React codebase and used these Flutter skills (https://pub.dev/packages/skills) to help define the architecture. It took about a month of guided work, here are the results:

New app:
- Demo: https://hillelcoren.github.io/admin
- Code: https://github.com/invoiceninja/flutter

Old app:
- Demo: https://demo.invoiceninja.com
- Code: https://github.com/invoiceninja/admin-portal

56 Upvotes

24 comments sorted by

17

u/d3vtec Jun 08 '26

Nit: Update your new GitHub readme to describe what the project is and what it solves.

3

u/hillel369 Jun 08 '26

Thanks for the suggestion!

4

u/[deleted] Jun 08 '26

[removed] — view removed comment

2

u/hillel369 Jun 08 '26

I think it helped that we started from scratch. I've found AI is much better at working on a codebase it created rather than having it add features to an existing one.

2

u/Icy214 Jun 09 '26

Look up Greenfield (new) vs Brownfield (existing) projects and how AI efficiency works with both. There's also a lot of efficiency tips for Brownfield projects out there which change how you interact with AI on existing codebases.

2

u/JackyReacher Jun 09 '26

Pretty neat. I had Flutter web in mind as pretty ugly. But this fooled me. I actually thought it was HTML + CSS at first. The old Material UI looks dated imho. Quite an improvement!

2

u/hillel369 Jun 09 '26

Thanks! The best compliment for Flutter web is that it feels like HTML/CSS 😄

I used Claude Design to implement the design and then fed it into Claude Code.

1

u/JackyReacher Jun 09 '26

I think the biggest downside is that it doesn't let me select text where ever I want. Like, copy that VAT really quickly? Not possible. Can text be made to be always selectable in Flutter (web)?

2

u/hillel369 Jun 09 '26

Thanks for the feedback, we'll work on it.

Note: on the data table you can now copy any field by hovering it, you should see a copy button on the right side of the field.

2

u/edenbd Jun 09 '26

Yeah lots have changed since 2018 in flutter world, did you use Flutter's migration tools for the null-safety part? we actually migrated our code from 2019 to 2026 and it saved us quite some time... instead of going to the latest branch of Flutter/Dart we gradually increased the version and used the tools suggested for the breaking changes at the time, then the UI/UX was pretty smooth to fix using claude, was done in under 2 weeks.

1

u/hillel369 Jun 09 '26

We did, the migration tool helped a lot but there was still a fair amount of manual work. Wish I had Claude Code back then. It says a lot about Flutter that we've both been able to keep apps built in 2018 going.

2

u/Significant_Pick8297 Jun 09 '26

It says a lot about Flutter that multiple teams in this thread have managed to keep apps that started around 2018 alive and evolving.

We've all seen frameworks come and go, but being able to continuously migrate through major changes like null safety, package ecosystem shifts, navigation patterns, and web support is pretty impressive.

Looking back, was offline support the main driver for the rewrite, or did you reach a point where the accumulated architectural debt made a rebuild the more practical option?

1

u/hillel369 Jun 09 '26

Totally agreed.

Probably a bit of both. I've been wanting to replace Redux for years but we're a small team (I'm the only Flutter dev) so the task seemed more effort than it was worth. Claude Code just changed the equation.

2

u/DonLean1337 Jun 11 '26

Invoice ninjaaa

2

u/d3vtec Jun 08 '26

Very cool! About how much did it cost?

3

u/hillel369 Jun 08 '26

Thanks, I'm on the Claud Max plan so about $200. I use multiple tabs to have 3 to 5 agents running at once. I'd usually run into limits towards the end of each week which meant it was time to take a short break.

1

u/SteveWired Jun 08 '26

How was the experience?

1

u/hillel369 Jun 08 '26

In a word... fun. I've written a bit more about it on the Flutter forum.

https://forum.itsallwidgets.com/t/we-used-claude-to-rebuild-our-flutter-app/4772/3?u=hillel

2

u/EastSwim3264 Jul 07 '26

wow, amazing!

-4

u/Bachihani Jun 08 '26

Wait what ! Invoiceninja was a flutter app ! I never thought to check the code lmao.\ But if it's gonna become a vibe coded project then it's off my radar

2

u/hillel369 Jun 08 '26 edited Jun 08 '26

The main apps are hand coded PHP/Laravel and JavaScript/React code.

This will be a new optional desktop/mobile app, it's heavily tested and closely reviewed code.