Overview#
LVGL v8.2 brings major architectural improvements and powerful new features. This release focuses on extensibility and multimedia support, making it easier to integrate custom rendering engines and work with modern media formats.
Among many fixes and minor updates, these are the most important features in v8.2.0:
- Abstract render layer to make it easier to attach external draw engines
LV_FLAG_OVERFLOW_VISIBLEflag - if enabled, children of an object won't be clipped to the parent's boundary- FFmpeg decoder support to play videos and open a wide variety of image formats
- Font fallback support for seamless multi-script text rendering
- Gradient dithering for smoother gradients on low-color-depth displays
- Monkey test for automated UI stress testing
- cmsis-pack support for ARM development
- Grid navigation (
lv_gridnav) for keyboard/remote control interfaces
This release includes breaking changes. See the full list below before upgrading from v8.1.
The GPU support for NXP microcontrollers is still not updated to the new draw architecture. See issue #3052 for details.
Breaking Changes#
- File system caching: Added caching option for
lv_fs_read(#2979) - Span widget:
lv_spangroup_get_expand_width()adds a parameter (#2968) - Draw architecture: Renderer separation allows replacing the draw engine (db53ea9)
Architectural Changes#
Major structural improvements to support modularity and extensibility:
- Separate SW renderer to allow replacing it (#2803)
- Merge lv_demos into main repository (5414652)
- SDL backend migration to use new backend architecture (#2840)
- Environment support reorganization: Moved RT-Thread (#3025), CMake (773d50f), and Zephyr (4bd1e7e) into
env_supportfolder
New Features#
Rendering and Graphics#
- Abstract draw layer for custom rendering engines (#2803)
- Gradient dithering support for smoother color transitions (#2872)
LV_OBJ_FLAG_OVERFLOW_VISIBLEto disable child clipping (e7ac0e4)- Background draw callback to
draw_ctx(#2935) - SDL rounded images support (#3012)
Multimedia and Fonts#
- FFmpeg video and image decoder for playing videos and loading various image formats (#2805)
- Font fallback support with memory font loading option for FreeType (#2796)
- FreeType bold and italic support (#2824)
- FreeType memory optimization (#2849)
UI Components#
- Menu widget for hierarchical navigation (#2603)
- Grid navigation (
lv_gridnav) for keyboard/remote control (#2911) - Scrollbar padding control for more precise styling (4197b2f)
- Dropdown list persistence on open/close for simpler styling (9d3134b)
Testing and Development#
- Monkey test for automated UI stress testing (#2885)
- cmsis-pack support for ARM development environments (#2993)
- MicroPython examples for external library features (#2762)
Events and Input#
- Event preprocessing and stop bubbling features (#3003)
- Separate scroll chain flags (
LV_OBJ_FLAG_SCROLL_CHAIN_HORandLV_OBJ_FLAG_SCROLL_CHAIN_VER) (#2961) LV_OBJ_FLAG_SCROLL_WITH_ARROWfor arrow key scrolling (70327bd)lv_obj_get_event_user_data()helper function (53ececc)- Missing
lv_indev_delete()function (#2854)
Other Features#
- Symbol redefinition guards to allow custom
LV_SYMBOL_*definitions (#2973) - FPS statistics reset function (#2832)
- Display refresh timer decoupling (85cc84a)
- Rlottie animation control options (#2857)
- QRcode destructor instead of
lv_qrcode_delete()(318edd8) - Chinese README translation (#2919)
Performance Improvements#
Bug Fixes#
This release includes over 100 bug fixes across rendering, widgets, memory management, and platform support. Key fixes include:
Rendering#
- Fixed gradient alignment and dithering issues (#3036, #3034)
- Fixed canvas rendering to force software draw (#3045)
- Fixed indexed image drawing (5a0dbcc)
- Fixed background image opacity and clip corner handling (d51aea4)
- Fixed border drawing crash in special cases (075831a)
Widgets#
- Fixed roller text clipping (5709528)
- Fixed dropdown crash when empty and pressed (2392f58)
- Fixed label dot rendering when height > 1 font line (4d61f38)
- Fixed switch knob size calculation (5ec532d)
- Fixed bar and slider shadow drawing on short indicators (364ca3c)
- Fixed arc knob invalidation (345f688)
- Fixed btnmatrix selected button persistence (d47cd1d)
Memory Management#
- Fixed memory leaks in table and chart widgets (8d52de1)
- Fixed snapshot memory leak (#2970)
- Fixed arc memory leak on full-circle drawing (#2869)
- Fixed draw context memory overflow crash (#2882)
Platform Support#
- Fixed various ESP32 issues (#3007)
- Fixed RT-Thread structure and logging (#2912, #2811)
- Fixed Kconfig defaults and configuration (#3050, #2989)
- Fixed CMake build system (#2753)
- Fixed Makefile compilation errors (#2944)
- Fixed SDL build with make (43729d1)
Core System#
- Fixed crash on
lv_deinit/lv_initsequence (#2910) - Fixed object deletion in events (9810920)
- Fixed event send core crash in special cases (#2807)
- Fixed refresh crash with
full_refresh = 1(#2999) - Fixed parent scroll update in
lv_obj_set_parent()(#2965) - Fixed
LV_SIZE_CONTENTcalculation with non-LEFT/TOP alignment (9c67642)
Documentation#
- Updated demo information to reflect new layout (#3029)
- Added Tasmota and Berry introduction (#2874)
- Added gesture description to input device docs (2719862)
- Added const styles description (28ffae8)
- Added FAQ section: "LVGL doesn't start, nothing is drawn on the display" (0388d92)
- Updated porting guide with more project integration details (6ce7348)
- Updated filesystem interface description (285e6b3)
- Multiple spelling and formatting fixes across documentation
Testing and CI#
- Added bar unit tests (#2845)
- Added switch unit tests (#2794)
- Added widget and stress demo tests (3bd6ad8)
- Added gradient style tests (da8f345)
- Initial support for cross-architecture tests (7008770)
- Added code formatting workflow (a2b555e)
- Added Arduino linter action (f79b00c)
- Switched to codecov v2 (6b84155)
Get Started#
Download LVGL v8.2.0 from GitHub or update your existing installation. Check the documentation for migration details if you're upgrading from v8.1.
