# Basic Library Changelog

The Basic Library of the Mini Program provides the core functionalities within the framework, including system
interfaces such as Page, App, Component, Behavior, the ty object; commonly used methods like getApp() and
getCurrentPages(); as well as fundamental components; event system, network requests, data caching, and routing
capabilities.

## Basic Library Updates

The Basic Library updates introduce new capabilities and features while maintaining backward compatibility, and **the
client always uses the latest version of the Basic Library**.

The Basic Library version follows the `major.minor.patch` format. Once a version is released, the client app
automatically updates to the latest version on the next cold startup or by manually clearing the cache and restarting
the app.

Developers can specify the minimum runnable version in the `baseversion` field of the project.tuya.json file, allowing
the client app to load compatible mini program applications based on the execution environment.

The Tuya MiniApp IDE allows developers to choose from the latest 20 versions of the Basic Library. Developers can select
a specific version in the Tuya MiniApp IDE to review the capabilities and features of different versions.

### 2.30.21 (2026-06-09)

**Features**

- **core-widget:** Implement node querying via createSelectorQuery

### 2.30.20 (2026-05-29)

**Features**

- **app-panel:** Merge Lianyun activation into checkActivation
- **map:** Add maptap click event

### 2.30.19 (2026-05-22)

**Bug Fixes**

- **hide:** rjs://@tuya-miniapp/rjs- whitelist prefix error

### 2.30.18 (2026-05-21)

**Bug Fixes**

- **hide:** Fix potential multiple invocations of ty.getAppInfo in ty.reportEevnt

**Reverts**

- Revert "fix(core-renderer): fix assignment of newIndex in keyed diff"
- Revert "test(core-renderer): add test cases for the patch branch and improve coverage"

### 2.30.17 (2026-05-06)

**Features**

- Add ad-banner as a cross-layer component
- Add rjs-markmap plugin
- Support iPad screen modes full|contain

**Bug Fixes**

- **core-renderer:** Fix assignment of newIndex in keyed diff
- **hide:** Fix setTimeout leak caused by the custom component attached lifecycle not triggering

### 2.30.16 (2026-04-15)

**Features**

- Add conditional styles for the root node in accessibility environments
- **hide:** Update the value of USER_DATA_PATH to be obtained from the client

**Bug Fixes**

- Fix incorrect textarea height when using auto-height + min-height
- **app-panel:** improve BLE status synchronization on page visibility changes
- **hide:** Handle deviceInfo *Height fields being strings in the IDE environment
- **hide:** Fix webviewId compatibility issue during appLaunch
- **ota:** update PID product check to handle array of results

### 2.30.15 (2026-03-17)

**Features**

- Add accessibility support for the component library
- Add openSound method to createMediaPlayerContext
- **hide:** Add the role attribute field for accessibility-simulated tap events

**Bug Fixes**

- **hide:** Fix issue where aria-disabled type is not a string
- **hide:** Fix unexpected click event triggering

### 2.30.14 (2026-03-12)

**Features**

- Add I18n.p multilingual method (returns without replacing placeholders)
- Add setDataSource, startLocalMediaPlay, and stopLocalMediaPlay methods to createMediaPlayerContext
- **hide:** Add ipc-related APIs
- **hide:** Fetch CDN domain configuration from the cloud

**Bug Fixes**

- Fix issue where behaviors were overwritten when referenced
- **hide:** Avoid appMore repeatedly opening the device page
- **hide:** Fix incorrect navbarHeight CSS environment variable

**Performance Improvements**

- Cache i18n objects for feature pages

### 2.30.10 (2026-01-27)

**Bug Fixes**

- **video:** Fix intermittent playback issue for the video tag on Android/HarmonyOS

**Reverts**

- Revert "chore(hide): change the default scrollbar style of the scroll-view component"

### 2.30.9 (2026-01-23)

**Bug Fixes**

- Fix the HarmonyOS default parameter issue for vibrateShort haptic interaction

### 2.30.8 (2026-01-19)

**Features**

- Add ty.enablePageScroll API to control page scrolling
- Support App custom font settings
- Enable the motion whitelist in rjs
- Add haptic feedback to scroll-view/slide interactions
- **scroll-view:** Add extra offset via scroll-into-view-offset
- **web-view:** Add inject-ttt attribute to support injecting kit capabilities

**Bug Fixes**

- Fix execution order issue when merging behavior properties
- Fix issue where image bind:onload fires twice
- **hide:** Fix issue where SjsScheduler did not catch exceptions

### 2.30.5 (2025-12-16)

**Bug Fixes**

- Fix event communication issues for HarmonyOS native components
- Fix page bounce issue when the keyboard is dismissed

### 2.30.4 (2025-12-12)

**Features**

- **hide:** Android supports ttt JSON data communication
- Add showScaleView scaling view to the map component
- Add scroll bounce property to scroll-view

**Bug Fixes**

- **hide:** Additionally fix the issue on Android where dismissing the keyboard does not rebound when disableScorll is enabled
- **hide:** Detect DOM rendering completion with checkDomReady
- **panel-ota:** Fix issue where shared devices would check device OTA

### 2.30.3 (2025-11-27)

**Features**

- Add animation begin and finish events, and adjust related animation logic
- Add onCache API for caching capability

**Bug Fixes**

- Fix issue where dismissing the keyboard does not rebound when disablescroll is true
- The widget environment does not support JSON data format

### 2.30.2 (2025-11-13)

**Features**

- Update the Western Europe region name in image processing
- When the input component is empty, tapping delete triggers the bind:input event

**Bug Fixes**

- Fix input number deletion issue on certain Android devices

### 2.30.1 (2025-11-10)

