Open-source project
openfoodfacts/smooth-app avatar
openfoodfacts/smooth-app

Smooth App for Open Food Facts: Flutter Client Review

🤳🥫 The new Open Food Facts mobile application for Android and iOS, crafted with Flutter and Dart

1,437 stars491 forksDartApache-2.0

At a glance

What is it?
Smooth App is the Open Food Facts Flutter client for Android and iPhone, built around product scanning, food criteria, and collaborative product information. Its repository documents mobile distribution, developer setup, and a Flutter-based architecture, while desktop support remains development-only.
Who is it for?
Adopt Smooth App when a Flutter client for Open Food Facts product scanning and food criteria is required, especially for Android or iPhone. Do not treat the desktop targets as production distribution channels.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Dart, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Smooth App is built to solve

Smooth App is Open Food Facts' mobile application for Android and iPhone, written with Flutter and Dart. It targets people who want to inspect packaged foods while shopping or comparing products. The repository description presents it as a rebuild of Open Food Facts' collaborative scanning application, with an emphasis on a user experience designed for a broad audience rather than only contributors familiar with the database.

The app centers on scanning a product and receiving a status based on the user's selected criteria. Green means the product matches the criteria, red means the repository identifies a problem, and gray means the app is asking the user to help by photographing the product. Available criteria include Eco-Score, additives and ultra-processed foods, salt, allergens, and Nutri-Score. This is a decision-support model rather than a replacement for professional nutrition advice.

The app also provides a product page built from food information collected collaboratively by Open Food Facts and from other sources of knowledge. Smooth App is therefore both a consumer-facing scanner and a front end for the Open Food Facts data model. Its default branch is `develop`, which is significant for contributors who want to follow the development line rather than only the stable store builds.

Flutter architecture and API boundaries

The repository documents Smooth App as a Flutter application and states that it is developed in parallel with `openfoodfacts-dart`, a plugin that provides a high-level interface to the Open Food Facts API. The project also uses `openfoodfacts_flutter_lints` for project-specific linting. Based on that structure, the mobile interface and API access are separate concerns. A product interaction should be implemented in the plugin when it requires a new API operation, allowing other developers to reuse that operation.

That boundary has practical value for maintenance. The app can change its screens and navigation without making every API request a concern of the widget layer. It also gives other Flutter projects a route to the same API behavior. The trade-off is that developers need to understand both the app package and the plugin contract. A feature that appears local in the mobile application may actually require a change in `openfoodfacts-dart` before it can become reusable.

The repository supports Linux, macOS, and Windows, but explicitly limits those platforms to development. That means a successful desktop build should be treated as a development target, not as a promise of a supported desktop product. The documented mobile entrypoints are separate Dart files, which also means platform-specific application setup is part of the runtime configuration rather than a single platform-neutral launch path.

Installing Flutter and running the first build

The README directs developers to install Flutter and all of its requirements. It currently specifies Flutter `3.44.8`, and it recommends FVM when a project-local Flutter version is useful. The following commands install and select that exact version. After they complete, the version command should report the selected Flutter toolchain.

bash
fvm install 3.44.8
fvm use 3.44.8
fvm flutter --version

The README says to run the application from `packages/smooth_app`. Fetch Dart dependencies before launching it:

bash
flutter pub get .

For Android, use the Google Play entrypoint shown below. The command starts the Flutter application with that platform-specific Dart entrypoint.

bash
flutter run -t lib/entrypoints/android/main_google_play.dart

For iOS or macOS, the documented entrypoint differs:

bash
flutter run -t lib/entrypoints/ios/main_ios.dart

The repository also contains predefined run configurations for Android Studio and Visual Studio Code. The README links the official Flutter installation guide and the official FVM installation guide, so those are the documented starting points for a new machine. The available documentation does not provide a complete device-permission checklist, signing procedure, or production build tutorial. A contributor should expect to resolve those parts through the normal Flutter and app-store tooling.

A first real use: scan and compare products

The first useful flow is the flow described by the README: point the application at a food product, review the product information, and compare products according to selected criteria. The repository specifically describes scanning and comparing three tomato sauce brands in about 15 seconds. That example is a product workflow, not a performance benchmark.

A user can choose criteria before or during product evaluation. The documented choices span environmental information and health-related information, including Eco-Score, additives, ultra-processed foods, salt, allergens, and Nutri-Score. After scanning, the green, red, or gray state gives the result a visible interpretation. A gray state is not a pass or fail. It indicates that more product photography may be needed, so the app can send the user back into the collaborative data-collection process.

