<commit_before># Changelog
# 6.0.0
This release changes how layout.backgroundColor work on iOS to add parity with Android.
* layout.backgroundColor - applies background color to parent layouts (Stack, BottomTabs, SideMenu etc)
* layout.componentBackgroundColor - applies background color only to components

## Fixed
### Android
* Fix custom push animations not working [#c9232cb](https://github.com/wix/react-native-navigation/commit/c9232cb9e49e02cd1975d16de01fa2a6186032b0) by [guyca](https://github.com/guyca)
### iOS
* Remove draw behind deprecation [#950642d](https://github.com/wix/react-native-navigation/commit/950642d48b2ec67f510ae6b3eefaaeb1ebfcf43d) by [yogevbd](https://github.com/yogevbd)
* Fix layout.backgroundColor being applied to components, it's now applied to parent layouts  [#950642d](https://github.com/wix/react-native-navigation/commit/950642d48b2ec67f510ae6b3eefaaeb1ebfcf43d) by [yogevbd](https://github.com/yogevbd)
* Implement layout.componentBackgroundColor which is applied only to component ViewControllers [#950642d](https://github.com/wix/react-native-navigation/commit/950642d48b2ec67f510ae6b3eefaaeb1ebfcf43d) by [yogevbd](https://github.com/yogevbd)

# 5.1.1
## Fixed
### iOS
* Apply extendedLayoutIncludesOpaqueBars true on all viewControllers (this commit was originally added to v4 and was left out of v5 my mistake) [#9fefeca](https://github.com/wix/react-native-navigation/commit/9fefeca9be9844fc80f839a532c97f5c4fa1d299)
### Android
* Fix crash when mergeOptions were called before stack view was created [#defc2aa](https://github.com/wix/react-native-navigation/commit/defc2aaa6e7c845c05cabe8c5753cc6a68ab5830) by [guyca](https://github.com/guyca)

# 5.1.0
## Added
### iOS
* Add window.backgroundColor option [#c99ecf9](https://github.com/wix/react-native-navigation/commit/c99ecf9b145f453a9674c965d1634bcdece973b6) by [yogevbd](https://github.com/yogevbd)

# 5.0.0
This release is focuses on shared element transition and on improving the installation process of the library.

## Upgrading from V4
### Remove missingDimensionStrategy from app/build.gradle
Since RNN supports multiple react-native versions, the library has multiple flavors, each targeting a different RN version. We now chose the appropriate flavor based on the react-native version installed in node_modules.
```diff
-missingDimensionStrategy "RNN.reactNativeVersion", "reactNativeXX" // Where XX is the minor number of the react-native version you're using
```

### Declare Kotlin version in build.gradle
We're starting to migrate RNN to Kotlin. All new code is written in Kotlin and existing code will be gradually converted to Kotlin. This requires you to declare the Kotlin version you're using in your project.
```diff
buildscript {
    ext {
+        kotlinVersion = "1.3.61" // Or any other kotlin version following 1.3.x
+        RNNKotlinVersion = kotlinVersion
+        RNNKotlinStdlib = "kotlin-stdlib-jdk8"
    }
    dependencies {
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"    
    }
}
```

### Update MainApplication.java
In an effort to simplify RNN's integrations process as much as possible, we're minimizing the changes required to both MainApplication and MainActivity.
```diff
+import com.facebook.react.PackageList;

public class MainApplication extends NavigationApplication {
-    @Override
-    protected ReactNativeHost createReactNativeHost() {
-    return new NavigationReactNativeHost(this) {  
+    private final ReactNativeHost mReactNativeHost =
            new NavigationReactNativeHost(this) {
                @Override
                protected String getJSMainModuleName() {
                    return "index";
                }

+                @Override
+                public boolean getUseDeveloperSupport() {
+                    return BuildConfig.DEBUG;
+                }

+                @Override
+                public List<ReactPackage> getPackages() {
+                    ArrayList<ReactPackage> packages = new PackageList(this).getPackages();
+                    return packages;
+                }
+            }
-    }

+    @Override
+    public ReactNativeHost getReactNativeHost() {
+        return mReactNativeHost;
+    }

-    @Override
-    public boolean isDebug() {
-        return BuildConfig.DEBUG;
-    }

-    @Nullable
-    @Override
-    public List<ReactPackage> createAdditionalReactPackages() {
-        List<ReactPackage> packages = new ArrayList<>();
-        return packages;
-    }
}
```

### Update settings.gradle
Since RNN now supports auto linking, declaring the dependency manually is no longer needed.
```diff
-include ':react-native-navigation'
-project(':react-native-navigation').projectDir = new File(rootProject.projectDir, '../../lib/android/app/')
```

### Make sure your app supports auto linking
#### Update `app/build.gradle`
Add these lines to the bottom of your `app/build.gradle` file.
```diff
+apply from: file("../../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle")
+applyNativeModulesAppBuildGradle(project)
```
#### Update `settings.gradle`
```diff
include ':app'
+include ':react-native-navigation'
+project(':react-native-navigation').projectDir = new File(rootProject.projectDir, '../../lib/android/app/')
```

### Remove RNN pod from podspec
As RNN is now autolinked, remove its pod from your podspec file. This will ensure the correct version is linked when running `pod install`
```diff
- pod 'ReactNativeNavigation', :podspec => '../node_modules/react-native-navigation/ReactNativeNavigation.podspec'
```

## Breaking Changes
### Modal animation parity
show and dismiss animation api have been fixed and are now in parity with Android api.
If you've defined a custom modal animation, you can now consolidate the animation declarations.

<table><commit_msg>Fix misleading upgrade instructions in changelog<commit_after># Changelog
# 6.0.0
This release changes how layout.backgroundColor work on iOS to add parity with Android.
* layout.backgroundColor - applies background color to parent layouts (Stack, BottomTabs, SideMenu etc)
* layout.componentBackgroundColor - applies background color only to components

## Fixed
### Android
* Fix custom push animations not working [#c9232cb](https://github.com/wix/react-native-navigation/commit/c9232cb9e49e02cd1975d16de01fa2a6186032b0) by [guyca](https://github.com/guyca)
### iOS
* Remove draw behind deprecation [#950642d](https://github.com/wix/react-native-navigation/commit/950642d48b2ec67f510ae6b3eefaaeb1ebfcf43d) by [yogevbd](https://github.com/yogevbd)
* Fix layout.backgroundColor being applied to components, it's now applied to parent layouts  [#950642d](https://github.com/wix/react-native-navigation/commit/950642d48b2ec67f510ae6b3eefaaeb1ebfcf43d) by [yogevbd](https://github.com/yogevbd)
* Implement layout.componentBackgroundColor which is applied only to component ViewControllers [#950642d](https://github.com/wix/react-native-navigation/commit/950642d48b2ec67f510ae6b3eefaaeb1ebfcf43d) by [yogevbd](https://github.com/yogevbd)

# 5.1.1
## Fixed
### iOS
* Apply extendedLayoutIncludesOpaqueBars true on all viewControllers (this commit was originally added to v4 and was left out of v5 my mistake) [#9fefeca](https://github.com/wix/react-native-navigation/commit/9fefeca9be9844fc80f839a532c97f5c4fa1d299)
### Android
* Fix crash when mergeOptions were called before stack view was created [#defc2aa](https://github.com/wix/react-native-navigation/commit/defc2aaa6e7c845c05cabe8c5753cc6a68ab5830) by [guyca](https://github.com/guyca)

# 5.1.0
## Added
### iOS
* Add window.backgroundColor option [#c99ecf9](https://github.com/wix/react-native-navigation/commit/c99ecf9b145f453a9674c965d1634bcdece973b6) by [yogevbd](https://github.com/yogevbd)

# 5.0.0
This release is focuses on shared element transition and on improving the installation process of the library.

## Upgrading from V4
### Remove missingDimensionStrategy from app/build.gradle
Since RNN supports multiple react-native versions, the library has multiple flavors, each targeting a different RN version. We now chose the appropriate flavor based on the react-native version installed in node_modules.
```diff
-missingDimensionStrategy "RNN.reactNativeVersion", "reactNativeXX" // Where XX is the minor number of the react-native version you're using
```

### Declare Kotlin version in build.gradle
We're starting to migrate RNN to Kotlin. All new code is written in Kotlin and existing code will be gradually converted to Kotlin. This requires you to declare the Kotlin version you're using in your project.
```diff
buildscript {
    ext {
+        kotlinVersion = "1.3.61" // Or any other kotlin version following 1.3.x
+        RNNKotlinVersion = kotlinVersion
+        RNNKotlinStdlib = "kotlin-stdlib-jdk8"
    }
    dependencies {
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"    
    }
}
```

### Update MainApplication.java
In an effort to simplify RNN's integrations process as much as possible, we're minimizing the changes required to both MainApplication and MainActivity.
```diff
+import com.facebook.react.PackageList;

public class MainApplication extends NavigationApplication {
-    @Override
-    protected ReactNativeHost createReactNativeHost() {
-    return new NavigationReactNativeHost(this) {  
+    private final ReactNativeHost mReactNativeHost =
            new NavigationReactNativeHost(this) {
                @Override
                protected String getJSMainModuleName() {
                    return "index";
                }

+                @Override
+                public boolean getUseDeveloperSupport() {
+                    return BuildConfig.DEBUG;
+                }

+                @Override
+                public List<ReactPackage> getPackages() {
+                    ArrayList<ReactPackage> packages = new PackageList(this).getPackages();
+                    return packages;
+                }
+            }
-    }

+    @Override
+    public ReactNativeHost getReactNativeHost() {
+        return mReactNativeHost;
+    }

-    @Override
-    public boolean isDebug() {
-        return BuildConfig.DEBUG;
-    }

-    @Nullable
-    @Override
-    public List<ReactPackage> createAdditionalReactPackages() {
-        List<ReactPackage> packages = new ArrayList<>();
-        return packages;
-    }
}
```

### Update settings.gradle
Since RNN now supports auto linking, declaring the dependency manually is no longer needed.
```diff
-include ':react-native-navigation'
-project(':react-native-navigation').projectDir = new File(rootProject.projectDir, '../../lib/android/app/')
```

### Make sure your app supports auto linking
#### Update `app/build.gradle`
Add these lines to the bottom of your `app/build.gradle` file.
```diff
+apply from: file("../../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle")
+applyNativeModulesAppBuildGradle(project)
```
#### Update `settings.gradle`
```diff
+apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle")
+applyNativeModulesSettingsGradle(settings)
include ':app'
```

### Remove RNN pod from podspec
As RNN is now autolinked, remove its pod from your podspec file. This will ensure the correct version is linked when running `pod install`
```diff
- pod 'ReactNativeNavigation', :podspec => '../node_modules/react-native-navigation/ReactNativeNavigation.podspec'
```

## Breaking Changes
### Modal animation parity
show and dismiss animation api have been fixed and are now in parity with Android api.
If you've defined a custom modal animation, you can now consolidate the animation declarations.

<table>
{'fraction_non_alphanumeric': 0.1027846376564762, 'fraction_numerical': 0.0337222174912714, 'mean_word_length': 3.922045264040235, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 17, 'https://': 26, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7336870', 'n_tokens_mistral': 3698, 'n_tokens_neox': 3368, 'n_words': 960}