**Features**

- Add the svg-render component
- **hide:** Add image-cropping parameters to SJS cdn.url

**Bug Fixes**

- Fix gesture back issue in page-container
- Fix instance order issue in cross-layer component communication
- **hide:** Delay fetching the value of eventIdentifier
- **hide:** getWindow not defined

### 2.29.19 (2025-10-27)

**Bug Fixes**

- Fix rem units changing in landscape orientation

### 2.29.18 (2025-10-20)

**Features**

- On Android, use isEagerInit to enable preload initialization

**Bug Fixes**

- Fix the premature injection-complete check on feature pages

### 2.29.17 (2025-10-13)

**Features**

- Add startPlayBack and stopPlayBack to IpcContext
- Add the mapType parameter to the map component
- **scroll-view:** Support applying padding styles to scroll containers

**Bug Fixes**

- Avoid duplicate injection on Android
- Fix iOS preload state initialization when entering in landscape
- **hide:** Fix opacity animation not taking effect

### 2.29.16 (2025-09-22)

**Bug Fixes**

- Fix view hover-class not taking effect under style isolation
- Change movableview scalemin minimum to 0.1
- **issue:** Fix cases where style.parentNode may be missing

### 2.29.15 (2025-09-17)

**Bug Fixes**

- Fix Korean input issue for the input component on iOS
- **hide:** Fix the issue introduced when adding the miniapp id parameter to the getCustomConfig API
- **hide:** Fix iOS experience rating association issue
- **hide:** Fix missing parameters in the onAppShow callback

### 2.29.14 (2025-09-10)

**Features**

- **hide:** Pre-inject TTT functions on iOS only

**Bug Fixes**

- Fix computed element layout occupancy in the textarea component
- **hide:** Fix appInfo being lost during logic-layer preloading
- **hide:** Remove tracking for getLaunchOptionsSync

### 2.29.13 (2025-09-04)

**Bug Fixes**

- **panel:** Handle the missing second parameter of alwaysSingleFaultToast

### 2.29.12 (2025-09-03)

**Bug Fixes**

- Roll back the delayed registration mechanism of the event queue

### 2.29.11 (2025-09-02)

**Bug Fixes**

- Fix iOS compatibility issues with the downloadFile API

### 2.29.9 (2025-08-28)

**Features**

- Add a fault list display configuration option
- Add the ty.reportError API for error reporting
- Change scollr-view hidescorllbar initial value
- Add a readFromSandbox method to createMediaPlayerContext
- Add the disableAnimation parameter to the map component

**Bug Fixes**

- Fix the input caret not moving to the end on focus
- Fix event bubbling due to unintercepted click events
- Fix QuerySelector exceptions on second render
- **hide:** Fix incorrect appSchema links
- Enable scrollbar style switching for scroll-view

### 2.29.8 (2025-08-22)

**Bug Fixes**

- Fix abnormal cached data with the ty.getAppScheme API

### 2.29.7 (2025-08-21)

**Bug Fixes**

- Roll back the scrollbar handling for scroll-view

### 2.29.6 (2025-08-07)

**Bug Fixes**

- Fix failures in the second OTA check
- Add fallback handling for getNetworkType timeouts on Android
- Fix the scroll-view scrollbar not being shown
- **hide:** Temporarily disable behavior tracking, which may affect perception data

### 2.29.5 (2025-07-30)

**Features**

- **hide:** Android: add onPageScale event for floating-window mode

**Bug Fixes**

- Compatibility fixes for Android onNetworkStatusChange and App miniapp caching issues
- Add alternative parameters to the localDeviceEntry method
- format

### 2.29.4 (2025-07-23)

**Features**

- Add support for HarmonyOS
- **hide:** Fix panel Bluetooth permission and popup issues
- Add the fadeDuration fade-in feature to the Image component
- Add playback speed control to ipc-context

**Bug Fixes**

- Fix the lack of support for iframe tag communication
- Fix issues in the core-js injection stage during build
- Fix the maximum child-node depth filtering issue
- **hide:** Fix [TrackEvent] display issue in the IDE
- **hide:** Fix inconsistent rendering state under rapid operations

### 2.29.1 (2025-07-01)

**Features**

- Support preload startup mode in the logic layer
- Adjust and add gyro vacuum APIs
- Add API `ty.getCustomConfig` to get custom configuration
- Support on-demand injection mode `lazyCodeLoading`
- **hide:** Optimize vConsole log display
- Add this.removeSnapshot to Page instances for manual removal

**Bug Fixes**

- Fix abnormal Function type detection on iOS 13

**Bug Fixes**

- Fix ipc-player not laying out correctly during resize

### 2.28.5 (2025-06-05)

**Bug Fixes**

- Fix Promise invocation exceptions with the ty.getDeviceInfo API

### 2.28.4 (2025-05-26)

**Features**

- Add a native media-player component
- Optimize skeleton snapshot removal animation mode
- **hide:** Upgrade ray-core to 0.5.0-beta.7

**Bug Fixes**

- Fix exceptions when ComponentDescriprot.addClass adds classes under style isolation
- Fix the safe-area calculation for experience ratings
- **hide:** Fix compatibility when retrieving page configuration

### 2.28.3 (2025-05-20)

**Bug Fixes**

- Fix incorrect debugLangOn detection

### 2.28.2 (2025-05-19)

**Features**

- Add setConfig method to IpcPlayerContext

**Bug Fixes**

- Fix type errors in environment variables for compatibility mode

**Bug Fixes**

- Adjust the snapshot removal phase
- Fix issue where the thresholds option of ty.createIntersectionObserver did not take effect
- **hide:** Fix line wrapping issue in OTA info

