Special Anniversary Black Friday: Get 30% off all training and 10% off all services Get a Quote

Logo Yuka

Yuka: A Healthy, Balanced Symfony Upgrade

Yuka, a leader in global health applications, upgraded from Symfony 4 to 7 with the help of SensioLabs to improve features and reduce technical debt. Read Yuka's success story with Symfony.

A phone with the Yuka application in the hands of a consumer at the supermarket

The company: Yuka

Yuka is a mobile app available on iOS and Android that helps consumers understand food and cosmetic labels so they can make the best choices for their health and the environment.

With a single scan, consumers can access a quick, easy-to-understand assessment via a color code ranging from green to red. A detailed information sheet explains the product's rating and the criteria taken into account, such as nutritional values and additives. Yuka is a collaborative application; users are invited to contribute to the database by adding unknown products.

Yuka currently has information on over 5 million products. Yuka is free and available in France and 12 other countries, mainly in Europe and North America. Over 68 million people worldwide use the app, and over 70 products are scanned by Yuka every second. Yuka is a Tech for Good company and a hyper-growth start-up that helps consumers make better choices for their health and the planet.

The issues

Despite the scope of its mission, Yuka has only a small team responsible for managing and improving such a vast project on a daily basis, with so many products and languages available. The technical team consists of five members, including two of the co-founders. They take full responsibility for the application's technical operation.

Since its inception, Yuka has used Symfony to manage its database and back end, along with an EasyAdmin administration interface and a custom API. The mobile application, which is available on iOS and Android, connects directly to the Symfony application.

Until recently, Yuka remained on Symfony version 4 and EasyAdmin 1 without updating. These versions were outdated. This meant that Yuka's application no longer benefited from new Symfony features, and new bugs were not corrected in this version. Using EasyAdmin 1 presented a significant challenge to the upgrade. EasyAdmin had to be updated in coordination with Symfony. Technical debt was increasing, as were security risks. To adhere to Symfony's best practices, upgrading the version quickly became a necessity.

Yuka's technical team was too small to handle a long-term upgrade while continuing to improve the application on a daily basis. For this reason, Yuka needed the support of Symfony experts to work on the upgrade. At the same time, Yuka's technical team continued to develop the mobile application.

The story

Yuka has significantly revamped its development practices by leveraging the power and flexibility of the latest Symfony versions. Initially based on Symfony 4 with EasyAdmin 1, Yuka gradually upgraded its application to versions 5 and 6, and then to version 7, while simultaneously upgrading EasyAdmin to version 4. The version upgrades also involved transitioning from PHP 7.4 to 8.3 and upgrading Doctrine from version 2 to version 3.

Thanks to SensioLabs experts' proven expertise, these upgrades were orchestrated and executed in the correct order and in accordance with best practices.

Switching to the latest versions of Symfony and EasyAdmin required a lot of code refactoring, mainly because of changing standards and the need to adapt EasyAdmin customization.

Alongside the version upgrades, several actions were completed:

  • Implementing a continuous integration (CI) chain that did not exist before.

  • Standardizing practices with PHPStan, Rector, and PHP CS Fixer.

  • Test coverage was reinforced.

To make sure the code of the application is always high-quality and performs well over time, regular code reviews and non-regression tests were put in place.

Last but not least, the upgrade was an opportunity to contribute to open source, in a highly stimulating spirit of sharing with the community. Open source contributions included third-party bundles such as NzoUrlEncryptorBundle, kreait/firebase-bundle, and Algolia/search-bundle, as well as EasyAdminBundle. These improvements have reduced technical debt and added features that are important for upgrading versions.

The results

Yuka will continue to benefit from Symfony 7 innovations for many years to come.

Thanks to version upgrades, there's no need to rewrite all the code to stay current. Yuka has updated its code base to adapt to the new features of Symfony and PHP. With Symfony's backward compatibility logic, the application will soon be upgraded to Symfony 7.4, the Long-Term Support version maintained until the end of 2028.

Technical debt has been reduced.

Thanks to version upgrades and code refactoring, Yuka has considerably reduced its technical debt. For François Martin, Yuka's co-founder and CTO, it was essential "not to get stuck on an aging version."  With Symfony 7, back-end maintenance is simpler, security patches are current, and recruiting developers with experience in recent versions of the framework is easier.

Yuka's performance is now at its best.

Along with the version upgrade, changing the code has enabled many queries to be cached. This reduced the number of Algolia queries needed to search millions of products.

Need to upgrade your Symfony application to a more recent version?

Follow Yuka and update the version of your symfony application to improve your performance and security, and enjoy the latest innovations in Symfony.

This might also interest you

The SensioLabs team celebrating the 20th anniversary of Symfony with balloons

The Story Continues: SensioLabs Celebrates Symfony's 20th Anniversary

