All notable changes to this project will be documented in this file.
- bundle-update: Use
scheduledEnvBuildNumberfrom task instead of storedgetNativeBuildNumber()for buildNumber change detection in pre-launch pending task processing
- Bump all native modules and views to 1.1.46
- bundle-update: Use
scheduledEnvBuildNumberfrom task instead of storedgetNativeBuildNumber()for buildNumber change detection in pre-launch pending task processing, so the check works even without a prior successful bundle install - react-native-tab-view: Add
delayedFreezeprop to control freeze/unfreeze delay on tab switch; defaults to immediate freeze for better iPad sidebar switching
- Bump all native modules and views to 1.1.45
- react-native-tab-view (iOS): Force iPad tab bar to bottom by overriding
horizontalSizeClassto.compacton iPad (iOS 18+), preventingUITabBarControllerfrom placing tabs at the top
- react-native-tab-view (iOS): Remove verbose debug logging (KVO observers, prop change logs, layout logs, delegate proxy logs)
- Bump all native modules and views to 1.1.44
- bundle-update: Add native-layer pre-launch pending task processing for iOS/Android — process pending bundle-switch tasks before JS runtime starts
- bundle-update: Harden pre-launch pending task with entry file existence check and synchronous writes (commit instead of apply on Android)
- Bump all native modules and views to 1.1.43
- bundle-update: Add
clearDownload()method that only clears the download cache directory - bundle-update: Fix
clearBundle()to also clear the installed bundle directory, aligning behavior across desktop/iOS/Android
- Bump all native modules and views to 1.1.42
- bundle-update: Add buildNumber change detection in
getJsBundlePath()— clears hot-update bundle data and falls back to builtin JS bundle when native buildNumber changes - bundle-update: Add
getNativeBuildNumber()andgetBuiltinBundleVersion()APIs on both iOS and Android
- bundle-update (iOS): Guard against empty stored buildNumber to match Android behavior in build number change detection
- bundle-update (Android): Use
get().toString()instead ofgetString()ingetBuiltinBundleVersion()to handle numeric meta-data values that AAPT2 stores as Integer
- Bump all native modules and views to 1.1.41
- device-utils: Add boot recovery APIs and test buttons to DeviceUtilsTestPage
- Add acknowledgment READMEs for forked upstream projects: react-native-tab-view, TOCropViewController, react-native-get-random-values
- Bump all native modules and views to 1.1.39
- scroll-guard: Add new
@onekeyfe/react-native-scroll-guardnative view module that prevents parent scrollable containers (PagerView/ViewPager2) from intercepting child scroll gestures - scroll-guard: Support
directionprop with horizontal, vertical, and both modes
- scroll-guard (Android): Use
ViewGroupManagerinstead of nitrogen-generatedSimpleViewManagerto properly support child views (fixesIViewGroupManagerClassCastException) - scroll-guard (iOS): Improve gesture blocking reliability
- Add
nitrogen/to.gitignoreand remove tracked nitrogen files - Bump all native modules and views to 1.1.38
- bundle-update: Add
resetToBuiltInBundle()API to clear the current bundle version preference, reverting to built-in JS bundle on next restart
- Bump all native modules and views to 1.1.37
- auto-size-input: Add
contentCenteredprop to center prefix/input/suffix as one visual group in single-line mode
- auto-size-input (Android): Improve baseline centering and centered-layout width calculations for single-line input
- auto-size-input (iOS): Align auto-width sizing behavior with Android so content width and suffix positioning stay consistent
- Bump all native modules and views to 1.1.36
- pager-view: Add local
@onekeyfe/react-native-pager-viewpackage innative-viewswith iOS and Android support - example: Add PagerView test page and route integration, including nested pager demos
- pager-view: Fix layout metrics/child-view guards and scope refresh-layout callback to the host instance
- tab-view: Guard invalid route keys in tab press/long-press callbacks and safely resync selected tab on Android
- Bump all native modules and views to 1.1.35
- auto-size-input: Use
setRawInputTypeon Android so the IME shows the correct keyboard layout without restricting accepted characters; JS-side sanitization handles character filtering - auto-size-input: Skip
autoCorrectandautoCapitalizemutations on number/phone input classes to avoid stripping decimal/signed flags and installing a restrictive KeyListener
- tab-view: Remove
interfaceOnlyoption fromcodegenNativeComponentto fix Fabric component registration
- tab-view: Add new
@onekeyfe/react-native-tab-viewFabric Native Component with native iOS tab bar (UITabBarController) and Android bottom navigation (BottomNavigationView) - tab-view: Add
ignoreBottomInsetsprop for controlling safe-area inset behavior - tab-view: Add TabView settings page for Android with shared store
- tab-view: Add OneKeyLog debug logging for tab bar visibility debugging
- tab-view: Migrate to Fabric Native Component (New Architecture), remove Paper (old arch) code on iOS
- example: Add TabView test page and migrate example app routing to
@react-navigation/native - example: Add floating A-Z alphabet sidebar, emoji icons, and compact iOS Settings-style module list to home screen
- tab-view: Prevent React child views from covering tab bar
- tab-view: Prevent Fabric from stealing tab childViews, fix scroll and layout issues
- tab-view: Forward events from Swift container to Fabric EventEmitter on iOS
- tab-view: Resolve Kotlin compilation errors in RCTTabViewManager
- tab-view: Wrap BottomNavigationView context with MaterialComponents theme
- tab-view: Remove bridging header for framework target compatibility
- tab-view: Use ObjC runtime bridge to call OneKeyLog, avoid Nitro C++ header import
- tab-view: Resolve iOS Fabric ComponentView build errors
- tab-view: Restore
#ifdef RCT_NEW_ARCH_ENABLEDin .h files for Swift module compatibility
- tab-view: Migrate from Nitro HybridView to Fabric ViewManager, then to Fabric Native Component
- Bump all native modules and views to 1.1.32
- bundle-update / app-update: Add synchronous
isSkipGpgVerificationAllowedAPI to expose whether build-time skip-GPG capability is enabled
- auto-size-input: Re-layout immediately in
contentAutoWidthmode as text changes, and shrink font when max width is reached so content stays visible
- auto-size-input: Add new
@onekeyfe/react-native-auto-size-inputnative view module with font auto-scaling, prefix/suffix support, multiline support, and example page - auto-size-input: Add
showBorder,inputBackgroundColor, andcontentAutoWidthprops; make composed prefix/input/suffix area tappable to focus input - bundle-update / app-update: Add
testVerificationandtestSkipVerificationtesting APIs - native-logger: Add level-based token bucket rate limiting for log writes
- auto-size-input: Fix iOS build issue (delegate/
NSObjectProtocolconformance), fix layout-loop behavior, and align callback typing on test page - native-logger: Harden log rolling behavior and move rate limiting to low-level logger implementation
- bundle-update / app-update: Gate skip-GPG logic with build-time env var
ONEKEY_ALLOW_SKIP_GPG_VERIFICATION— code paths are compiled out (iOS) or short-circuited by immutable constant (Android) when flag is unset
- bundle-update / app-update: Treat empty string env var as disabled for
ALLOW_SKIP_GPG_VERIFICATION
- Bump all native modules and views to 1.1.27
- bundle-update: Add synchronous
getJsBundlePath, rename async version togetJsBundlePathAsync
- Address Copilot review — stack traces, import Security, FileProvider authority
- Bump native modules and views version to 1.1.24
- bundle-update / app-update: Address PR review security and robustness issues
- bundle-update / app-update: Use
onekey-app-dev-settingMMKV instance and require dual check for GPG skip
- Bump native modules and views version to 1.1.23
- bundle-update: Migrate signature storage from SharedPreferences/UserDefaults to file-based storage
- bundle-update: Add
filePathfield toAscFileInfoinlistAscFilesAPI - app-update: Add Download ASC and Verify ASC steps to AppUpdate pipeline
- app-update: Improve download with sandbox path fix, error logging, and APK cache verification
- bundle-update / app-update: Add comprehensive logging to native modules
- bundle-update: Add download progress logging on both iOS and Android
- bundle-update: Expose
BundleUpdateStoreto ObjC runtime - bundle-update: Fix iOS build errors (MMKV and SSZipArchive API)
- bundle-update / app-update: Fix Android build errors across native modules
- app-update: Fix download progress events and prevent duplicate downloads in native layer
- app-update: Fix remaining
params.filePathreference ininstallAPK - app-update: Skip
packageNameand certificate checks in debug builds, still log results - app-update: Add FileProvider config for APK install intent
- app-update: Add BouncyCastle provider and fix conflict with Android built-in BC
- bundle-update: Add diagnostic logging for bundle download file creation
- bundle-update: Add detailed diagnostic logging to
getJsBundlePathon both platforms - lite-card: Add BuildConfig import to LogUtil
- native-logger: Pass archived path to
super.didArchiveLogFileto prevent crash - Use host app
FLAG_DEBUGGABLEinstead of libraryBuildConfig.DEBUG
- app-update: Remove
filePathfrom AppUpdate API, derive fromdownloadUrl - app-update: Unify AppUpdate event types with
update/prefix
- device-utils: Merge
react-native-webview-checkerintoreact-native-device-utils - device-utils: Add WebView & Play Services availability checks
- device-utils: Add
saveDeviceTokenand makeexitAppa no-op on iOS - splash-screen: Implement Android legacy splash screen with
SplashScreenBridge - get-random-values: Add logging for invalid
byteLength - bundle-update / app-update: Replace debug-mode GPG skip with MMKV DevSettings toggle
- native-logger: Add
react-native-native-loggermodule with file-based logging, log rotation, and CocoaLumberjack/Timber backends - native-logger: Add startup log in native layer for iOS and Android
- native-logger: Add timestamp format for log writes and copy button for log dir
- Integrate
OneKeyLoginto all native modules
- native-logger: Auto-init OneKeyLog via ContentProvider before
Application.onCreate - native-logger: Use correct autolinked Gradle project name
- native-logger: Security hardening — remove key names from keychain logs
- lite-card: Migrate logging to NativeLogger, remove sensitive data from logs
- background-thread: Migrate logging to NativeLogger, replace
@importwith dynamic dispatch - bundle-update: Add missing
deepLinkparameter toLaunchOptionsinitializer
- Bump version to 1.1.20
- device-utils: Improve
setUserInterfaceStylereliability and code quality - device-utils (Android): Prevent
ConcurrentModificationExceptionin foldable device listener - device-utils (Android): Add null check in
setTopActivityto preventNullPointerException - device-utils (Android): Add synchronized blocks to prevent race conditions
- device-utils: Add
setUserInterfaceStyleAPI with local persistence for dark/light mode control - device-utils: Add comprehensive foldable device detection with manufacturer-specific caching
- device-utils: Expand foldable device list from Google Play supported devices
- cloud-kit: Correct
fetchRecordreturn type on both iOS and Android
- Upgrade
react-native-nitro-modulesto 0.33.2
- lite-card: Initial OneKey Lite NFC card module with full card management (read/write mnemonic, change PIN, reset, get card info)
- lite-card: Refactor to Turbo Module architecture
- check-biometric-auth-changed: Support biometric authentication change detection on iOS and Android
- cloud-kit: Add CloudKit/iCloud module for record CRUD operations
- keychain-module: Add secure keychain storage module (iOS Keychain / Android Keystore)
- background-thread: Add background JavaScript thread execution module
- get-random-values: Add cryptographic random values module (Nitro Module)
- device-utils: Add device utilities module — system info, clipboard, haptics, locale, and more
- skeleton: Add native skeleton loading view component with shimmer animation
- skeleton: Fix
EXC_BAD_ACCESScrash on iOS - skeleton: Improve memory safety and cleanup in Skeleton component
- skeleton: Fix memory leak
- cloud-kit: Fix native type errors in CloudKitModule
- Upgrade project structure to monorepo with workspaces
- Create CI publish workflow