Automating User Interface Implementation - AI Tools Review

Automating User Interface Implementation - AI Tools Review

Automating User Interface Implementation - AI Tools Review

While working on one of our projects, we prepared some Figma designs. That got us thinking why not use the front-end implementation phase to test how much AI can help us turn those Figma files into usable, production-ready code (not just a prototype)? That curiosity led us on a little research journey through different tools. We’ll take a closer look at them in the next sections.

Status as of 17.06.2025

Evaluation Criteria

All tools were tested on two Figma projects:

The first one is a form with a simple structure and the second is a whole Dashboard with lots of different sections. Each attached screenshot is the result of just one prompt, though the tools were also tested with several additional ones.

Results will be evaluated in five categories:

  • Code Quality: How well written the code is, whether it's organized and if it can be used in production
  • Figma Fidelity: How much the generated user interface matches Figma
  • Editability/Integration: Whether the code can be easily modified and how easy it is to integrate with the project repository
  • Component Reusability: Whether components are properly detected and reused
  • Speed and User Experience: How efficient and user-friendly the tool is
  • Efficiency Gains: What time savings there are compared to manual coding

Each category gets a maximum of 5 points, so you could get 30 total.

Now let's move on to the actual review.

#1: Anima

Anima is a tool that calls itself a "Vibe-Coding" tool where you can generate applications directly from a Figma project link.

Here are the generated results:

Criterion Score (1-5) Comments
Code Quality 4 Code is readable and app sections are split into components. Common components are reused. There are cases where you could create a separate component, but it's not done.
Figma Fidelity 3.5 Result is really close to the design, if you don't count the connected section
Editability/Integration 3 Code can be easily edited (in browser editor), but it's not easy to integrate with existing codebase (manual copying required). There's an option to create a new GitHub repository from generated code, so it would be better for prototyping.
Component Reusability 5 Yes, common components are detected and reused.
Speed and User Experience 3.5 Code is generated in max 30 seconds. App is rendered and can be used right away in browser. Code can also be edited in browser. However, there's no easy way to sync code with project repository
Efficiency Gains 3.5 You can quickly generate app skeleton, but you'll need to edit it to fit projects, or you'll need more calls to generate sections separately.

Total Score: 22.5/30

#2: Cursor + Figma MCP

Cursor with Figma MCP is a tool that allows direct generation of UI code from Figma projects through the MCP protocol. This lets you automatically create components, layouts, and styles directly in the code editor.

Criterion Score (1-5) Comments
Code Quality 4 Code is clean, but could be more modular. It's split into sections, but within those sections it's often not modular enough. Essential components are installed from UI library.
Figma Fidelity 3.5 For simpler sections, result is identical to design. However, for complex pages (like full dashboard) result is...
Editability/Integration 5 Code is easy to edit and integrate because the tool generates code directly in the codebase. Additional benefit is access to project context, allowing easy control of prompt context to better fit the project.
Component Reusability 4 Existing components are detected and reused. There's a challenge with their default separation, requiring additional prompts.
Speed and User Experience 4.5 Easy to configure and use for technical users, but completely useless for non-technical ones. Very efficient thanks to direct access to codebase. Can download images and place them in appropriate folder without additional setup, but it's not...
Efficiency Gains 5 Enables building UI parts with max few prompts and doesn't require copying anything outside the code editor. This gives time savings because there's no need to copy code from external tool.

Total Score: 26/30

#3: v0

v0 is an AI code generation tool from Vercel. This lets you quickly prototype and implement UI components without manual coding.

Criterion Score (1-5) Comments
Code Quality 3 Code is clean, but not modular, except for imported library components. No separation for dashboard.
Figma Fidelity 2.5 Pretty accurate for simpler projects, but not perfect. Sample image was downloaded incorrectly, causing UI duplication. More complex results differ significantly from designs.
Editability/Integration 3 Code is easy to edit online, but integration is limited. Codebase can be uploaded as zip archive and connected to GitHub branch, though the whole process could be simpler.
Component Reusability 4 UI library components are detected and used correctly, but their style isn't updated to match designs.
Speed and User Experience 4 Tool is easy to use; you provide project links and app is created. Generated code and resulting page can then be reviewed in online editor.
Efficiency Gains 2 Tool won't significantly speed up development because generated code can differ a lot even from simpler projects.

Total Score: 18.5/30

#4: Locofy.ai

Locofy.ai is a tool for converting Figma projects to code that automatically generates responsive user interfaces. It has it's own Figma plugin that helps with the code generation.

Criterion Score (1-5) Comments
Code Quality 4 Code quality is good, but separation could be better. Tool doesn't create proper component tree because nested components are missing. This results in one big file with subcomponents that need manual separation into sections. Additionally, tool doesn't recognize lists of identical components, leading to repeated code (copy-paste).
Figma Fidelity 5 Even complex projects look very close to original Figma design.
Editability/Integration 3.5 Generated code is easy to modify in provided editor. Integration with existing codebase is possible through sending code to GitHub, custom MCP server, or manually, but the whole process still requires significant manual effort.
Component Reusability 3 If Material is used as UI library, components are detected and reused. However, when using other supported UI libraries with Locofy tool or any other library, all components must be created beforehand. These last two scenarios require lots of manual work.
Speed and User Experience 3.5 Tool is user-friendly, and its Figma plugin is easy to use. Code generation is fast, but some manual intervention in plugin may be needed to ensure UI is properly mapped.
Efficiency Gains 2.5 Generated UI is considered best among all tested tools. However, the whole process requires manual work for component mapping and moving to actual project.
Total Score: 21.5/30

