2 days ago
react-native

0.88.0

Added

  • C++: Add <React/FeatureFlags.h> umbrella header as the public entry point for react/featureflags (f970054a8a by @j-piasecki)
  • C++: Add <React/RendererBridging.h> umbrella header as the public entry point for react/renderer/bridging (5b680c5f9f by @j-piasecki)
  • C++: Add <React/Timing.h> umbrella header as the public entry point for react/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 enableImageTransparentTintColor feature 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.captureScreenshot is added to the EXPERIMENTAL channel (4be68ef785 by @huntie)
  • React Native DevTools: Support for inspecting WebSocket events in the Network panel is added to the CANARY channel (713ae6b1b9 by @huntie)
  • React Native DevTools: Users and agents can now capture app screenshots via the Page.captureScreenshot command (00efc0a440 by @huntie)
  • Text: Add object syntax for fontVariationSettings (376b99ff14 by @evankatz14)
  • TypeScript: Add isInstalled() and clearAllLogs() to the LogBox TypeScript declarations (a69badd468 by @Abbondanzo)
  • TypeScript: Add missing strictMode prop to FlatList TypeScript types (3e2403327c by @drhops)
  • TypeScript: Add TypeScript declarations for requestIdleCallback and cancelIdleCallback (c086431a4b by @Critteros)
  • VirtualizedList: Add missing ListItemComponent type to VirtualizedList props (5306e9229c by @aravi365)

Android specific

  • Feature Flags: Add enableMountingCoordinatorPullModelAndroid feature 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-Agent header 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 fontVariationSettings support for <Text> (19f7d144b9 by @evankatz14)
  • TextInput: Add fontVariationSettings support for TextInput (a688608090 by @evankatz14)
  • TurboModules: Add ArrayBuffer, the Java representation of a JS ArrayBuffer for TurboModules, with an explicit byte-ownership contract (5bb9639594 by Kamil Paradowski)
  • TurboModules: Add ArrayBuffer support to Java TurboModules (5fb3ebce1a by Kamil Paradowski)
  • TurboModules: Borrowed ArrayBuffer bytes are scoped to the synchronous call that received them. ArrayBuffer.bytes and ArrayBuffer.size throw IllegalStateException afterwards, and a ByteBuffer already obtained from bytes is unchecked and reads freed memory, so copy with ArrayBuffer.arrayBufferWithCopiedBytes to keep them (d84c13d511 by @christophpurrer)

iOS specific

  • Text: Add fontVariationSettings support on iOS (8415753e21 by @evankatz14)
  • Assets: Use asset catalog for ios images (26769a00b2 by @janicduplessis)
  • CocoaPods: Add a React-cxxstableapi dependency 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_INTEROP and RCT_REMOVE_LEGACY_COMPONENT_INTEROP from 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)

Changed

  • Babel: Platform.OS and Platform.select(...) inlining in react-native/babel-preset now requires the inlinePlatform option in addition to platform (f63b2a1cb5 by @robhogan)
  • Babel: Inline Platform.OS and Platform.select(...) for React Native Platform imports 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 legacy RCT-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: RuntimeScheduler now clears pending tasks and rendering updates when a task throws (14184ec643 by @javache)
  • Runtime: Async CallInvoker work 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 from backgroundSize, backgroundPosition and backgroundRepeat (7844386bbd by @intergalacticspacehighway)
  • TypeScript: Allow module augmentation to extend generated props and style types (447ccd1ddb by @zoontek)
  • UIManager: UIManager::startSurface and UIManager::setSurfaceProps now take moduleName and props by value (85a81818c6 by @javache)

Android specific

  • Dev Server: Removed FileIoHandler packager message handlers (e3598fac12 by @javache)
  • Image: ImageProps make tintColor an std::optional to support color transparent (0) with props 2.0 (f535c97904 by @hannojg)
  • New Architecture: Deprecate fabricEnabled on ReactFragment (c7d62a125c by @javache)

