diff --git a/android/app/build.gradle b/android/app/build.gradle
index e3da57bb9..95628ac2f 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -144,7 +144,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode VERSIONCODE as Integer
- versionName "4.17.0"
+ versionName "4.18.0"
vectorDrawables.useSupportLibrary = true
if (!isFoss) {
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]
diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj
index bbebd2ee7..2c24aa093 100644
--- a/ios/RocketChatRN.xcodeproj/project.pbxproj
+++ b/ios/RocketChatRN.xcodeproj/project.pbxproj
@@ -1694,7 +1694,7 @@
INFOPLIST_FILE = NotificationService/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
- MARKETING_VERSION = 4.17.0;
+ MARKETING_VERSION = 4.18.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
@@ -1731,7 +1731,7 @@
INFOPLIST_FILE = NotificationService/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
- MARKETING_VERSION = 4.17.0;
+ MARKETING_VERSION = 4.18.0;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
PRODUCT_NAME = "$(TARGET_NAME)";
diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist
index 4357a8abb..bc30c1441 100644
--- a/ios/RocketChatRN/Info.plist
+++ b/ios/RocketChatRN/Info.plist
@@ -23,7 +23,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 4.17.0
+ 4.18.0
CFBundleSignature
????
CFBundleURLTypes
diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist
index e38798d73..5db7e5aef 100644
--- a/ios/ShareRocketChatRN/Info.plist
+++ b/ios/ShareRocketChatRN/Info.plist
@@ -21,7 +21,7 @@
CFBundlePackageType
XPC!
CFBundleShortVersionString
- 4.17.0
+ 4.18.0
CFBundleVersion
1
KeychainGroup
diff --git a/package.json b/package.json
index 7e0e5d6da..f338cbadb 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "rocket-chat-reactnative",
- "version": "4.17.0",
+ "version": "4.18.0",
"private": true,
"scripts": {
"start": "react-native start",
diff --git a/patches/react-native+0.63.4.patch b/patches/react-native+0.63.4.patch
new file mode 100644
index 000000000..efadfe80b
--- /dev/null
+++ b/patches/react-native+0.63.4.patch
@@ -0,0 +1,55 @@
+diff --git a/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js b/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js
+index c344ac4..479c8c0 100644
+--- a/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js
++++ b/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js
+@@ -1244,9 +1244,17 @@ class ScrollView extends React.Component {
+ // Note: we should split props.style on the inner and outer props
+ // however, the ScrollView still needs the baseStyle to be scrollable
+ const {outer, inner} = splitLayoutProps(flattenStyle(props.style));
++
++ // Workaround for RefreshControl inverted: https://github.com/facebook/react-native/issues/30034
++ let inverted;
++ if (inner.scaleY) {
++ inverted = { scaleY: -1 };
++ delete inner.scaleY;
++ }
++
+ return React.cloneElement(
+ refreshControl,
+- {style: [baseStyle, outer]},
++ {style: [baseStyle, outer, inverted]},
+