### 2.27.5 (2025-05-10)

**Bug Fixes**

- **core:** Fix issue where the regex used by change-case fails on low-end devices

### 2.27.4 (2025-05-06)

**Features**

- Cache launchOptions API data
- Add ty.onAppPause and ty.onAppResume events
- **hide:** Prefer opening the Help Center via Miniapp & fix the issue where default parameters did not pass deviceId
- Add config to ipc-player

**Bug Fixes**

- FMP calculation method for experience scoring
- Fix custom component style specificity issue
- Fix issue toggling hidden when using widthFix on the image tag
- Change update to a property in ipc-player
- Fix issue where the RayEngine export object was incorrect

### 2.27.3 (2025-04-21)

**Features**

- Base library includes the ray rendering engine
- Support showing a skeleton screen snapshot before the first render
- **hide:** Add an API for robot vacuums to rename a map
- **hide:** Make the Bluetooth offline popup’s show/hide configurable

**Bug Fixes**

- Fix abnormal relations calculation
- **hide:** Remove debug instrumentation
- **hide:** Issues with IPC device class APIs
- Fix issue where ty.pageScrollTop does not support scroll-view scrolling

### 2.27.1 (2025-04-07)

**Features**

- Support Miniapp subpackage mode
- **hide:** Add robot vacuum APIs in update
- **ipc-player:** Add createAICameraDevice API
- vConsole supports command-line input

**Bug Fixes**

- Fix hit area positioning issues in cover-view
- Fix missing error message when the nativeDisabled parameter is invalid
- Fix issues caused by the Promise event queue on iOS 13 and 14
- **hide:** Adjust time instrumentation data statistics
- **hide:** Inject fallback styles at the end
- **hide:** Fix issue retrieving pageConfig configuration

**Bug Fixes**

- Fix issue where extClass was rendered unexpectedly
- Fix externalClasses passthrough & update issues
- Fix issue where parent component externalClasses could not override child elements
- **hide:** Fix issue where internal pages in the default startup feature page could not open
- Fix path matching issue for rjs worker registration

### 2.26.7 (2025-03-06)

**Features**

- Add event handlers such as tap and longpress to rich-text

**Bug Fixes**

- Fix issue where `:host` styles were lost when switching to landscape

### 2.26.6 (2025-02-25)

**Features**

- **panel:** Add methods to remove faultToast and to close widget
- Add the video tag to widget
- widget supports on-device debugging 2.0

**Bug Fixes**

- Fix issue where some API proxies did not throw exceptions

### 2.26.5 (2025-02-17)

**Bug Fixes**

- Fix issue where the first scroll of scroll-view behaves abnormally on iOS

### 2.26.1 (2025-01-20)

**Features**

- Add status bar CSS variables

**Features**

- Add a synchronous return for getRegionCode
- Call connect and disconnect methods when mesh/beacon devices start and stop

**Features**

- Add Miniapp launch path to multilingual debugging
- Add the web-iframe tag in widget
- Add ty.energy API for new energy
- Add setPTZControllable method to ipc-player

**Bug Fixes**

- Fix issue where intoView is inaccurate after absolute positioning in scroll-view

**Bug Fixes**

- Fix compatibility issue with the getPresetData feature in the IDE environment
- Remove background click highlight in Android mode
- Fix environment detection issue in ty.canIUse

**Bug Fixes**

- Fix scenarios for externalClasses passthrough

### 2.24.1 (2024-12-13)

**Features**

- Add new IPC Player API capabilities
- **canvas:** Support bind:resize event handling
- Support 0 size in widget.size

**Features**

- Add preview support for the studio Miniapp
- Add Gateway, Health, and canIUse APIs
- Support background playback of media in webview
- Support displaying view-layer logs in real-device debugging mode
- ty.snapshot screen capture feature

**Bug Fixes**

- Fix iOS compatibility for the feature page mode that prioritizes entryCode

**Bug Fixes**

- Fix compatibility issues with intersectionObserver on scroll-view
- Fix issue where vnode node checks failed on empty values

**Bug Fixes**

- Fix issue where atop was not compatible with false, 0, and ""

### 2.22.1 (2024-10-22)

**Features**

- Support specifying darkmode
- Support retrieving debug code in multiple languages

**Bug Fixes**

- Fix the rjs permission exception in lazy-loading mode

**Bug Fixes**

- Fix textarea height being 0 during animations
- Fix the issue with cross-layer components invoking the current page
- Fix popup component not preventing body scroll

### 2.21.10 (2024-09-18)

**Bug Fixes**

- Fix video fullscreen operation not taking effect
- **core:** Fix tap event not exposing event.touches in the event system

### 2.21.9 (2024-09-10)

**Bug Fixes**

- Fix built-in components unable to call sjs functions

### 2.21.8 (2024-09-06)

**Features**

- Set the feature page's multilingual priority lower than the host

**Bug Fixes**

- Adjust the implementation of onHide
- Fix the issue where the promise error object value could not be determined
- Fix ready event not firing
- Optimize page switch event handling

### 2.21.4 (2024-08-22)

**Bug Fixes**

- Fix repeated theme injection override issue on iOS
- Fix widget config overwrite-on-write issue
- Fix the issue where unmatched feature pages did not throw an exception

### 2.21.3 (2024-08-15)

**Bug Fixes**

- Fix the issue where navigateTo in the simulator could navigate to tabBar pages
- Fix pageId type issue in IDE real-device debugging
- Fix compatibility of switchTab calls with query
- Fix two-finger simultaneous tap triggering longtap

### 2.21.1 (2024-08-13)

**Features**

