0.88.1
- JSI: Forward createValueFromJsonUtf8 in RuntimeDecorator (b5eec4e4f3 by @mrousavy)
- JSI: Run the With hooks around WithRuntimeDecorator::createArrayBuffer (82def6ea4c by @mrousavy)
- JSI: Forward String::length in RuntimeDecorator and WithRuntimeDecorator (be567d270c by @mrousavy)
- Yoga: Fix flex shrink explosion when the shrink total is a positive float residual (24a3be5f99 by @intergalacticspacehighway)
- SwiftPM: the build stops with a clear error when precompiled plugin frameworks and the Xcode project disagree, and the error says what to run. (a920e5db46 by @chrfalch)
- JSI: Use createError in JSError and forward it in RuntimeDecorator (0cca3a1f77 by @mrousavy)
- Build: Compile React Native's C/C++/Objective-C code with
-O2instead of-Osin Release, and Yoga and glog with-O2in all builds, to match Android (60c817e925 by @chrfalch) - SwiftPM:
spm addandspm updatewrite React Native's build settings toReactNativeSPM/ReactNativeSPM.xcconfigand its build scripts toReactNativeSPM/Scripts/, so a version bump no longer changesproject.pbxproj. A configuration that uses its own xcconfig must now#includethe generated file, and a target setting that hides React Native's value must add$(inherited).spmprints the exact fix in both cases. (cd89e98949 by @chrfalch) - Text: Text without a background color no longer draws a transparent background (0bd33261d1 by @hryhoriiK97)
- LogBox: Fix bottom notification appearance/touch targets on iPhone Duo (88a8bd23e8 by @huntie)
- Yoga: Keep the measured pixel size of text nodes when rounding to the pixel grid (fd5392494f by @intergalacticspacehighway)
- Text: Fix text measured with the wrong width when
fontVariationSettingsare re-applied to a reusedPaint(96518a8fb9 by @jkadamczyk) - Text: Skip empty and fully hidden text decoration ranges (dbd5b3b770 by @Abbondanzo)
- Text: Fix crash drawing text decoration (underline/strikethrough) when a nested Text's span extends past a numberOfLines-truncated layout (ca8504b1ca by @lazerg)
- Image: Image no longer shows the image of a previous source after its native view is recycled (53bf98bf40 by @mattijsf)
- SafeArea: Fix views with a filter having their content offset by the safe area insets (fea820fa9b by @intergalacticspacehighway)
- StatusBar:
StatusBarstyle and visibility work on iOS 27 for apps built with the iOS 27 SDK whenUIViewControllerBasedStatusBarAppearanceisYES. Custom root view controllers must return theRCTStatusBarAppearancevalues. (bd08dafc98 by @alanjhughes) - SwiftPM: a project set up with skipped codegen no longer fails package resolution on
ReactAppHeaders(e3aa9a1e19 by @chrfalch) - SwiftPM: the build-time sync now runs again when a watched path that did not exist at the last sync appears. (c89f4120ac by @chrfalch)
- SwiftPM: keep line breaks in the scheme pre-action script so that the "Sync SPM Autolinking" pre-action runs. Run
npx react-native spm updateonce to rewrite an existing scheme. (b8df948fd4 by @chrfalch)
Hermes V1 dSYMS:
ReactNativeDependencies dSYMs:
ReactNative Core dSYMs:
You can file issues or pick requests against this release here.
To help you upgrade to this version, you can use the Upgrade Helper ⚛️.
View the whole changelog in the CHANGELOG.md file.
4.3.0-beta03
- Added ability to enable manual analysis in duplicate finder by #3260
- Fixed saving images to their original folders when processing folders with subfolders
- Fixed jitters when animations disabled by #3263
- Updated jixel coder and added more effort values by #3267
- Reduced apk size after last increase
- Improved app performance in some scenarios
Full Changelog: https://github.com/T8RIN/ImageToolbox/compare/4.3.0-beta02...4.3.0-beta03
androidx-9.2.3
修复鉴权图片 URL 中签名变化导致缓存无法复用的问题,关联 #231。
- 新增
ImagePreview.setImageCacheKeyProvider,支持调用方提供稳定缓存键;不配置时保持按完整 URL 缓存。 - 统一图片预览、查看原图、保存图片和原始文件缓存查询的缓存键。网络请求与进度回调继续使用完整鉴权 URL。
- 文件下载改用
DiskCacheStrategy.DATA,修复downloadOnly()使用ALL引发 File 编码失败及重复 HTTP 请求的问题。 - 补齐现有 Media3 缓存管理器的 opt-in 注解,完整 lint 检查通过。
两个制品版本保持一致:
implementation "com.gouqinglin:BigImageViewPager:androidx-9.2.3"
// 可选视频插件
implementation "com.gouqinglin:BigImageViewPager-media3:androidx-9.2.3"
Kotlin 接入示例:
ImagePreview.instance
.with(activity)
.setImageUrlList(urls)
.setImageCacheKeyProvider { url -> cacheKeysByUrl[url] }
.start()
cacheKeysByUrl 为调用方准备的不可变映射,完整 URL 对应稳定资源键。缓存键应区分账号范围、内容版本和图片规格;返回 null 时保留该 URL 的默认规则。不要默认删除全部查询参数。
验证:Pixel 4 / Android 13 的 13 项仪器测试通过,覆盖真实图片双击缩放、滑动翻页、长图、横竖屏切换、签名轮换后重进、查看原图、保存图片、规格/版本/账号隔离、默认缓存规则和跳过缓存。核心库与 Media3 插件 Release AAR 构建、sample 构建、Gradle test、lint 和 git diff --check 通过。
详见 鉴权图片缓存接入说明。
4.3.0-beta02
- Added ability to automatically change seed after saving by #3250
- Added ability to automatically detect faces in draw tool for blur and pixelization brushes
- Added MobileSAM background removing model to perform guided segmentation
- Added ability to create people groups under semantic search
- Added setting to enable categorized settings UI
- Added AI assistant to ask questions about the app
- Added ability to show help & tips button on the main screen
- Added GFPGAN, DehazeFormer and DocShadow SD7K models to AI tools
- Improved LaMa inpainting quality in the Spot Heal tool
- Improved compare slider behavior by #3245
- Improved Help & Tips information
- Fixed image cropper to not lose original dimensions by #3246
- Fixed pinch gestures in markup layers by #3252
- Fixed gestures in image pagers while zoomed by #3253
- Fixed fast settings side when animations disabled by #3255
- Fixed Edit EXIF tool for large images by #3259
Full Changelog: https://github.com/T8RIN/ImageToolbox/compare/4.3.0-beta01...4.3.0-beta02
4.4.2
修复 Maven 消费者无法编译的问题
recyclerview / annotation 依赖此前以 implementation 方式发布,POM 中为 runtime scope。如果使用方项目没有自行引入 recyclerview,编译时会报 Cannot access RecyclerView.ViewHolder。现已改为 api,无需任何手动处理。
-
修复
clearBeforeAdapters()/clearAfterAdapters()后预加载失效的问题 清空 Before/After Adapter 后,加载更多的预加载监听器没有恢复到 contentAdapter,导致预加载从此不再触发。 -
修复
LoadStateAdapter状态更新顺序 先更新loadState再 notify,符合 Adapter 数据更新约定,notify 期间同步读取getItemCount()的观察者不再看到旧状态。 -
修复 Kotlin K2 下的编译错误
isEmptyViewHolder扩展属性去掉inline(public inline 声明访问 internal 类型在 K2 下为编译错误)。无 API 变化。
BaseSingleItemAdapter 不再支持 stateView / emptyView
此前它的 items 恒为空列表,一旦开启 stateView,真实 item 会被空状态布局永久顶替且无任何报错。现在 stateView 设置将被忽略,真实 item 始终显示。如需占位效果,请在 onBindViewHolder 中自行处理 item == null 的情况。
另外,swap() / move() 现在与其它数据变更方法一致,调用将抛出异常(本来也不该对单 item 使用)。
implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.4.2")
升级无破坏性变更,直接替换版本号即可。
Fix Maven consumers failing to compile
Previously recyclerview / annotation were published with implementation, which maps to runtime scope in the POM. Consumers whose projects did not declare recyclerview themselves failed to compile with Cannot access RecyclerView.ViewHolder. They are now exposed as api — no manual workaround needed.
-
Fixed preload silently stopping after
clearBeforeAdapters()/clearAfterAdapters()The load-more preload listeners were not restored to the contentAdapter after clearing the Before/After adapters, so preload never triggered again. -
Fixed
LoadStateAdapterupdate orderloadStateis now updated before notifying, following the Adapter convention, so observers readinggetItemCount()synchronously during a notify no longer see a stale state. -
Fixed Kotlin K2 compilation error Removed
inlinefrom theisEmptyViewHolderextension (public inline declarations accessing internal types are compile errors under Kotlin K2). No API change.
BaseSingleItemAdapter no longer supports stateView / emptyView
Previously, enabling stateView on a BaseSingleItemAdapter permanently replaced the real item with the state layout, silently — because its items is always an empty list. The state view is now ignored and the real item always shows. To show a placeholder, handle item == null yourself in onBindViewHolder.
Also, swap() / move() now throw like the other mutation methods (they never made sense for a single-item adapter).
implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.4.2")
Upgrading is non-breaking — just bump the version.
0.0.51.beta5 版本更新
- 修复DialogFragment模式下存在的多弹窗触摸互转无限递归导致 StackOverflowError问题,感谢 @LiJoeAllen;
- 修复DialogFragment存在的内存泄露风险;
- 通过调整输入框的可见性来修复 MessageDialog 中的键盘异常展示问题;
4.3.0-beta01
- Added setting to control dialog windows position
- Added option to enable layers snapping in Markup Layers tool by #3224
- Added ability to reorder background image in Markup Layers by #3240
- Added option to apply spot heal masks manually by #3231
- Added ability to export/import gradient palettes by #3232
- Added ability to enable semantic images search by #1900
- Fixed PDF crop presets by #3225
- Fixed Samsung DNG handling by #3229
- Fixed delay in toggle tap compare mode by #3242
- Improved UI for large screens
Full Changelog: https://github.com/T8RIN/ImageToolbox/compare/4.2.1-rc01...4.3.0-beta01
0.88.0
- C++: Add
<React/FeatureFlags.h>umbrella header as the public entry point forreact/featureflags(f970054a8a by @j-piasecki) - C++: Add
<React/RendererBridging.h>umbrella header as the public entry point forreact/renderer/bridging(5b680c5f9f by @j-piasecki) - C++: Add
<React/Timing.h>umbrella header as the public entry point forreact/timing(70f172d29f by @j-piasecki) - C++: Added missing mutex include in HostTarget.h (3f8f5c216a by @etodanik)
- EventTarget: Enable the imperative EventTarget API (
addEventListener,removeEventListener,dispatchEvent) on native view refs in canary (8480b86820 by @rubennorte) - Feature Flags: Add
enableImageTransparentTintColorfeature flag (c5bd054983 by @coado) - JavaScript API: Deprecate
'react-native/Libraries/Core/InitializeCore'. Use'react-native/setup-env'instead. (554baba159 by @huntie) - PlatformColor: Support a lazy raw color fallback for PlatformColor when native tokens fail to resolve (65008fcdd0 by @Abbondanzo)
- React Native DevTools: Experimental performance screenshots support and
Page.captureScreenshotis added to theEXPERIMENTALchannel (4be68ef785 by @huntie) - React Native DevTools: Support for inspecting WebSocket events in the Network panel is added to the
CANARYchannel (713ae6b1b9 by @huntie) - React Native DevTools: Users and agents can now capture app screenshots via the
Page.captureScreenshotcommand (00efc0a440 by @huntie) - Text: Add object syntax for
fontVariationSettings(376b99ff14 by @evankatz14) - TypeScript: Add
isInstalled()andclearAllLogs()to theLogBoxTypeScript declarations (a69badd468 by @Abbondanzo) - TypeScript: Add missing strictMode prop to FlatList TypeScript types (3e2403327c by @drhops)
- TypeScript: Add TypeScript declarations for
requestIdleCallbackandcancelIdleCallback(c086431a4b by @Critteros) - VirtualizedList: Add missing ListItemComponent type to VirtualizedList props (5306e9229c by @aravi365)
- Feature Flags: Add
enableMountingCoordinatorPullModelAndroidfeature flag (ece0efe837 by @coado) - Network Inspection: Expose network event reporting to third-party networking stacks as an unstable API (83d0be8958 by @huntie)
- Networking: Send app name and version as the default
User-Agentheader for network requests, matching iOS (04e50d540d by Calvin Liu) - Renderer: Add inert Java plumbing (
PullTransactionMountItem,FabricUIManager.onTransactionAvailable) for the pull model (6515647d94 by @coado) - Renderer: Wire the pull-model mounting path in C++ behind
enableMountingCoordinatorPullModelAndroid(9da1a01153 by @coado) - Text: Add
fontVariationSettingssupport for<Text>(19f7d144b9 by @evankatz14) - TextInput: Add
fontVariationSettingssupport forTextInput(a688608090 by @evankatz14) - TurboModules: Add
ArrayBuffer, the Java representation of a JSArrayBufferfor TurboModules, with an explicit byte-ownership contract (5bb9639594 by Kamil Paradowski) - TurboModules: Add ArrayBuffer support to Java TurboModules (5fb3ebce1a by Kamil Paradowski)
- TurboModules: Borrowed
ArrayBufferbytes are scoped to the synchronous call that received them.ArrayBuffer.bytesandArrayBuffer.sizethrowIllegalStateExceptionafterwards, and aByteBufferalready obtained frombytesis unchecked and reads freed memory, so copy withArrayBuffer.arrayBufferWithCopiedBytesto keep them (d84c13d511 by @christophpurrer)
- Text: Add
fontVariationSettingssupport on iOS (8415753e21 by @evankatz14) - Assets: Use asset catalog for ios images (26769a00b2 by @janicduplessis)
- CocoaPods: Add a
React-cxxstableapidependency to third-party New Architecture pods so they can resolve React Native's C++ API guard headers (d3daf111e0 by @coado) - Legacy Architecture: Allow consumers to opt into
RCT_REMOVE_LEGACY_MODULE_INTEROPandRCT_REMOVE_LEGACY_COMPONENT_INTEROPfrom CocoaPods and SwiftPM. Both default to off and will become the default in a future release (b933d18177 by @christophpurrer) - SceneDelegate: Add SceneDelegate lifecycle support (7bfe32fd33 by @artus9033)
- Styles: Print warning advice when using
shadow*styles without providing a solid background color (eb4d3892ab by @hannojg)
- Babel:
Platform.OSandPlatform.select(...)inlining inreact-native/babel-presetnow requires theinlinePlatformoption in addition toplatform(f63b2a1cb5 by @robhogan) - Babel: Inline
Platform.OSandPlatform.select(...)for React NativePlatformimports during the Babel preset, covering some cases that were previously left un-inlined. (40c06121a1 by @robhogan) - Build: Add React Native Maven pull-through cache fallback for prebuilt artifacts. (3bfb277fec by @coado)
- Events: Enabled Web-based event dispatching refactor (31d33ce91b by @rubennorte)
- Hermes: Bump Hermes to 260318099.0.3 (79024f7c59 by @fabriziocucci)
- Hermes: Bump Hermes to 260318099.0.4 (993be7d6c6 by @fabriziocucci)
- Hermes: Bump hermes-v1 to 260318099.0.1 (b113cf5864 by @fabriziocucci)
- Legacy Architecture: Core components (
ActivityIndicatorView,ModalHostView,PullToRefreshView,SafeAreaView,Switch) no longer report legacyRCT-prefixed names in their view configs (904812016f by @christophpurrer) - Metro: Bump Metro to 0.87.0 (fe511aba7c by @robhogan)
- Metro: Bump the minimum Metro version to 0.87.1, so upgrading projects resolve the same Metro as freshly created ones (f2439a83cf by @robhogan)
- React Native DevTools: When using the fallback flow for launching DevTools (desktop app fails to launch), Microsoft Edge will not be attempted. DevTools will open as a standard window in the default browser. (9efcdfc2b4 by @huntie)
- React: Sync React 19.3.0 into React Native (b0b71421c1 by @rubennorte)
- Runtime:
RuntimeSchedulernow clears pending tasks and rendering updates when a task throws (14184ec643 by @javache) - Runtime: Async
CallInvokerwork is now buffered alongside callable module calls, so it no longer runs before the JS bundle has finished evaluating (3ca6ea3eca by @javache) - Styles: Remove
experimental_prefix frombackgroundSize,backgroundPositionandbackgroundRepeat(7844386bbd by @intergalacticspacehighway) - TypeScript: Allow module augmentation to extend generated props and style types (447ccd1ddb by @zoontek)
- UIManager:
UIManager::startSurfaceandUIManager::setSurfacePropsnow takemoduleNameandpropsby value (85a81818c6 by @javache)
- Dev Server: Removed FileIoHandler packager message handlers (e3598fac12 by @javache)
- Image: ImageProps make
tintColoranstd::optionalto support colortransparent(0) with props 2.0 (f535c97904 by @hannojg) - New Architecture: Deprecate fabricEnabled on ReactFragment (c7d62a125c by @javache)
- Build: Prebuilt artifacts: ReactNativeHeaders is pure-RN; third-party deps headers ship in the new ReactNativeDependenciesHeaders.xcframework sidecar (and the ReactNativeDependencies pod), published standalone to Maven (6aa147f6c9 by @chrfalch)
- CocoaPods: Cache Maven repository requests (artifact existence probes, nightly metadata) during pod install to avoid re-issuing identical requests on every podspec evaluation (88feed55c0 by @coado)
- Dev Server: Declare
RCTBundleURLProviderAllowPackagerServerAccessunconditionally (no-op when packager support is compiled out) (54656471a5 by @ramonclaudio) - Dev Server: Make iOS preserve dev bundle as a temp file on par with Android implementation (e2a4c68449 by @tjzel)
- Legacy Architecture: Compile out
RCTGetModuleClasses/RCTRegisterModuleand skip static module registration when bothRCT_REMOVE_LEGACY_MODULE_INTEROPandRCT_REMOVE_LEGACY_COMPONENT_INTEROPare defined (5d62ca4296 by @christophpurrer) - RNTester: Update RNTester and HelloWorld for SceneDelegate lifecycle behavior (609bdddabf by @artus9033)
- StatusBar: Downgrade RCTStatusBarManager error to a warning when UIViewControllerBasedStatusBarAppearance is YES (9e71c443ac by @shwanton)
- SwiftPM: Download SwiftPM prebuilt artifacts from the React Native Maven mirror first, with Maven Central as fallback (c2dac6abcc by @coado)
- TextInput: Adds localization for Text Input default return key types (507023622b by @cipolleschi)
- InputAccessoryView: Deprecate
InputAccessoryView(102fde7b6b by @zoontek)
- Accessibility: Fix accessibility list role conversion in C++. (aa96fa64d1 by @Abbondanzo)
- Animated:
addListenerfires again for natively drivenAnimatedvalues derived withadd/subtract/multiply/divide/modulo/diffClamp/interpolate(ce621bbd5b by @dennytosp) - Animated: Add
ReactRevisionMergesource to the AnimationBackendCommitHook (ca53751780 by Bartlomiej Bloniarz) - Animated: Perform AnimationEndSync commits on the React revision (7d855222cd by @j-piasecki)
- Babel: Apply normal preset defaults when invoked without a Babel API or options object. (9ad8c830bd by @OskarEichler)
- Babel: Detect trivia-separated React.createClass calls in optimized preset configuration. (619c8aed24 by @OskarEichler)
- Babel: Inline the last duplicate key from static Platform.select object literals. (bbdeb7dc1d by @OskarEichler)
- Babel: Keep private class transforms enabled for profiles that lower classes. (0c0e9f0840 by @OskarEichler)
- Blob: Retain Blob reference in FileReader during pending native reads to prevent premature deallocation by BlobCollector (568eaa6b69 by heecheolman)
- C++: Fixed MSVC compilation of NativeDOM.cpp by removing backticks (e979b0ef8d by @etodanik)
- Codegen: Codegen no longer hangs on type aliases that shadow CodegenTypes member names (42be7452d5 by @sbaiahmed1)
- Codegen: pass the target platform when generating schemas so platform-specific sources (e.g.
NativeModule.ios.ts) resolve correctly (f46ace878a by @Gregoirevda) - Codegen: React-native-codegen build.sh on AppleVirtIOFS volumes (27b5f761b1 by @etodanik)
- Codegen: Run native component codegen when Flow type arguments are separated by trivia. (0d64c9a13a by @OskarEichler)
- DeviceInfo: Refresh
DeviceInfoconstants on each read (9d10e39d32 by @artus9033) - DOM API: Resolve native EventTarget names that overlap Object prototype properties. (621ced78e9 by @OskarEichler)
- EventEmitter: Support EventEmitter event names that overlap Object prototype properties. (790289c1d6 by @OskarEichler)
- FileReader: Fire
loadstart, throwInvalidStateErroron overlapping reads, and exposeFileReader.erroras aDOMException. (544141efab by @Abbondanzo) - FileReader: Keep
FileReaderin the correct state after aborting a read. (e92816c5a5 by @fallintoplace) - Gradients: Fix radial-gradient
at <position>being ignored (and corrupting the size) when it follows an explicit size (66f27eb93e by @Titozzz) - Gradients: Reject percentage radii for circle radial gradients, matching web behavior (5821fcaf5d by @Titozzz)
- Image: Preserve Image source headers when using crossOrigin or referrerPolicy (08c7781e5a by @mfkrause)
- IntersectionObserver: Sort IntersectionObserver threshold arrays numerically. (ee32dfc8b9 by @OskarEichler)
- JavaScript API: Additional Props/Style types are now defined as
interface, fixing compatibility with certain DefinitelyTyped packages (593ae0258d by @huntie) - JavaScript API: Fix requestIdleCallback timeout option being ignored (0a1a06c5ea by @pakerwreah)
- Networking: Fix XMLHttpRequest.setRequestHeader to append duplicate headers per spec (58bf844967 by @zmunm)
- Networking: Preserve buffered and empty Cxx WebSocket frames and serialize writes. (92cd588a5c by @OskarEichler)
- Performance: Round instead of truncate when converting a
DOMHighResTimeStampback to nanoseconds, soHighResTimeStampandHighResDurationround trips are exact (c467843ed0 by @GijsWeterings) - ScrollView: Fix maintainVisibleContentPosition with rapid data updates (https://github.com/react/react-native/issues/53542) (5cb65244dc by @kulkarni-rohan)
- Styles: Fix
transformOriginstring parsing for decimal percentage and pixel values. (0a60ec9dea by @MayankSharma-2812) - Styles: Preserve negative values in
transformOriginstrings. (4501979c1a by @fallintoplace) - StyleSheet: Use cached results for already normalised colors (092734772a by @riteshshukla04)
- Text: Fix Text truncation when string contains NULL character \u0000 (https://github.com/react/react-native/issues/24129) (5906cfb060 by @kulkarni-rohan)
- Text: Prevent Text from mutating the accessibilityState prop (c300f84f2c by @mfkrause)
- TextInput: blur focused input before unregistering it on unmount, fixing the Android soft keyboard staying open after navigating away from a focused input (d13d2b0a5f by @sidorchukandrew)
- TurboModules: Revert the
RCTArrayBuffercodegen change, restoringNSMutableData *for ObjC TurboModule methods that take or return anArrayBuffer. 0.88 is a non-breaking release, and the change stopped modules that adopted ObjCArrayBuffersupport in 0.87 from compiling (639cdedb50, 19a3184981 by @fabriziocucci) - TurboModules: Revert the rejection of
ArrayBufferas a TurboModuleEventEmitterpayload. C++ TurboModules could declareEventEmitter<ArrayBuffer>in 0.87 and it generated working code, so rejecting it at codegen time broke those builds (070af03ab3 by @fabriziocucci) - TurboModules: TurboModule event emitters no longer throw when an event is emitted before the emitter callback is installed (4bf5575490 by @christophpurrer)
- TypeScript: Add missing types for the public
AssetRegistryAPI (b8ec87e457 by @byCedric) - TypeScript: Fix TS2883 when building declaration files for libraries that use
codegenNativeComponentdue to unreachableNativeComponentType<T>(391723e869 by @artus9033) - TypeScript: Restore the
.jsfallback for legacy deep imports of untyped modules, soreact-native/Libraries/*specifiers resolve again under thereact-native-legacy-deep-importscondition (579212e15c by @fabriziocucci) - VirtualizedList: Fix the Metro package-exports warning caused by
react-native/virtualized-listsimporting an unexported React Native subpath (a506ed66cc by @giaBaoJS) - VirtualizedList: Ignore stale viewability updates while enforcing minimum view time (1c4a46f4e3 by @cipolleschi)
- VirtualizedList: Invalidate list content length when orientation changes. (e59a1d252c by @fallintoplace)
- VirtualizedList: Prevent zero-sized lists from reporting viewable items (c057b1fa01 by @Abbondanzo)
- Accessibility: Fix crash when
accessibilityRole="tabbar"is used on Android (a4733b1ca1 by @aravi365) - Accessibility: Properly re-enable a view after
accessibilityState.disabledresets fromtrue, which leftPressablepartly untappable (357b6998c4 by @bigcupcoffee) - Build: Export
jserrorhandlerheaders in thereactnativeprefab so external consumers of cxxreact/ErrorUtils.h can build. (f2a6db9fce by @alanjhughes) - Dev Menu: Persist Change Bundle Location debug server host changes (d2ac190411 by @Phecda)
- Dev Server: Stop dev server WebSockets from throttling bundle downloads and other dev server requests (cc5dd59742 by @javache)
- Gradle: Use the JVM temp dir instead of a hardcoded
/tmpfor the build-from-source container project dirs, fixing Gradle configuration on Windows (908872a68e by @kraenhansen) - i18n: Detect RTL from the active locale instead of an arbitrary installed one (e46189e1e1 by @zoontek)
- Image: Deprecate the
String?overloads ofReactImageManager#setDefaultSourceandReactImageManager#setLoadingIndicatorSource(3a95e0e93c by @hannojg) - Image: Fix
Image.getSize()andImage.getSizeWithHeaders()rejectingdata:URIs (8cfde6d083 by Cole Huntley) - Image: Fix crash when setting a percentage borderRadius on Image (f2a250ad89 by @sbaiahmed1)
- Renderer: Bump androidx.collection to 1.4.4 to fix view registry entries getting lost in
SurfaceMountingManager(d6a5f159c6 by @pawicao) - Renderer: Fix IllegalStateException in SurfaceMountingManager.removeViewAt (3f553d76bc by @cortinico)
- Renderer: Pull model mounting is now deferred until the root attaches (2f5a8332cf by Bartlomiej Bloniarz)
- Runtime: Prevent a startup crash when the WindowMetrics API is missing on an inconsistent Android runtime (3f9cc72309 by @gooddev97)
- Runtime: Report a fatal JS error instead of aborting the process when reading the error's extra data fails (41b375eb04 by generatedunixname1608173377072046)
- Styles: Fix crashes when
outlineColoris provided as a numeric color value (53b933feca by HURRAEY) - Text: Fix Text with adjustsFontSizeToFit being clipped when container height decreases dynamically (63064687e2 by @imsankalp)
- Text: Keep inline views inside Text from shrinking with Android system font scale (551d12a787 by @TorinAsakura)
- TextInput: Ellipsize long single-line TextInput placeholders to match iOS (7f18ad0f84 by @kosmydel)
- TextInput: Show the soft keyboard when a long-press starts text selection in TextInput (9195e52706 by @idoyana)
- View: Resetting border widths no longer clips children in rounded overflow-hidden views. (146aaac7ee by @RealBhupesh)
- ViewManagers: Fix
Doubleprop defaults being rounded to float precision in generatedViewManagerdelegates (2c4278d83b by @dennytosp) - ViewManagers: Fix
RuntimeException: Unrecognized type: class com.facebook.yoga.YogaValuewhen aViewManagerimplements aDimensionValueprop withReactProp(091ac613ce by @dennytosp) - ViewManagers: Fix
RuntimeException: Unrecognized type: class java.lang.Floatwhen aViewManagerimplements a nullable float prop (WithDefault<Float, null>) withReactProp(8d23b14da6 by @dennytosp) - VirtualizedList: Fix ListMetricsAggregator cell metrics not clearing on orientation change and guard against divide-by-zero (3b90423076 by @aarononeal)
- Accessibility: Views with checkbox, radio, combobox, dropdownlist, menuitem, spinbutton, tab, option, searchbox, slider and treeitem roles are now reachable via Full Keyboard Access (05b97de823 by @fkgozali)
- Accessibility: VoiceOver text readout when changing elements asynchronously (082d787a1e by @coolsoftwaretyler)
- Appearance: RCTAppearance.setColorScheme() no longer crashes CarPlay apps when connectedScenes contains a non-UIWindowScene (00a5aa9223 by @SnowingFox)
- Assets: Asset catalog imagesets paired wrong files for assets with non-standard scales (74b984729b by @janicduplessis)
- Blob: Fix intermittent native crash (CoreServices/UTType XPC) in RCTBlobManager when deriving blob names for network responses (671705dfb1 by @1337mus)
- Codegen: Codegen now discovers third-party component libraries without an iOS configuration. (917d97eb12 by @RealBhupesh)
- Codegen: Fixed intermittent "Cycle in dependencies between targets 'ReactCodegen' and ..." Xcode build error that occurred on incremental iOS builds when an app's
codegenConfig.jsSrcsDircontained noNative*/*NativeComponentspec files. (0b0eb8d012 by @Levin-nik) - Codegen: No longer crawls
node_modulesor follows symlinks when discovering components (39751d864d by @gabrieldonadel) - Dev Server: Create the RCTDevSettings packager connection in initWithDataSource so instances built that way also receive packager commands (e71fc4e32f by @alanjhughes)
- DeviceInfo: Refresh
DeviceInfoconstants after interface dimension changes (b743a8a35b by @artus9033) - Hermes: Set
always_out_of_dateon hermes-engine'sReplace Hermesscript phase (d89c432659 by @ramonclaudio) - i18n: Align text to the right by default in RTL when
textAlignis not set, matching Android (1b92b02f99 by @zoontek) - Image: aria-* state props are no longer ignored when accessibilityState is also present (c3caea9b5e by @mdjastrzebski)
- LogBox: Prevent RedBox auto-retry from reloading while backgrounded (b587763f40 by @Abbondanzo)
- PushNotificationIOS: Fix main-thread watchdog hang in PushNotificationIOS.setApplicationIconBadgeNumber (6f6efed3e7 by @christophpurrer)
- ReactHost: Forward
host:didInitializeRuntime:callback to user delegate inRCTReactNativeFactory(98dc7d6423 by @zhongwuzw) - Renderer: Log missing native component registrations on iOS and Android (ef28a2c9d5 by @alanleedev)
- Renderer: Report a
RCTViewComponentViewchild-index mismatch instead of raisingNSRangeExceptionwhile formatting the assert message (1291d7ce8e by @dongdongbh) - Renderer: Reset EmptyLayoutMetrics in RCTViewComponentView prepareForRecycle so recycled views clear UIView.hidden (711a9a5e07 by @kosmydel)
- Runtime: Avoid an unhandled exception in bridgeless
ReactInstance::registerSegmentwhen an on-demand JS segment file is missing from the cache at lazy-load time (fff4994af8 by generatedunixname1608173377072046) - ScrollView: Prevent recycled ScrollViews from retaining automatic keyboard inset behavior. (e0aa7a8b0a by @stareezy-1)
- ScrollView: Programmatic (non-user-initiated) scrolls no longer cancel active touches in enclosing scroll views (06eb1fefab by @tjzel)
- Styles: Render
outlineStyle: 'dotted'and'dashed'on views without border radii (9f31d5ae9f by @neutronm) - SwiftPM: Generated manifests derive their iOS platform floor from the app's
IPHONEOS_DEPLOYMENT_TARGETinstead of hardcoding iOS 15, so dependencies with a higher minimum (e.g. Expo, 16.4) can be autolinked (92564f33fd by @chrfalch) - SwiftPM: Read the SwiftPM name from the podspec and store it in package.json when scaffolding (1cfc5f29a0 by @chrfalch)
- SwiftPM: Run generated build scripts under bash instead of /bin/sh, so they don't break on a host where /bin/sh isn't bash (25f48bd72f by @lazerg)
- SwiftPM: Stop autolinking from recreating library package roots on every sync, which broke Xcode builds of apps using libraries that ship their own
Package.swift(97cc934dc7 by @chrfalch) - SwiftPM: stop baking an absolute, machine-specific HERMES_CLI_PATH into the app's pbxproj; resolve hermesc at build time instead (fcbeda1109 by @chrfalch)
- Switch: Restore
paperComponentName: 'RCTSwitch'to fixtesting-library/react-nativequeries (38fd9d57df by @christophpurrer) - Text: Correctly classify extralight fonts as
UIFontWeightUltraLightinRCTGetFontWeight(3b5d0a6526 by @vonovak) - Text: Prevent the final line or trailing glyph of text from being clipped due to pixel-grid rounding precision loss (5e40a1771e by @fabriziocucci)
- TextInput: Preserve TextInput selection color when changing multiline. (56c284e152 by @fallintoplace)
- TextInput: update the keyboard when
keyboardType/returnKeyTypechange while the input is focused (new architecture parity with the legacy architecture) (0f1bdddfb3 by @NoahDorfman00) - Touch Handling: Fix debug-only crash in RCTSurfaceTouchHandler from UITextView text-selection gestures on iOS 17+ (433e79d2f4 by @hryhoriiK97)
- TurboModules: Include the module and method name in exceptions rethrown from async and void TurboModule calls (253a84c8d1 by @christophpurrer)
- TurboModules: Pass a top-level JS
nullTurboModule argument to Objective-C asnilinstead ofNSNullwhenenableModuleArgumentNSNullConversionIOSis enabled (ea291d7422 by @christophpurrer)
- Dependencies: Fix: upgrade shell-quote to 1.8.4 (CVE-2026-9277) (fea5e11d9c by @anupamme)
Hermes V1 dSYMS:
ReactNativeDependencies dSYMs:
ReactNative Core dSYMs:
You can file issues or pick requests against this release here.
To help you upgrade to this version, you can use the Upgrade Helper ⚛️.
View the whole changelog in the CHANGELOG.md file.
0.88.0-rc.6
Hermes V1 dSYMS:
ReactNativeDependencies dSYMs:
ReactNative Core dSYMs:
You can file issues or pick requests against this release here.
To help you upgrade to this version, you can use the Upgrade Helper ⚛️.
View the whole changelog in the CHANGELOG.md file.
0.88.0-rc.5
This release contains no changes over 0.88.0-rc.4.
Hermes V1 dSYMS:
ReactNativeDependencies dSYMs:
ReactNative Core dSYMs:
You can file issues or pick requests against this release here.
To help you upgrade to this version, you can use the Upgrade Helper ⚛️.
View the whole changelog in the CHANGELOG.md file.