Time flies, especially when you're busy shaping the future of development! The SensioLabs team has just reached a milestone with the anniversary of the Symfony framework. We marked the occasion at the office, but the party isn't over yet. The date is already set for an XXL celebration at SymfonyCon Amsterdam 2025, from November 27 to 28.

Read more
3 dog heads

Bring Your Own HTTP client

Break free from rigid dependencies in your PHP SDKs. Learn how to use PSR-7, PSR-17, and PSR-18 standards along with php-http/discovery to allow users to bring their favorite HTTP client, whether it's Guzzle, Symfony HttpClient, or another. A must-read for PHP and Symfony developers.

Read more
Staffbase logo icon

Staffbase: Meet Your New Teammates, Symfony & Storyblok

Staffbase, a global leader in employee communications platforms, partnered with SensioLabs Germany to carry out a full relaunch of its corporate website.

Read more
Blue sign on a building with several Now What? letters

How To Prioritize Messages When Building Asynchronous Applications With Symfony Messenger

Asynchronous processing offers benefits like decoupled processes and faster response times, but managing message priorities can become a challenge. When dealing with tasks ranging from password resets to complex exports, ensuring timely delivery of critical messages is essential. This article explores common asynchronous processing issues and provides solutions using Symfony Messenger, allowing you to optimize your application without extensive refactoring.

Read more
SensioLabs University Courses announcing the new level 3 Master training course now available

Master Symfony: Unlock Expert Skills with Our Training

Take your Symfony proficiency from good to great with the new Level 3 training course at SensioLabs! Master complex topics, optimize performance, and become a Symfony expert.

Read more
Two images: on the left many cars stuck in a traffic jam with the sign "All directions" above, on the right a blue car moving forward alone on the highway with the sign "Service Subscriber" and a Symfony logo above

Symfony Lazy Services with Style: Boost DX using Service Subscribers

Boost your Symfony app's performance and developer experience! Learn how to use Service Subscribers and traits for lazy service loading to reduce eager instantiation, simplify dependencies, and create modular, maintainable code.

Read more
Poster of Guillaume Loulier presentation

A Symfony Training at SensioLabs: Behind The Scenes

What does Symfony training at SensioLabs look like? Find out in this interview with Guillaume Loulier, a passionate developer and trainer, who tells us all about the official Symfony training courses.

Read more
Toy factory production line

Supercharging Symfony Testing with Zenstruck Foundry

Zenstruck Foundry has revolutionized the way we write tests in Symfony. In this post, you’ll learn how expressive factories, isolated test data, and a smoother developer experience helped us streamline our testing workflow and boost productivity.

Read more
Photo speaker meetup AI Symfony

Symfony and AI: the video is now available

What about Symfony and Artificial Intelligence (AI)? This was the theme of the exclusive event organized by SensioLabs in partnership with Codéin on October 3rd. With the added bonus of feedback from a development project combining Symfony and AI. If you missed the event, check out the video now available for free on our Youtube channel.

Read more
2025 a year of celebrations for PHP with windows about API Platform, PHP, AFUP and Symfony

2025: a year of anniversaries for PHP, AFUP, Symfony and API Platform

2025 is going to be a big year for anniversaries. We will be celebrating the 20th anniversary of Symfony, the 30th anniversary of PHP, the 25th anniversary of AFUP and the 10th anniversary of API Platform. For SensioLabs, this is a major milestone that proves the longevity of the technologies in our ecosystem. We are proud to celebrate these anniversaries with the community all year long.

Read more
SymfonyDay Chicago 2025

SymfonyDay Chicago 2025: A Celebration of Community

On March 17th, the Symfony community met in Chicago for SymfonyDay Chicago 2025. The event, held on St. Patrick's Day, was both a celebration of Symfony and a moment to support Ryan Weaver in his fight against cancer. It was more than just a conference — it was a gathering around a valued member of the community.

Read more
type-safety-uuid

Type-Safe Identifiers with Symfony and Doctrine: Using Dedicated ID Classes

Learn how to enhance type safety in Symfony and Doctrine by using dedicated ID classes like BookId and UserId instead of raw UUIDs. This approach prevents identifier mix-ups, improves code clarity, and ensures better integration with Symfony Messenger and repository methods. Explore practical examples and best practices for implementing type-safe identifiers in your Symfony applications.

Read more
Storyblok Logo

SensioLabs Goes Headless: Unleashing Content Flexibility with Storyblok

SensioLabs has embraced the power of Storyblok, a leading headless CMS, to unlock greater content flexibility and scalability. By integrating Storyblok into our workflows, we empower both developers and content creators to deliver seamless, dynamic experiences across multiple platforms.

Read more
Doctrine

Doctrine Expert

Do you have questions about your data models in your Symfony project? Get answers from a SensioLabs Doctrine expert who can help you identify and optimize Doctrine access to your data.

Read more
Image