- Extend the independent API package; add laser robot vacuum–related APIs
- Implement support for rjs async syntax calls
- View-layer analytics instrumentation
- Add ipc API
- Add atop API for native routing, etc.
- Add video getCurrentTime method
- Add type definitions to ipc player
- Add getVideoById API to RJS

**Bug Fixes**

- Fix redirectTo page conflicts in preloading mode

**Bug Fixes**

- Fix radio slide component issues
- Fix inability to catch setTimeout errors
- Record page state after deletion
- Incorrect positioning in ty.pageScrollTo

### 2.20.1 (2024-06-26)

**Features**

- **internal:** connectSocket API

**Bug Fixes**

- **video:** x.webkitEnterFullscreen compatibility error issue

**Bug Fixes**

- **core:** Fix consistency of landscape/portrait calculation at initialization
- Style exceptions thrown by swiper component elements

**Reverts**

- ci: support building in on-demand loading mode

### 2.19.2 (2024-06-04)

**Bug Fixes**

- Provide a fallback for visibilitychange compatibility on Android devices
- Fix selectComponent cache not updating

### 2.19.1 (2024-05-28)

**Bug Fixes**

- Fix the issue of optional margins values in intersectionObserver

**Bug Fixes**

- **core:** Fix jsx-runtime handling of empty objects
- **core:** Fix duplicate keys when running ray templates
- **core:** Fix scroll-view child nodes with catch:touchmove not preventing scrolling
- **core:** Fix the query scope within the selectComponent component
- **core:** Fix abnormal error messages for sjs callMethod

### 2.18.5 (2024-05-13)

**Bug Fixes**

- Fix widget function object sharing issue

### 2.18.4 (2024-05-13)

**Features**

- Add reportDevelopLog for reporting developer logs

**Bug Fixes**

- Resolve the end-of-scroll animation UX issue in picker-view
- Fix shadow appearing when the video control is hidden
- Issue with passing through extData in the requestCloud function

### 2.18.2 (2024-04-11)

**Features**

- Add cloud capability API and native device routing

**Features**

- Add a communication mode between RJS and SJS
- Add detection of requirePlugin association with usingPlugins
- Support parsing fields of nested objects in launchOptions

**Bug Fixes**

- Fix unhandled exceptions in TTT functions

### 2.17.3 (2024-03-28)

**Features**

- Add requirePlugin for fetching plugin methods
- Add the following native routing navigation methods
- Add isConnected and isOnPreview methods to ipc-player

**Bug Fixes**

- Fix lookup issues caused by using url as the key in eventChannel
- **core:** Fix the movable-view component animation setting not taking effect

### 2.17.2 (2024-03-20)

**Features**

- Implement a mock Promise in the logic layer to capture unhandledRejection

**Bug Fixes**

- Fix issues with requestCloud calls
- Fix incorrect path calculations in view-layer paths for setData
- **core:** Fix diff algorithm key comparison issue
- **textarea:** Fix the issue where a trailing newline does not expand height

**Bug Fixes**

- Fix shallow comparison issues caused by object key order differences
- Fix serializeCopy losing null values
- Fix app not triggering onReady on feature pages
- Fix getApp returning an empty object on feature pages
- **components:** v2.14.10~11
- **core:** Fix catch event priority in sjs mode
- **core:** Fix parentNode possibly missing in event handling
- **host-config:** Fix empty event handlers on vnode
- **sub-package:** Fix relative path errors in page queries

### 2.15.15 (2024-02-04)

**Features**

- Add navigation to Native routes (app scan/scene/device configuration/outdoor)

**Bug Fixes**

- Fix inability to add custom attributes on built-in components
- Fix view-layer formatting for the optionalTypes property of custom components

### 2.15.12 (2024-01-16)

**Features**

- Add i18n.has to detect the existence of cloud translations

**Bug Fixes**

- Fix event-channel instances missing the this pointer
- Fix swiper build issues under taro ray
- Fix ineffective catch elements and autoplay issues in swiper

### 2.15.9 (2024-01-03)

**Bug Fixes**

- Fix the issue obtaining eventChannel
- Fix issues caused by shallow copying launchOptions
- Fix cache not cleared when redirectTo replaces the current tabBar page

### 2.15.7 (2023-12-20)

**Features**

- Add API mocks for ty.hideMenuButton and ty.showMenuButton

**Bug Fixes**

- Fix rjs custom component lookup by scope failing

### 2.15.6 (2023-12-12)

**Features**

- Add a queued status to OTA

**Bug Fixes**

- fix: scroll-view refresherDefaultStyle default white not taking effect

### 2.15.4 (2023-12-04)

**Features**

- scroll-view supports refresherDefaultStyle=auto to adapt to the theme

**Bug Fixes**

- Fix button submit events missing the composed flag

### 2.15.2 (2023-11-29)

**Features**

- Fix rjs feature page isolation issues

### 2.15.1 (2023-11-17)

**Features**

- Provide a logic-layer gtag tracking API
- web-view component supports bidirectional communication
- webviewContext supports the reload method

**Bug Fixes**

- Handle interlayer API calls without parameters
- Fix the event listening mechanism not detecting Function
- Fix gtag being executed when undefined
- Fix web-view loading issue in web mode
- Fix Chinese date localization issues in the picker component

### 2.14.5 (2023-11-10)

**Bug Fixes**

- Fix canvas WebGL rendering issues
- Fix shortHash runtime character issues

**Reverts**

- fix: shortHash runtime character issues

### 2.14.3 (2023-11-03)

**Bug Fixes**

- Fix selection issues in input password mode

### 2.14.2 (2023-11-01)

**Bug Fixes**