iOS specific

  • 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 RCTBundleURLProviderAllowPackagerServerAccess unconditionally (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/RCTRegisterModule and skip static module registration when both RCT_REMOVE_LEGACY_MODULE_INTEROP and RCT_REMOVE_LEGACY_COMPONENT_INTEROP are 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)

Deprecated

Android specific

Fixed

  • Accessibility: Fix accessibility list role conversion in C++. (aa96fa64d1 by @Abbondanzo)
  • Animated: addListener fires again for natively driven Animated values derived with add/subtract/multiply/divide/modulo/diffClamp/interpolate (ce621bbd5b by @dennytosp)
  • Animated: Add ReactRevisionMerge source 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 DeviceInfo constants 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, throw InvalidStateError on overlapping reads, and expose FileReader.error as a DOMException. (544141efab by @Abbondanzo)
  • FileReader: Keep FileReader in 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 DOMHighResTimeStamp back to nanoseconds, so HighResTimeStamp and HighResDuration round 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 transformOrigin string parsing for decimal percentage and pixel values. (0a60ec9dea by @MayankSharma-2812)
  • Styles: Preserve negative values in transformOrigin strings. (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 RCTArrayBuffer codegen change, restoring NSMutableData * for ObjC TurboModule methods that take or return an ArrayBuffer. 0.88 is a non-breaking release, and the change stopped modules that adopted ObjC ArrayBuffer support in 0.87 from compiling (639cdedb50, 19a3184981 by @fabriziocucci)
  • TurboModules: Revert the rejection of ArrayBuffer as a TurboModule EventEmitter payload. C++ TurboModules could declare EventEmitter<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 AssetRegistry API (b8ec87e457 by @byCedric)
  • TypeScript: Fix TS2883 when building declaration files for libraries that use codegenNativeComponent due to unreachable NativeComponentType<T> (391723e869 by @artus9033)
  • TypeScript: Restore the .js fallback for legacy deep imports of untyped modules, so react-native/Libraries/* specifiers resolve again under the react-native-legacy-deep-imports condition (579212e15c by @fabriziocucci)
  • VirtualizedList: Fix the Metro package-exports warning caused by react-native/virtualized-lists importing 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)

Android specific

  • Accessibility: Fix crash when accessibilityRole="tabbar" is used on Android (a4733b1ca1 by @aravi365)
  • Accessibility: Properly re-enable a view after accessibilityState.disabled resets from true, which left Pressable partly untappable (357b6998c4 by @bigcupcoffee)
  • Build: Export jserrorhandler headers in the reactnative prefab 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 /tmp for 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 of ReactImageManager#setDefaultSource and ReactImageManager#setLoadingIndicatorSource (3a95e0e93c by @hannojg)
  • Image: Fix Image.getSize() and Image.getSizeWithHeaders() rejecting data: 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 outlineColor is 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 Double prop defaults being rounded to float precision in generated ViewManager delegates (2c4278d83b by @dennytosp)
  • ViewManagers: Fix RuntimeException: Unrecognized type: class com.facebook.yoga.YogaValue when a ViewManager implements a DimensionValue prop with ReactProp (091ac613ce by @dennytosp)
  • ViewManagers: Fix RuntimeException: Unrecognized type: class java.lang.Float when a ViewManager implements a nullable float prop (WithDefault<Float, null>) with ReactProp (8d23b14da6 by @dennytosp)
  • VirtualizedList: Fix ListMetricsAggregator cell metrics not clearing on orientation change and guard against divide-by-zero (3b90423076 by @aarononeal)

iOS specific

  • 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.jsSrcsDir contained no Native*/*NativeComponent spec files. (0b0eb8d012 by @Levin-nik)
  • Codegen: No longer crawls node_modules or 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 DeviceInfo constants after interface dimension changes (b743a8a35b by @artus9033)
  • Hermes: Set always_out_of_date on hermes-engine's Replace Hermes script phase (d89c432659 by @ramonclaudio)
  • i18n: Align text to the right by default in RTL when textAlign is 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 in RCTReactNativeFactory (98dc7d6423 by @zhongwuzw)
  • Renderer: Log missing native component registrations on iOS and Android (ef28a2c9d5 by @alanleedev)
  • Renderer: Report a RCTViewComponentView child-index mismatch instead of raising NSRangeException while 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::registerSegment when 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_TARGET instead 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 fix testing-library/react-native queries (38fd9d57df by @christophpurrer)
  • Text: Correctly classify extralight fonts as UIFontWeightUltraLight in RCTGetFontWeight (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/returnKeyType change 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 null TurboModule argument to Objective-C as nil instead of NSNull when enableModuleArgumentNSNullConversionIOS is enabled (ea291d7422 by @christophpurrer)

Security


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 days ago
react-native

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.

5 days ago
TouchImageView

3.7.3

What's Changed

Dependencies

Other Changes

Full Changelog: https://github.com/MikeOrtiz/TouchImageView/compare/3.7.2...3.7.3

7 days ago
GSYVideoPlayer

v14.0.0

GSYVideoPlayer 14.0.0

本版覆盖 v13.2.1..v14.0.0 的全部 27 条提交(含 2 条合并),完整更新说明与逐提交清单见下方链接。

  • IJK / FFmpeg:ex_so 与独立 arm64 / armv7a / x64 使用 FFmpeg n5.1.10 + OpenSSL 3.5.9,FFmpeg/player/SDL 成套重编,补齐 MJPEG、HEVC seek/replay 和 FFmpeg 5 API 兼容修复。
  • TLS / HLS:修复 ARMv7 HTTPS 证书加载崩溃;针对 NDK r22b / Clang 11 修正 OpenSSL 编译选项和缓存身份。嵌套 HLS 与 keepalive 重连保留显式证书、主机名校验和代理配置。
  • 音频:软件变速支持 0.25×–4×,平台倍速支持范围取决于设备;修复重采样、起播、变速引擎排空与切换、EOF 完成和终止错误状态。
  • RTSP / 会话:支持初始化 OPTIONS / DESCRIBE / SETUP / 初次 PLAY 的重定向,透传 timeout(微秒)和传输配置;新增可选直播队列上限,隔离旧会话回调、已排队消息和看门狗。
  • Codec2:保留原解码器选择,Android 10+ 在原选择为空时补充普通硬件 c2.* 解码器筛选,排除纯软件及安全/隧道模式必需解码器。
  • GL 管线与滤镜:新增 FBO 多 pass、高斯模糊、降采样金字塔、Bloom、LUT 调色、保边美颜、Glitch、CRT 和老电视信号干扰;支持 uTime 与额外纹理生命周期,修正旧 shader 并移除多余 glFinish。
  • 折叠屏 Demo:新增 XML / Compose 的 FLAT、BOOK、TABLETOP 布局,处理铰链、旋转、全屏和姿态测试注入,Compose 可运行 Demo 增至 25 个。
  • Compose:修复 #4259 宿主卸载时的资源释放和 #4261 轮询缓冲进度同步;新增动态显示比例 API,补齐 IJK/EXO 缓存切换、缓存命中及缓冲展示。
  • R8 / 工具链:精简 Demo 和 FAQ 的 JNI/反射保留规则;Gradle 8.12、AGP 8.9.1、R8 9.4.14,新增 13 个接入 skills,CI 纳入会话与 Compose 回归。

升级说明: 默认整包与 gsyvideoplayer-ex_so 包含 arm64-v8a / armeabi-v7a / x86_64 三个 ABI。迁移后的独立 ABI 模块与整包使用相同编解码配置,按 ABI 和包体积选择;旧 armeabi / x86 仅按需通过独立模块提供,未升级到 FFmpeg 5。Compose、投屏与 AliPlayer 为可选模块,核心最低 API 23,投屏模块要求 API 26。

implementation "io.github.carguo:gsyvideoplayer:14.0.0"

Maven Central 使用 io.github.carguo,GitHub Packages 使用 com.shuyu。2026-10-10 已核验 Maven Central 的全部 15 个模块 POM / AAR 可以公开下载。

发布验证: Debug/Release(含 R8)、48 项会话回归、36 次单测执行(18 个独立用例 × 两种构建)、双渠道本地发布和三 ABI 静态/打包检查通过。原受影响的 Redmi M2104K10AC / API 33 上,最终 ARMv7 与 ARM64 各通过独立 CA 加载及 15 项 GSY/JNI 播放检查,覆盖 HTTPS、嵌套 HLS 错误 CA/SAN 拒绝、RTSP 初始化重定向、seek/完成、倍速和重采样。

当前 x86_64 与 16 KiB 页设备运行、硬解画面及新库完整声学回归仍未覆盖;当前设备检查使用静音输出且不设置视频 Surface。注入姿态矩阵不替代实体折叠屏传感器验收,历史旧库证据不替代最终发布库的验证。

文档校正(2026-10-10): 下列链接固定到补齐 27 条提交说明后的文档提交 04a03656;v14.0.0 tag、代码与 APK 身份保持不变。

中文完整更新说明 · English changelog · 27 条提交与源码/产物核对 · 回归范围与历史对照

Full Changelog: v13.2.1...v14.0.0

7 days ago
ImageToolbox

4.2.1-rc01

What's Changed

  • Added support for JPEG XL-compressed DNG files by #3167
  • Added ability to disable padding for shapes in markup layers by #3174
  • Added error informing for pdf tools
  • Added undo/redo to collage maker by #3177
  • Added presets to Crop PDF tool by #3176
  • Added ability to add WIFI network from QR code by #3190
  • Added ability to choose scale direction in image stitching by #3207
  • Added ability to group and sort images in embedded picker by #3201
  • Added ability to save color as image by #3201
  • Added Screenshot Framing tool
  • Added ability to export animated before/after GIF in compare tool
  • Fixed raw development rotation maintaining by #3168
  • Fixed removing of image in some tools by #3209
  • Fixed saving of new images when overwrite files enabled by #3170
  • Fixed link extraction by #3189
  • Fixed document scanner crash by #3203
  • Improved image stitching algorithm by #3187
  • Improved Collage Maker output image quality by #3188
  • Improved EXIF deletion tool by #3210
  • Improved UI

Full Changelog: https://github.com/T8RIN/ImageToolbox/compare/4.2.1-alpha02...4.2.1-rc01

11 days ago
react-native

0.88.0-rc.4

Changed

  • TypeScript: Allow module augmentation to extend generated props and style types (447ccd1ddb by @zoontek)

Fixed

Android specific

  • Accessibility: Properly re-enable a view after accessibilityState.disabled resets from true, which left Pressable partly untappable (357b6998c4 by @bigcupcoffee)

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.

18 days ago
MPAndroidChart

MPAndroidChart 4.0.1

Fixes and small additions for MPAndroidChart 4.0. A drop-in update from 4.0.0: no API was removed or changed.

implementation("com.github.PhilJay.MPAndroidChart:MPChartLib:v4.0.1")
implementation("com.github.PhilJay.MPAndroidChart:MPChartCompose:v4.0.1") // only for Compose

Fixed

  • A tap inside a bar of a combined chart selects the bar instead of a nearby line point (#5207).
  • In a bar chart whose grouped data sets use different y axes, a tap selects the bar that was touched (#5292).
  • Limit line labels at the edge of the content area are no longer cut off (#5328).
  • Auto scaling also rescales a y axis that is disabled (#5258).
  • Charts can be built on a thread without a Looper, for example with an asynchronous layout inflater (#5241).
  • The default value formatter no longer rebuilds its number format when the number of decimals stays the same (#5217).

New

  • YAxis.labelRotationAngle rotates the y axis labels (#5213).
  • Pie entry labels and values with a line break are drawn as several lines (#5205).
  • PieChart.isRoundedSlicesReversed rounds the slice ends the other way around (#5206).
  • PieChart.isTransparentCircleClippedToSlices draws the translucent ring only over the slices, so the space between slices stays open (#5348).
  • chart.toBitmap(width, height) draws a chart at any size, also one that was never laid out, for example to export an image (#4664).

The guides cover all additions, and CHANGELOG.md lists every change.

19 days ago
react-native

0.88.0-rc.3

Changed

  • Hermes: Bump to 260318099.0.4, which avoids a quadratic reserve() in ConsecutiveStringStorage during lazy compilation (993be7d6c6 by @fabriziocucci)

Fixed

  • Metro: Fix the package-exports warning caused by react-native/virtualized-lists importing an unexported React Native subpath (a506ed66cc by @giaBaoJS)

Android specific

  • SurfaceMountingManager: Bump androidx.collection to 1.4.4 to fix view registry entries getting lost (d6a5f159c6 by @pawicao)

iOS specific

  • 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)

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.

21 days ago
MPAndroidChart

MPAndroidChart 4.0.0

MPAndroidChart 4.0 is here: the library rewritten from the ground up in Kotlin, with a Jetpack Compose module. It is the first stable release since 3.1.0.

📖 Guides and documentation: philjay.cc/mpandroidchart · 35 chapters from a first chart to theming, Compose, custom renderers and troubleshooting.

New in 4.0

  • Kotlin first. Properties instead of getter and setter pairs, lambdas for formatters and listeners (chart.onValueSelected { entry, highlight -> }), typed entry payloads, lists instead of arrays. Java callers keep working.
  • Jetpack Compose. The new MPChartCompose module: a composable for every chart type, ChartState to read and drive a chart, and markers written as composables.
  • Animated data changes. animateDataChange(newData) moves every value smoothly to its new one, and animateValue(entry, toY) animates a single value. Every animation takes an onEnd callback, and isAnimating and stopAnimations() are new. In Compose, animateChanges = true animates new data automatically.
  • Empty and loading states. A modern empty state with an outline of the chart type instead of the old yellow text, and isLoading for data that is still on its way. Everything about it can be customized.
  • New styling. Rounded bars and stacked sections, rounded radar corners, a ring around the highlighted point, and highlight lines that can stop at the entry.
  • Robust. Tested against NaN, Infinity, empty data and 100,000 entries, inside RecyclerView and LazyColumn, across rotation and with leak checks. More than 40 reported issues are fixed.

Faster

  • Lines draw about 1.2x faster than in 3.1.0, and bars 1.6x faster with the new isDecimationEnabled, which drops entries that share a pixel column.
  • A zoomed-in bar chart builds only the bars on screen: 2.5 ms per frame with 500 bars in view, whether the data holds 10,000 or 300,000.
  • Line circles that would cover each other are skipped, and crowded candles are thinned out, so 100,000 entries draw in well under a second with default settings.

The performance chapter has all measurements.

Get it

// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        maven("https://jitpack.io")
    }
}

// build.gradle.kts
dependencies {
    implementation("com.github.PhilJay.MPAndroidChart:MPChartLib:v4.0.0")
    implementation("com.github.PhilJay.MPAndroidChart:MPChartCompose:v4.0.0") // only for Compose
}

minSdk 23 · compileSdk 35 (37 for Compose) · Java 17 · Kotlin 2.0 or newer. The getting started guide takes you from here to a first chart.

Upgrading

  • From 3.x: class, package and interface names are unchanged, so imports survive and call sites change. The migration guide and MIGRATION.md cover every step. Projects on the 3.x coordinates keep building untouched.
  • Staying on 3.x? Nothing changes for you. 3.2.0 is the last Java release with every fix from 3.x; coming from 3.1.0 it needs small formatter changes, which its notes list. The code lives on the 3.x branch.
  • From 4.0.0-beta01: scatter shape sizes and ComposeMarker.offset are now in dp, centerTextSizePixels is gone, PieData.dataSet is nullable and LargeValueFormatter.suffix is a list.

CHANGELOG.md lists every change. Thanks to everyone who reported issues and sent pull requests over the years.

21 days ago
MPAndroidChart

Version 3.2.0

The last release of the Java 3.x line. It packages everything merged into master since 3.1.0 as a stable, pinned version.

implementation 'com.github.PhilJay:MPAndroidChart:v3.2.0'

Same coordinates as before, Java API, minSdk 14.

Should you upgrade?

  • On master-SNAPSHOT or a recent master commit: yes, switch to v3.2.0 now. It is exactly the code you use today, and master moves to the Kotlin rewrite with 4.0.0.
  • On 3.0.x: yes. The formatter API is the same as in 3.0.x, and you get the fixes and additions below.
  • On 3.1.0: only if you are ready to adjust your formatters. 3.2.0 goes back to the formatter interfaces of 3.0.x, so code that extends ValueFormatter no longer compiles (see below). Staying on 3.1.0 is fine, and 4.0.0 is the way forward.

Breaking changes compared to 3.1.0

  • ValueFormatter is gone. Implement IValueFormatter for values and IAxisValueFormatter for axes instead, as in 3.0.x:
    xAxis.setValueFormatter((value, axis) -> "M" + (int) value);
    dataSet.setValueFormatter((value, entry, dataSetIndex, viewPortHandler) -> value + " kg");
  • PercentFormatter(PieChart) is replaced by new PercentFormatter() together with pieChart.setUsePercentValues(true).
  • Gradients moved to bars. setGradientColor(start, end) and setGradientColors(...) now live on BarDataSet, where setGradientColors takes Fill objects; getGradientColor() becomes getFill(index).
  • IPieDataSet.isUsingSliceColorAsValueLineColor() is now isUseValueColorForLineEnabled().
  • Custom renderers: drawValue receives the formatter and entry again: drawValue(Canvas, IValueFormatter, value, entry, dataSetIndex, x, y, color).

New

  • Fill for bar colors: solid colors, gradients and drawables, via BarDataSet.setFills(...). GradientColor remains as a deprecated subclass of Fill.
  • Combined charts: highlightValue(x, dataSetIndex, dataIndex) highlights an entry inside one of the combined data objects.
  • Pie charts: PieDataSet.setHighlightColor(...), and setUseValueColorForLine(true) to draw each value line in its slice color.
  • Axes: setAxisMinLabels / setAxisMaxLabels to change the allowed label count range, and YAxis.setLabelXOffset(...).
  • Drawing: setClipDataToContent(false) lets data draw outside the content rectangle.
  • No data text: setNoDataTextAlignment(...) aligns it left, center or right.
  • Data sets: getEntries() / setEntries() replace getValues() / setValues(), which stay as deprecated aliases.
  • Filtering: ApproximatorN.reduceWithDouglasPeucker(points, resultCount) reduces a line to a target number of points.

Fixed

  • A crash with solid colors in bar charts (#4802).
  • An index out of bounds crash in stacked bar charts.
  • Axis labels that disappeared while zooming in, and a race around the label interval.
  • A pie slice without highlight enabled was hidden when highlighted.
  • An unexpected dashed line during linear line animations.
  • Bubbles drawn with the color of the wrong entry, and the wrong axis used for legend spacing in horizontal bar charts.
  • The axis dependency is now respected in combined charts, and horizontal bar charts get correct negative offsets.
  • onChartScale is now called after a double tap zoom.
  • The legend height now includes its last line of labels.
  • Clearing a data set now resets its min and max.
  • The project builds with current Android Studio versions (#5456).

What's next

MPAndroidChart 4.0.0 follows right after this release: a complete rewrite in Kotlin with a Jetpack Compose module, new coordinates and extensive guides at philjay.cc/mpandroidchart. Projects on 3.x are not affected until they choose to migrate, and the migration guide walks through every step. The 3.x code stays available on the 3.x branch.

Thanks to everyone who contributed fixes and features to 3.x: @danielgindi, @oatrice, @duchampdev, @UrielFrankel, @nathan-fiscaletti and many others.