#5: Figma Make

Tested on: 26.08.2025

This is a tool from Figma itself that allows code generation from mockups. It greatly simplifies the process

Criterion Score (1-5) Comments
Code Quality 3.5 Code quality is good, automatically installs needed libraries. Code is properly split into components, but file structure isn't properly created. Had issues with images and svg.
Figma Fidelity 3 Handles simpler projects well, but not perfectly. On more complex dashboard page, result is far from similar to design.
Editability/Integration 3 Code can be easily modified in online editor. It can't be easily integrated with project.
Component Reusability 5 Components are detected and reused correctly. Separates entire layout into sections where each section has its own component. In this regard, it's best among all.
Speed and User Experience 5 Tool is really user-friendly because you can click directly on chosen section in Figma project and generate code for it by simply clicking option in context menu.
Efficiency Gains 3 Won't significantly speed up development, but with Publish button it can be quickly shared with everyone. This makes it good for prototyping.

Total Score: 22.5/30

Summary

Most of these tools aren't suitable at the moment to rely on them in any way for commercial projects, because despite the ability to iteratively improve results, it's hard to integrate them well with proper project and code. However, you can use them to create prototypes, this is what these tools are best suited for. The only sensible choice will be combining Cursor and Figma MCP, which isn't strictly a ready-made tool. It has access to the entire project and generates code directly in it and using some options that Cursor itself provides (like rules files) you can create better and better outcomes. Creating this setup will take some time, but after all the speed benefits are gone be significant.

Next post, we’ll be checking out the winner in detail. Stay tuned!

Generating Java classes from WSDL files

Generating Java classes from WSDL files

Ready to discover a way to generate usable Java classes from WSDL files and check how they are structured? That is precisely where this blog post will get you.

Finishing the last line, you’ll be equipped with all the necessary schema files and the ready-to-use service.

Sounds promising? Only if you know what WSDL files are, which will be explained too.

Optimistic locking with Spring Data MongoDB

Optimistic locking with Spring Data MongoDB

When it comes to data access concurrency issues, skewed writes are about as troublesome as they get. Even explaining how they happen and getting your point across can be a challenge.

With MongoDB and Spring, there is an easy and clean solution. I was excited to find and implement it in one of the current projects at Evojam and would love to share it.

Kotlin on the Backend Without Spring?

Kotlin on the Backend Without Spring?

Bored with the constant use of Spring in commercial projects, I decided to investigate the use of an alternative tech stack.

One of the prevalent alternatives is Micronaut. We have already tried it out at Evojam and even successfully implemented it in production in a few microservices.

That made me think — what if we use something even smaller? As we are starting to use Kotlin instead of Java boldly, I couldn't help but consider using Ktor.

See the results of my experiment!

First Months using GitHub Actions

First Months using GitHub Actions

I really wanted to give GitHub Actions a go. Having spent many years using Jenkins setups, the idea of outsourcing CI/CD to GitHub made a lot of sense. Fast forward to a few weeks later, we have a fully functional Continuous Delivery structure. Let me give you a quick tour.

Modern strategy pattern in functional Java

Modern strategy pattern in functional Java

There's a way to think about design patterns that stuck with me. Like Venkat said at the beginning of his 2019 Devoxx talk, they are a lot like grandma's recipes. We all love when our grandmas cook for us. But try to ask for the recipes —the amount of flour or sugar to use is never precise. And when you prepare the food yourself, it comes out completely different.


In our biggest Java project at Evojam right now, we have tweaked the recipe for strategy pattern. We added our personal touch with a pinch of enums and functional syntactic sugar. Now, we’re ready to share the technique with you.

Tackling accidental complexity with Optional in Java

Tackling accidental complexity with Optional in Java

In this article, I'm using an example project to show you how Java 8 Optional can impact the end complexity. It can do so in a positive or negative way as Optional can both simplify and complicate your code. In the long run, the outcome can greatly influence your project. Let's see how it works.

Switching from Java to Kotlin

Switching from Java to Kotlin

Kotlin has been growing in popularity for quite some time now. We decided to introduce it for a commercial project and see how it influences our work.

It's been a month since we made a switch from Java to Kotlin. In this article, we want to share with you our insights and conclusions based on this time.

I invited my fellow developers, so they can put their own perspective on using Kotlin.

Temporal Object Patterns using JPA

Temporal Object Patterns using JPA

Design Patterns are often described as typical solutions to common problems. But what if a solution is not that typical? Can I still call it a Pattern if it is only relevant for relational databases? And does it have to be applicable in most common Java stacks using Spring Boot, Hibernate, and JPA?

Find out how to get started with Temporal Patterns and whether they’re going to work with Spring Boot.

The Secret of Painless WebSocket Tests with Spock Framework

The Secret of Painless WebSocket Tests with Spock Framework

Do you want to start testing applications with WebSocket and Spock, but you’re afraid of running an unstable test? You know what the cinematic Spock says, “Insufficient facts always invite danger”!

Get your facts straight and learn how to avoid common mistakes with our step-by-step guide to WebSocket testing.