- Adjust framework error tracking categories
- Fix nested catch in scroll-view incorrectly blocking scrolling
- Fix picker-view scrolling with simulated touch in the IDE
- Fix inability to copy from input and fix getImageData errors
- Fix abnormal environment when loading feature pages in prod
- Filter exception reporting for getDeviceRoomInfo
- Fix searchVnodeByLeafPath paths being undefined

### 2.14.1 (2023-10-13)

**Features**

- Support panel OTA updates

**Features**

- Miniapp runtime environment depends on darkmode
- Add a darkmode configuration option
- Add support for the iframe tag
- Component properties optionalTypes supports multiple types

**Bug Fixes**

- Fix Bluetooth bleCover property not taking effect
- Fix incorrect modalRoot order in the raypack template function
- Fix radio-group state loss across custom components
- Fix bubbling issues for the custom event compose

### 2.13.3 (2023-09-28)

**Features**

- Provide built-in atop APIs

**Bug Fixes**

- Fix event system bubbling issues on Component

### 2.13.2 (2023-09-21)

**Bug Fixes**

- Fix app.onShow losing extraData on ty.navigateBackMiniPromgram

### 2.13.1 (2023-09-20)

**Features**

- Add FMP first-screen performance tracking
- Support longpress and longtap events
- Added support for the video tag in the rich-text component
- widget supports longpress and longtap events

**Bug Fixes**

- Fix Behavior.observes not triggering
- Fix click event conflicts in the page-container component

**Bug Fixes**

- Fix button.feedback not hiding loading on Android
- Fix tap event detail not returning x and y
- Fix i18n priority in the IDE debugging environment

### 2.12.19 (2023-09-05)

**Bug Fixes**

- Issue with catching Promise errors in non-native environments
- Fixed an issue where the scroll event might be prevented from bubbling and not triggered
- Fixed an issue where widget.onThemeChange did not fire
- Fixed an issue where error logs from business JS execution were not displayed

### 2.12.18 (2023-09-01)

**Features**

- Added logging capability and open-type=feedback support on button
- Widget supports dynamically setting height

**Bug Fixes**

- Fixed an issue where the input component's indent-end did not apply to the placeholder
- Fixed an issue where the input component's indent-start did not apply to the placeholder
- Fixed an issue where onReachBottom was unexpectedly triggered during pull-to-refresh
- Fixed incorrect picker-item height on Huawei P40
- Fixed an issue where setting textarea value = '' had no effect
- Fixed an issue where widget.onThemeChange was abnormal in the IDE
- Fixed inconsistent behavior of elements with scrollbars across platforms
- Fixed an issue loading functional pages in prod mode
- Fixed issues displaying Unicode text in templates

### 2.12.15 (2023-08-16)

**Features**

- Added app launch mode for functional pages
- Added first-screen analytics tracking
- Added page pureRoute path

**Bug Fixes**

- Fixed an issue where input text-transform did not take effect
- Fixed missing hint names in AMD modules
- Fixed an issue where es6-polyfill lacked environment injection
- Fixed an issue where Promise unhandledRejection was not captured
- Issue with path route parameter parsing for array format

### 2.12.14 (2023-08-14)

**Bug Fixes**

- Adjusted configuration for the details page

### 2.12.13 (2023-08-09)

**Bug Fixes**

- Fixed the priority of a tag handling in rich-text

### 2.12.12 (2023-08-02)

**Features**

- Page supports behaviors configuration
- rich-text adds the bind:select event

**Bug Fixes**

- Issue with lack of support for default relative routes
- Fixed an issue where input/textarea placeholder was not truncated
- Fixed an issue where dataset lost Function type values
- Fixed input component behavior issues on iOS 14.3
- Fixed an issue where iOS 14.2 repeatedly triggered onOrientationChange
- Fixed an issue where eventChannel was lost when navigating to functional pages
- Changed initialization timing of native-layer components to ready
- Issue where setData references in custom components caused observer issues

### 2.12.10 (2023-07-17)

**Bug Fixes**

- Panel - Group does not show offline window
- Fixed issues with input placeholder under Chinese IME
- Added widget options parameter and error prompts for loadOptions.query
- Issue with vConsole displaying error logs

### 2.12.9 (2023-07-14)

**Bug Fixes**

- Fixed an issue where the value in the input confirm callback was empty

### 2.12.8 (2023-07-10)

**Bug Fixes**

- Issue with unsupported Cat.1 device detection
- Fixed an issue where input placeholder was not cleared

### 2.12.6 (2023-07-06)

**Features**

- Added page-meta tag and ty.setPageStyle API

**Bug Fixes**

- Fixed entryCode priority when loading functional pages
- Fixed an issue where page configuration retrieval did not perform hashing
- Fixed an issue where default properties returned default values
- Fallback for floating-point values in Android setTimeout
- canvas proactively performs garbage collection
- Issue when updating input value and maxLength simultaneously

### 2.12.5 (2023-06-27)

**Bug Fixes**

- Fixed issues with dataset case conversion

### 2.12.4 (2023-06-27)

**Bug Fixes**

- Adapted bletoast top offset when navigationStyle is custom
- Fixed incorrect retrieval when getRelationNodes is used anonymously

### 2.12.3 (2023-06-16)

**Bug Fixes**

- Fixed an issue where the setData queue did not trigger observer

### 2.12.2 (2023-06-14)

**Features**

- Added dynamic lifecycle feature in page.addLifecycle

**Bug Fixes**

- Error reporting
- Fixed conflicts between picker-view and catch events
- Fixed default value issue in ty.createIntersectionObserver
- Fixed errors in vnode patch
- Fixed an issue where vtree did not handle catch and bind: events

