Try out LVGL Pro - A complete toolkit to build, test, share, and ship UIs efficiently!
LVGL
Release

LVGL v5.0 - Unicode Support, Themes, and Simpler Architecture

LVGL v5.0 introduces Unicode support with UTF-8 decode, style themes, new smartphone-like widgets (keyboard, roller, tabview), and a simplified architecture with object type inheritance.

Gabor Kiss-VamosiGabor Kiss-Vamosi2 min read

Here is the v5.0.0 release with a much simpler architecture. Now the graphics library means only the lvgl repository. Besides the architectural changes, Unicode support, style themes, and new smartphone-like object types are added. To make it easier to get started, a tutorial is released in the lv_examples repository.

Breaking Changes

Note that this is a major release and is not backward compatible. It's highly recommended to read the basics in the Documentation to learn the new features.

Architectural Changes#

  • Integrate misc into lvgl
  • Integrate hal into lvgl
  • Convert Applications into simple examples
  • Rename repository from proj_pc to pc_simulator
  • Create a new independent repository for examples (lv_examples)
  • Create a new independent repository for development boards (lv_boards)
  • Create a new independent repository for drivers (lv_drivers)

System Level Changes#

  • Object type inheritance is hidden. Every object has its own API (except lv_obj_set/get_... functions)
  • Rework lv_style_t to be more versatile
  • Rename (and slightly rework) some functions, defines, and enums to be more descriptive
  • Make styles global variables for less typing
  • Make fonts global variables for less typing and easy user-font adding
  • Join symbol fonts into normal built-in fonts (use normal fonts, and lvgl will find symbol fonts too)
  • Rename lv_dispi_... to lv_indev_...
  • Simplified action functions: lv_res_t action (lv_obj_t * obj) - use lv_indev_act() if required

New Features#

  • Unicode support with UTF-8 decode
  • Themes with predefined styles
  • lv_tabview: new object type to organize content with tabs
  • lv_sw: new object type, switch, turn on/off by tap (a little slider)
  • lv_roller: new object type, a roller to select a value (like on smartphones)
  • lv_kb: new object type, Keyboard
  • lv_btnm: lv_btnm_set_toggle() to toggle last button
  • lv_btnm: rework width control. Now a control byte is used for width, hide, and no long press settings
  • lv_ta: cursor types
  • lv_gauge: rework to make it more like line meter (remove background but add scale lines)
  • Partial border draw in styles
  • Hide anti-aliasing upscale (no x * LV_DOWNSCALE is required)

Bugfixes#

Due to lv_tests, a massive number of bug fixes happened.

About the author

Gabor Kiss-Vamosi
Gabor Kiss-Vamosi

CEO & Creator of LVGL

Founder and lead developer of LVGL, the open-source embedded graphics library used in millions of devices worldwide.

Meet the people behind the blog

Discover the talented writers sharing their knowledge about LVGL

View Authors

Subscribe to our newsletter to not miss any news about LVGL. We will send maximum of 2 mails per month.

LVGL

LVGL is the most popular free and open source embedded graphics library targeting any MCU, MPU and display type to build beautiful UIs.

We also do services like UI design, implementation and consulting.

© 2026 LVGL. All rights reserved.
YouTubeGitHubLinkedIn