Repository navigation
v3.0.0
Major Changes
-
#12
b5493b4Thanks @longphung! - Rewrote the Android native module in Kotlin using the Expo Modules API, replacing the classicReactPackage/ReactContextBaseJavaModuleregistration. JSch remains the underlying SSH/SFTP library and the public JS API is unchanged. One incidental fix:connectSFTPno longer marks the stream active on a failed connect.Breaking: the Android toolchain was bumped to what the Expo Modules Gradle plugin requires, and the library now depends on
expo-modules-corefor autolinking (see the iOS changeset in this same release for the full peer dependency change). Consumers needexpoinstalled (as an optional dependency purely for autolinking infrastructure if not already using Expo) and their Android toolchain updated accordingly. -
#12
b5493b4Thanks @longphung! - Rewrote the iOS native module in Swift using the Expo Modules API, replacing NMSSH with Citadel (a pure-Swift SSH/SFTP library built on swift-nio-ssh), vendored as a static XCFramework built at publish time. This fixes SSH connections dropping on a Wi-Fi/cellular network handover: the connection is now explicitly built onNIOTSEventLoopGroup(Apple's Network.framework), instead of a plain POSIX-socket event loop that doesn't observe network path changes.sftpChmod,getKeyDetails, andgenerateKeyPairare now implemented on iOS (previously Android-only or unimplemented);generateKeyPaircurrently supports Ed25519 only.Breaking:
- iOS 18.0+ is now required (up from iOS 11) - needed for Swift's Task Executor Preference (SE-0417), which the Citadel-based connection handling relies on for the network-handover fix above.
- tvOS support is dropped.
- No more manual
Podfileedit for iOS - resolution is now automatic via the podspec's vendored XCFramework and Expo autolinking. Remove any existingpod 'NMSSH', ...line from yourPodfile. expo-modules-coreis now a required peer dependency on both platforms (both native modules are Expo Modules now);expoitself remains an optional peer dependency, needed only for its autolinking infrastructure in bare React Native apps.
The public JS API (
SSHClient's methods, event names/shapes) is unchanged.