The product page is intended to make the underlying food record easier to understand. This matters because Open Food Facts data is contributed by many people and may be incomplete for a given product. Smooth App does not document a rule for resolving contradictory fields, missing fields, or disputed product records. Users who need a formally guaranteed nutritional record should therefore check the resulting product data and its provenance rather than treating the colored scan state as a complete guarantee.

Distribution channels and development scope

Smooth App has several documented distribution paths for the stable application. Android builds are available through Google Play, F-Droid, and the Amazon App Store. The repository also links stable iPhone and iPad applications through the App Store. The Google Play listing uses the package identifier `org.openfoodfacts.scanner`, while the F-Droid package is named `openfoodfacts.github.scrachx.openfood`.

The repository distinguishes stable, beta, and testing releases. Google Play has a beta version that users can join freely. Internal testing builds are also linked for Android and through TestFlight for iPhone and iPad. The README says internal testing can provide results from pull requests sooner than a public release. That arrangement is useful for contributors, but it also means a build's behavior should be identified by its channel rather than assumed to represent the stable store version.

The release history lists `v4.24.0` on 2026-08-24, followed by `v4.23.0` on 2026-01-06 and `v4.22.3` on 2025-11-13. The README's deployment notes refer to Version 4.22.0 and 4.22.3 on the named stores, so repository release history and store deployment notes should be read as separate records. The repository is not archived, and its last push was on 2026-10-14.

Limitations and the development-only desktop boundary

The clearest limitation is platform scope. Linux, macOS, and Windows are supported for development only. A team that needs a publicly distributed desktop client cannot infer production readiness from the existence of Flutter desktop targets. The README does not document desktop store distribution, desktop-specific feature parity, or a supported desktop release process.

There is also a documentation gap around source builds. The setup instructions cover Flutter installation, dependency resolution, and mobile run entrypoints, but the visible documentation does not explain app signing, store metadata submission, platform permissions, or how to reproduce a production artifact from source. The project links release notes, `RELEASE.md`, and store channels, but the setup documentation does not specify the complete release procedure. Those omissions matter for teams evaluating the repository as an application foundation rather than merely a developer checkout.

For developers who need direct API access without adopting the full mobile interface, `openfoodfacts-dart` is the documented alternative layer. The difference is architectural: Smooth App supplies the product-oriented Flutter application, while the plugin supplies a high-level interface to the Open Food Facts API for reuse. The repository does not document a separate native Android or iOS alternative client, so it does not support a broader feature comparison.

Licensing, releases, and upgrade considerations

The repository identifies its license as `Apache-2.0`. That permits use and modification under the license's conditions, but this review does not interpret the legal terms or replace the repository's `LICENSE` and `CODE_OF_CONDUCT`. Contributors should read those files before redistributing a modified application or distributing its code as part of another product.

Release work is visible in the repository's `CHANGELOG.md`, `RELEASE.md`, `release-please-config.json`, and fastlane directory. The README links the GitHub releases page as the current release source. The version history shows a recent `v4.24.0` release, while the deployment notes in the README name store versions that differ from that release entry. An adopter should therefore verify both the source version and the artifact version before filing an issue.

Upgrades can involve more than the Flutter application package. New API interactions are expected to move into `openfoodfacts-dart`, and UI rules come from `openfoodfacts_flutter_lints`. Flutter `3.44.8` is the documented toolchain version, and FVM makes that selection explicit. This setup gives contributors a reproducible starting point, but it also means an upgrade should be checked against app code, the plugin, lint rules, and each store channel.

Editorial conclusion

Adopt Smooth App when a Flutter client for Open Food Facts product scanning and food criteria is required, especially for Android or iPhone. Do not treat the desktop targets as production distribution channels. Verify the API coverage in `openfoodfacts-dart`, the platform permissions required for scanning, and the release channel you intend to use before committing to it.

Frequently asked questions

How do I install and run Smooth App locally?

Install Flutter and FVM, then select Flutter `3.44.8`. From `packages/smooth_app`, run `flutter pub get .` and use the documented Android or iOS entrypoint with `flutter run`.

Does Smooth App support Linux, macOS, and Windows?

The repository lists Linux, macOS, and Windows as supported desktop platforms, but states that they are supported only for development. It does not present them as public production distribution channels.

What does Smooth App do when a product has incomplete information?

The documented scan states include gray, which means the app is asking the user to help by photographing the product. The gray state is therefore an invitation to contribute data, not a confirmed pass or failure.

Official sources

  1. License: Apache-2.0
  2. openfoodfacts/smooth-app on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/openfoodfacts-smooth-app.svg)](https://hysenlabs.com/projects/openfoodfacts-smooth-app)

Was this useful?