### 2.12.1 (2023-06-07)

**Features**

- Built-in React VNode template format

**Bug Fixes**

- **VERSION:** Issue with injection logic
- Fixed an issue where dataset properties had an update flag
- Fixed conflict between slider and catchtouchmove
- Fix consecutive `\n` in text not taking effect
- Fix newline \n handling in textarea/input
- Fix missing settings

**Bug Fixes**

- Feature pages missing appConfig
- Fix linkage between input/textarea and label
- Issue with scroll-view refresherTriggered state toggling

### 2.11.10 (2023-05-30)

**Bug Fixes**

- Fix text tag not supporting line breaks
- Fix text tag text processing
- Fix input/textarea focus issue caused by touch-emulator
- Fix incorrect sjs change prompt

### 2.11.9 (2023-05-22)

**Bug Fixes**

- Fix canvas node style issue
- Fix focus/blur not triggering sjs
- Issue with canvas business relying on position
- Issue with attribute changes on off-layer iframe component
- **textarea:** Fix incorrect value maintenance

### 2.11.7 (2023-05-15)

**Bug Fixes**

- Fix delayed rendering on rapid setData
- Duplicate host styles being added
- Fix missing columns during picker-view initialization

### 2.11.6 (2023-05-11)

**Bug Fixes**

- Fix setting rounded corners via page-container custom-style
- Fix picker allowing selectable values out of range

### 2.11.5 (2023-05-10)

**Bug Fixes**

- Fix canvas default preventing event bubbling
- Fix iframe onLoad event not firing
- Fix issue entering the widget preview version from the panel

**Performance Improvements**

- Optimize repeated onReachBottom event firing

### 2.11.3 (2023-04-27)

**Features**

- Upgrade builtin-components to support iframe
- Add getThemeInfo API & off-layer iframe

**Bug Fixes**

- Detect run mode and retry 10 times in integration-debug mode
- Upgrade builtin components to fix canvas issues
- Issue with orientationchange in view-layer browser mode
- Fix empty sjs change
- Suggest user-defined methods for page method names
- Add iframe message listener
- Add i18n tolerance to avoid blocking when no languages are available
- iOS 11 IntersectionObserver compatibility issue
- Duplicate viewLoad dispatch issue
- Dynamically update webview src

### 2.11.1 (2023-04-13)

**Features**

- Worker restrictions & console proxy
- 1. Refactor simple elements in slot mode
- Reserve functionality by adding a meta:tag attribute to tag names
- Handle cross-layer event vnode lookup
- Single slot nested switching
- Add warnings for proto methods in templates
- Creation of multiple slots
- Dark theme
- Operations based on vnode nodes
- Compatibility with legacy IDE build artifacts & 2.x container
- Add a Back to Home button to offline components
- setData rendering in the logic layer should run in the microtask queue
- Add parameters to the Panel API to configure whether to actively connect to Bluetooth devices
- Panel Bluetooth roaming feature
- Upgrade @tuya-miniapp/builtin-components
- Upgrade vConsole to support console.group and console.groupEnd events
- Implement the ty.canIUse API
- Sync panel logic with v2.10
- Add the mothra.tag marker
- Add reading of meta information
- Add ty.nextTick API
- Add ty.onAppClose API for exit event interception
- Support runtime configuration dangerouslyDisableRjsScope
- Use t- as a prefix for custom components to avoid conflicts with web-components
- Component props addition order
- Add groupSetData
- Add host styles to body
- Apply mockGlobal in the view layer as well
- PC client event simulation
- **shared:** Add randomHash method
- Add getDate method in sjs
- sjs change
- Post-position the slot
- Update slot nodes
- Slot removal and switching
- Add containerVersion field to systemInfo
- Add FPS monitoring to vconsole
- Add messageChannel metrics to vConsole
- **vConsole:** Add metrics for communication data size
- Adapt widget to the new rendering model
- Add isDisablePadding support for widget
- Support built-in component events in widget
- Support TTT and theme events in widget

**Features**

- Add native interaction events for view
- Unidirectional data flow
- Initialize vconsole in the logic layer based on appHooks
- i18n compatibility
- Separate the appChannel package
- Update panel logic ([4813e64](https://registry.code.tuya-inc.top/baselibrary/mothra-framework/commits/4813e646051cf84d998a042c96cf0707a3344f55)), closes [/registry.code.tuya-inc.top/godzilla/mothra/-/merge_requests/429/diffs#diff-content-af49747625816b147e4ed9aea328033ede0bf0](https://registry.code.tuya-inc.top//registry.code.tuya-inc.top/godzilla/mothra/-/merge_requests/429/diffs/issues/diff-content-af49747625816b147e4ed9aea328033ede0bf0)
- Return SDKVersion version information for compatibility
- Compatibility for data type
- Intercept request storage
- Logic-layer propObserver
- Panel output node types
- Template node performance hints
- Inline styles support CSS variables
- Drop compatibility with older ty
- Event pool
- Get dataset from the event object
- The view layer sends attached and ready events to the logic layer
- The view layer renderer supports passing propObserver
- The view layer supports Web Components built-in components
- Add ty.setNavigationBarBack
- Validate Component fields
- Page event dispatch
- Page event support
- Heterogeneous layer Phase 2
- Heterogeneous-layer component context
- Heterogeneous-layer component communication
- Reduce data transfer for first-screen rendering
- Add app.onReady event
- Add appChannel miniapp communication
- Add touch event simulation
- Add ty.onAppEvent API
- Add widget onLoad parameter
- Support externalClasses for external styles
- Support externalClasses for external styles
- Support multiple queries in intersectionObserver
- Support rem units
- Support slot parameter validation
- Support custom events on built-in components
- Support built-in component property optionalTypes
- Support adaptive layout & fix style update issues
- Support canvas
- Custom event bubbling
- Custom component replacement detection
- Nested rendering for custom components
- Custom component relations
- Custom components: setData and properties updates trigger partial rendering
- Support class prefix queries inside components
- Component configuration validation
- animation capability
- animation supports rpx units
- behavior definition filter
- behaviors
- builtin-components upgrade
- component relations anonymized paths
- component selectComponent
- Composed event bubbling
- createSelectorQuery
- customElements compatibility support
- Trigger detached
- device API interception supports removing TYBLE
- device API interception supports removing TYBLE
- event dataset supports original data types
- getRelationNodes method
- i18n
- IDE runtime plugin
- intersection observer ready check
- intersectionObserver
- ipc-cloud-player,color-picker
- New ipc API: disableNative
- observers field name validation
- Page runtime context
- Page field update matching
- page lifecycle
- page.selectAllComponents
- page.selectComponent
- PC drag-and-scroll simulation
- plugin-vconsole
- properties reserved word hints
- property standardized
- pureDataPattern
- pureDataPattern view layer
- Render js & i18n
- resetStyleDeclaration & parseStyles
- setData back
- setStyle supports CSSStyleDeclaration
- Touch event simulation for nodes inside shadowRoot
- sjs event object
- sjs amd
- sjs change:prop
- sjs triggerEvent event queue
- triggerEvent
- ty.panel capabilities
- vconsole miniapp node
- web-view does not support styling
- web-view cross-layer events
- widget
- widget multi-size fluid layout
- widget adds i18n support
- widget supports multiple sizes
- widget supports theme colors
- widget mock API
- widget onPageScroll
- wxs getComputedStyle

**Bug Fixes**

- Fix missing listeners when updating offline display logic
- Fix hidden not taking effect on built-in components

**Bug Fixes**

- Fix sjs change trigger timing and incorrect initial oldValue
- Add template.version check
- Handle dual-mode devices: show a connection-success dialog when Wi-Fi comes online
- Code formatting
- Fallback for logic/view layer communication pool initialization
- Incorrect dom-ready detection with multiple renders
- Compatibility: IDE not recognizing touch events
- For offline dual-mode devices, an offline prompt was shown with no content under poor connectivity
- composeVnode cross-layer tree in the logic layer
- setData flow in the logic layer
- Panel element click occlusion issue
- Global style order issue
- Use breadth-first traversal for lifecycle
- Issue where setAttributes was triggered when a prop did not change
- Possible lag in view-layer UI update observer
- Temporarily lift the block on window in the view layer
- Fix rendering exceptions when the view layer handled patchData split data
- Chinese text in prompts
- webviewId comparison for system events
- Wrong insertion type when the next node is a slot
- When creating an element, check whether next exists
- Fix triggerEvent default detail being {}
- Fix style issues caused by :host specificity
- Fix issue with function-style startup in Android environments
- Fix canvas rjs communication failing to find elements
- Fix canvas side effects causing the ready lifecycle to be asynchronous
- Fix $dataBytes being displayed in debug mode
- Fix event.path compatibility issue
- Fix webview startup process on iOS
- Fix movable-view component initial state issue
- Fix issue where invoking observers causes observer triggers to throw exceptions
- Fix incorrect data retrieval in observers
- Fix issue where the ready lifecycle fires before DOM ready
- Fix incorrect component node lookup in sjs triggerEvent
- Fix nested slot issues
- Fix abnormal template updates
- Fix loss of -webkit- prefixed styles
- Fix missing pageId parameter in widget widgetJsBridge
- Fix issue where initial property.observer did not execute
- Fix incorrect node rect retrieval in deeply nested components
- Fix issues in scenarios combining event queue execution with setData
- Fix timing of ready trigger in the view layer
- Fix data snapshot issues when setData is called during page onLoad initialization
- Fix synchronization issues in component initialization logic
- Rendering-related event queue errors
- Error when executing SelectorQuery asynchronously after the page is detached
- Issue where function pointers are lost when passing functions on page/component instances
- Redundant dependencies
- Cross-layer component event triggering issues
- Handling of hover-class in native components
- Uncaught errors when executing property.observer
- Chinese prompts
- Style loss caused by switching custom component tag names
- Component undefined issue
- Add dataset field
- amd-engine upgrade
- Exceptions in ancestor relation
- Issue where the Android TTT channel may not be established
- Issue where the attached event triggers abnormally
- Add meta:tag to the body tag
- Issue with catch preventing bubbling causing abnormal event triggering
- Case where the class value may be true
- Special handling for the component.created lifecycle
- Composed event bubbling
- Issue updating composeVnode associations
- Issue where the composeVnode chain is not updated
- Consistency of lifecycle contexts for created, observers, etc.
- Lack of support for CSS variables
- Calls made when CSS is absent
- Issue with recursive execution of the detached lifecycle
- Issue where disableScroll has no effect in the IDE
- elem element retrieval
- execQuery
- Issue where getRelationNodes always returns []
- Issue where getRelationNodes returns a value that is not []
- getSystemInfo API parameter error
- Issue with getSystemInfo poomisify
- Hack: temporary fix for potential data desynchronization caused by setData in create
- ID loss issue
- Error with the image tag on Safari
- image scaleToFill style error
- in operator calculation error
- Rendering issues for fragment nodes imported via include
- lodash.merge
- navigateTo parameter passthrough
- Issue with observer dataset format conversion
- Issue with execution order when combining observers, observer, and setData
- Error capture for observers function execution
- onLoad parameters
- Issue with synchronous Page creation
- Issue where page initial render data is out of sync
- Issues with page-container
- Issue with event bubbling of page-container child elements
- Issue where page.setData is not executed synchronously
- Issue where panel initializes too early
- Issue with patch deep-compare data updates
- Issue standardizing the split format of patchData data fields
- Issue with props change order
- The ready lifecycle executes before attached
- Timing of relations
- Issue with relations execution errors
- rjs execution is not wrapped in try-catch
- Issue with the instance returned by selectComponent
- Compatibility for missing selectorQuery
- Order issue in synchronous setData
- Rendering lag caused by asynchronous setData
- Styles set in sjs being reset
- Errors when calling the sjs callMethod inside pages and components
- Issue with sjs change when the initial value is null
- Invocation order issue for the sjs change event
- Hardcoded parameters in sjsChangeObserver
- Lifecycle errors with slot + lifetime
- Impact of slot on web-components
- Slot multi-render switching issues
- Slot inner and outer rendering out-of-sync
- Slot nested rendering
- Node changes on slot switching
- Disable slot switching
- Slot rendering issues
- Recursive addition of slot elements
- Issue with slot elements created afterwards
- Order issue when switching slot elements
- Rendering issue for slot under ty:if nodes
- slot host
- Issue where split setData does not update the view
- Error in the tap click event queue
- templateData compatibility with legacy build artifacts
- Issue where ty.onAppEvent is not triggered
- Execution anomalies with ty.pageScrollTo
- Insertion error when switching tyif elements and adding new ones
- typeof
- Issue with updateFields format errors
- updateFields changes between old and new values
- Usage of v node
- vconsole loading timing issue
- Displaying pull-to-refresh elements in vconsole
- vConsole maximum value display error
- Issue where sjs in the view layer may modify data
- vnode nodes being lost
- widget pathHash equivalent to the page path
- Issue where widget ready lifecycle does not fire
- Adaptation of widget size values
- Execution order discrepancy in willMount
- Buffer cache initialization on worker message startup

**Bug Fixes**

- Weak references in data
- ty*json* anonymization
- Replace ? with type checks
- Handle errors
- Pass options to the view layer
- Remove single-slot warning
- Issue with abnormal node text rendering
- Multiple slot nesting issue
- Issue where the node's vnode wasn't updated
- Update widget buildin
- Share BuiltinCustomEvents
- Add dependency
- Add dependency
- Make execQuery compatible with view-layer ready logic
- Make getNativeKits return value compatible
- Handle the case where children is missing
- Make widget compatible with tiny_1.0 and small_1.0
- Logic-layer update issue
- Logic-layer custom component nesting
- Built-in component event dispatch mechanism: do not dispatch if not bound
- Issue with serialization of built-in component property values
- Handle line breaks in built-in component text
- Issue where screen rotation causes all styles to re-render
- Remove unused listeners
- View-layer component detached
- Issue where the view may lag on real devices in special scenarios
- Dual-mode device offline prompt: do not show the dialog when phone Bluetooth is off
- Issue where text doesn't support \n and br line breaks
- Fix incorrect property data in custom components
- Fix ordering conflict between animation and style
- Fix observer not working with hyphenated property names
- Fix relationship link errors in usingComponents
- Issue where the page can scroll horizontally
- Bind page astConfigPath
- Dependency installation
- Dependency changes
- Remove expression vnode compatibility for key, for-item, and for-index
- Modify reference paths
- Runtime this error
- Support newline \n in strings
- usingComponents error in child scope
- Custom child node rendering issue
- Issue where className calculation inside a custom component's slot is incorrect
- Custom components simulate composed events for built-in components
- Issue with custom component property setting
- Custom component child node rendering
- Custom component class issue
- amd getCanvasId
- Issue where animation default properties are not in the property list
- app ready
- Export app-hooks
- Issue where the app.onUnload lifecycle wasn't listened for
- Format handling for attrs
- Issue with parsing inline styles in base64 images
- behavior lifetimes priority
- Issue with body default styles causing margin-top overflow
- Issue where body margin-top overflows
- Issue with SJS exceptions in catch events
- class without module
- component __pageId
- Issue where observers are called during Component initialization
- Issue where observer isn't triggered during component initialization
- Non-strict component pageId bug
- Data loss in component setData
- createText null
- css-helper
- Issue where data cannot be set
- deps
- directive is no longer passed
- env i18n configuration
- env runtime check for debugOn
- event pool loop
- IDE debugging integration
- iOS 11 tap
- messageBridge
- mock global this
- movable-view animation conflict
- node_modules anonymization
- observer execution order
- observers field name validation
- Panel language
- Issue where parentNode does not exist
- Issue with patch using smartAssign
- Issue where picker component internally triggers page scroll
- prop change
- Compatibility error for missing properties
- Incorrect properties computation issue
- relation returns component instance
- Non-standard implementation of default path support in relations
- relativeToViewport has the lowest priority
- Minimum rem on Android is 8px
- Missing resize event
- Issue where rjs view pageId does not exist
- setData can be redefined
- sideEffects removal
- Issue with SJS event triggerEvent responding in the logic layer
- Render text after slot update
- Slot renders strings
- Template error prompt
- text content parsing
- Text not defined
- Line break rendering and event handling in text
- timestamp
- timeStamp format
- ty.pageScrollTo export error
- typo
- up text tag
- usingComponents shortHash
- vconsole communication error
- verifyComponent path display issue
- Issue where web pull-to-refresh triggers picker-view-column
- detail property of webcomponent custom components
- widget top-level styles
- widget i18n in runtime
- without Function

**Reverts**

- Revert "fix: workaround for removing the hack"
