Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3 alpha [05/08 alpha.11 published] #5228

Closed
5 tasks done
guyca opened this issue Jun 23, 2019 · 96 comments · Fixed by #5372
Closed
5 tasks done

v3 alpha [05/08 alpha.11 published] #5228

guyca opened this issue Jun 23, 2019 · 96 comments · Fixed by #5372

Comments

@guyca
Copy link
Collaborator

guyca commented Jun 23, 2019

3.0.0-alpha.11

Changes

Updating from v2

v3 is currently in alpha. To update simply npm install 3.0.0-alpha.11 - npm install --save react-native-navigation@3.0.0-alpha.11.
Breaking changes are outlined below.

Layout system changes on Android

  • Parent layouts (BottomsTabs, Stack, SideMenu) are always laid out behind the StatusBar.
  • Components (component and externalComponent) are measured and offset according to the StatusBar.

In this release, We're changing the layout system in order to provide better support for immersive and full screen apps. In this release we've improved support for drawing behind the StatusBar, next we'll address drawing behind the NavigationBar.

Use the drawBehind and translucent options to control the StatusBar

statusBar: {
  drawBehind: true,  // will draw a screen behind the StatusBar
  translucent: true // Usually you'll want to have drawBehind: true when this is true
}

While this isn't a breaking API change - there are a few breaking side effects.

How will my app be effected

  1. When the keyboard is opened, BottomTabs will now be drawn behind the keyboard and won't shift upwards. This is in parity with the current behaviour in iOS. For the most part, this isn't a breaking change. Toggling BottomTabs when TextInput's focus changes won't be needed anymore.

  2. Update: Fixed in 3.0.0-alpha.1
    If you've specified a custom TopBar animation which animates y or translationY properties, you'll need to compensate for the TopBar's topMargin. This is a temporary solution and will be addressed in one of the next alpha releases.
    For example:

const statusBarHeight = getStatusBarHeight();
const topBarHeight = getTopBarHeight();
...
pop: {
  topBar: {
    enabled: true,
    y: {
      duration: 300,
      from: statusBarHeight,
      to: -topBarHeight + statusBarHeight
    }
  }
}
  1. While parent controllers are drawn behind the StatusBar, their background isn't.
    This means that when transitioning from a destinations drawn under the StatusBar to a destination drawn behind it, the application's default background color will be visible behind the StatusBar.
    If you application's theme is dark, you might want to change the windowBackground property to mitigate this:

Add the following to your application's style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@color/backgroundColor</item>
    </style>

    <!--This is your application's default background color.
    It will be visible when the app is first opened (while the splash layout is visible)
    and when transitioning between a destination a screen drawn under the StatusBar to
    a destination drawn behind it-->
    <item name="backgroundColor" type="color">#f00</item>
</resources>

AndroidX migration

We've migrated RNN to AndroidX, please follow migration instructions in the react-native repo.

Removed SyncUiImplementation

SyncUiImplementation was used to overcome a bug in RN's UiImplementation. This workaround was added to RN's UiImplementation in RN 0.60 (thanks @SudoPlz) and can be removed from RNN.

If you're using SyncUiImplementation your app will fail to compile after upgrading to v3. Simply remove the following code from your MainApplication.java

- import com.facebook.react.uimanager.UIImplementationProvider;
- import com.reactnativenavigation.react.SyncUiImplementation;


- @Override
- protected UIImplementationProvider getUIImplementationProvider() {
-     return new SyncUiImplementation.Provider();
- }

BottomTab badge and dot indicator are not animated by default on Android (parity with iOS)

Showing and hiding badge and dot indicator are now not animated by default. Badge animation is now controlled with the bottomTab.animateBadge property and dot indicator with bottomTab.dotIndicator.animate property.

The following option will show a badge with animation

bottomTab: {
  badge: 'new,
  animateBadge: true
}

The following option will show a dot indicator with animation

bottomTab: {
  dotIndicator: {
    visible: true,
    animate: true
  }
}
@guyca guyca pinned this issue Jun 23, 2019
@syedabuthahirm
Copy link

HI @guyca can you look at TopTabs issues.
Currently V2 TopTabs doesn't support following options compared to v1.

  • selectedTopTabIndicatorHeight

  • selectedTopTabIndicatorColor

  • topTabsScrollable

  • topTabsHeight

Related Issues #5213, #5202, #4485, #5072.

Can we resolve this in V3?

@mayconmesquita
Copy link
Contributor

@guyca would be nice have topTabs working in this v3.
I'm using a cross solution provided by Native Base, but has a poor perfomance.

By the way, great work you doing here!

@Crisis2010
Copy link

Hi, @guyca! Can you please look at iOS issues with topBar, especially with largeTitle enabled.
There is too many bug with it, with merge options and animations. I showed some of them in issue #5145.

Thanks!

@t1amat9409
Copy link

@mayconmesquita I stopped using Native Base for that same reason... Now I'm relying on react-navigation for tabs, and mixing the two isn't a good practice I think... and the performance is just a piece of junk...

@Crisis2010
Copy link

And how about add feature not to hide topBar like hideOnScroll option but just change opacity on scrolling down from 0 (transparent) to 100%?

@guyca
Copy link
Collaborator Author

guyca commented Jun 24, 2019

TopTabs - I'm terribly sorry for our lack of support for this component. We're just not getting to it. If anyone would like to take ownership of it please contact me.
Our support for SideMenu was also lacking and we're only now slowly fixing its issue.

@Crisis2010 I doubt that will be implemented, sounds like a specific use case which you can implement without performance impact on your own.
Regarding large titles - I'm aware there are issues with it, I hope to address them this quarter.

@pontusab
Copy link
Contributor

pontusab commented Jun 24, 2019

I would love to fix the issue with Keyboard flickering when pushing screen with an input that has auto-focus. #2622 is there something that comes to mind what the issue can be? I will try to fix it tonight.

@guyca
Copy link
Collaborator Author

guyca commented Jun 24, 2019

@pontusab Strange, I see we use autoFocus: true in quite a few places in the Wix app and never had issues with it 🤔

@pontusab
Copy link
Contributor

pontusab commented Jun 24, 2019

@guyca Interesting! We have the same issue with 3 different apps and then the folks in the GitHub issue. Do you use waitForRender? and/or something else? In your app, is the keyboard visible directly on navigate? I will do a small repo with an example

@guyca
Copy link
Collaborator Author

guyca commented Jun 24, 2019

@pontusab We don't use waitForRender.

@mayconmesquita
Copy link
Contributor

@guyca The TopTabs is android-only or iOS too? I can take the ownership to help the Android support.

@syedabuthahirm
Copy link

@mayconmesquita Thanks for taking ownership. i already did some research on TopTabs Styles in the following issue #5202, #5072 (Those are already implemented V1 I think you can easily copy paste them). Tab Layout Native Code It maybe useful to you.

@mayconmesquita
Copy link
Contributor

@syedabuthahirm thanks for the research! It will be useful to start!

@AbanoubNassem
Copy link

hopefully it fixes this issue #5167

@guyca
Copy link
Collaborator Author

guyca commented Jun 25, 2019

@mayconmesquita TopTabs are implemented on both platforms. Contact me on Discord and I'd be happy to assist as much as I can 👍

@kamleshh-bms
Copy link

@guyca Please add system default navigation transition when pushing screen on Android. Currently, It has the bottom to top transition.

@svenlombaert
Copy link

svenlombaert commented Jun 26, 2019

Feel a d*ck for hijacking this issue a bit, but any chance this will be looked at? It only happens when using a SideMenu.
#5192

Literally zero reaction. A "we don't know either", or a small push to a possible solution would already be a great help. This is basically holding us from using native navigation in production.

@pribeh
Copy link

pribeh commented Jul 1, 2019

@guyca considering there's a focus on full-screen apps in the new version, is there any chance you could consider the following request which you've looked at before:

#4866

Our app is mostly fullscreen but requires setting mergeoptions on every screen (componentdidappear) to ensure when an overlay displays that it doesn't override the statusbar styling. I haven't figured out another way around it.

@guyca
Copy link
Collaborator Author

guyca commented Jul 1, 2019

@pribeh I don't think this will be part of the fullscreen effort, but we already discussed this internally and will try to find a solution this quarter.

@guyca guyca changed the title v3 alpha v3 alpha [01/07 alpha.2 published] Jul 1, 2019
@guyca
Copy link
Collaborator Author

guyca commented Jul 2, 2019

Anyone using RN 0.60 - I'd appreciate if you could upgrade to 3.0.0-alpha.2 and let me know if you find any issues (Or don't have any 😄 )

@erennyuksell
Copy link

erennyuksell commented Jul 3, 2019

@guyca i'am trying to use RN 0.60 but i'm getting error could you please check out this issue react-native-community/cli#467

@darknblack
Copy link

Anyone using RN 0.60 - I'd appreciate if you could upgrade to 3.0.0-alpha.2 and let me know if you find any issues (Or don't have any 😄 )

I'm trying to make it work but I can't find any documentation similar to RNN V2 :( maybe you can provide the step by step. It would be a big help to us.

@thecodrr
Copy link

thecodrr commented Jul 5, 2019

@guyca v3.0.0-alpha.2 doesn't have a reactNative60 folder due to which nothing works. Check this tag

@guyca
Copy link
Collaborator Author

guyca commented Jul 5, 2019

@theweavrs That snapshot tag is incorrect. Use npm pack react-native-navigation@3.0.0-alpha.2 to view the contents of the version - you'll see it includes reactNative60 folder 👍

@erennyuksell
Copy link

@guyca i managed to run with RN 0.60.0 but i have a problem with layout. My modals go to under of status bar when i'm open them. I'm using custom topbar here is my default settings.

    Navigation.setDefaultOptions({
        topBar: {
            visible: false,
            height: 0
        },
        
        statusBar: {
            style: 'light',
            drawBehind:false
        },
        layout: {
            orientation: ['portrait'],
            
        },
        bottomTabs: {
            titleDisplayMode: 'alwaysHide',
            animate: true,
            
        },
        
        blurOnUnmount:true,
        bottomTab: {

            textColor: 'gray',
            selectedTextColor: '#3C5898',
            iconColor: 'gray',
            selectedIconColor: '#3C5898',
        }
    });

@guyca
Copy link
Collaborator Author

guyca commented Jul 7, 2019

@frankenthumbs Please reproduce in the playground app

@erennyuksell
Copy link

Who is frankenthumbs?

@mysterioushunt
Copy link

@sijad Thanks for that, didn't know this existed, tried rnn template which didn't work but the rnn-typescript did. To fix my manual install I worked out that if I added the pod 'ReactNativeNavigation', :path => '../node_modules/react-native-navigation' pod to my pod file instead of importing the project and linking the binary it worked :)

@pribeh
Copy link

pribeh commented Aug 12, 2019

@guyca would be nice have topTabs working in this v3.
I'm using a cross solution provided by Native Base, but has a poor perfomance.

By the way, great work you doing here!

Have you tried react native tab view for this?

@code-jenn-or
Copy link

code-jenn-or commented Aug 12, 2019

@sijad we already have reactNative60 for missing dimensions but still have that error.
Execution failed for task ':react-native-navigation:compileReactNative51DebugJavaWithJavac'

reactNative60

@aniciom
Copy link

aniciom commented Aug 12, 2019

@cmejet Try this #5228 (comment) i was having the same issue and i could came up with that fix and it worked (i know its not the optimal solution), it was reported but seems there's no fix for the moment.

@guyca
Copy link
Collaborator Author

guyca commented Aug 13, 2019

@raemarcsg30 Thanks for reporting, will be fixed soon.

@raemarcsg30
Copy link

Happy to help.

@raemarcsg30
Copy link

In building the app for android (react-native run-android) then I got errors about the RNN, says Execution failed for task ':app:compileDebugJavaWithJavac'.
error: package com.reactnativenavigation does not exist import com.reactnativenavigation.NavigationApplication; like that. But yesterday my app is just working fine, I didn't do anything.

@buraky84
Copy link

buraky84 commented Aug 13, 2019

i have the same problem. yesterday it was working fine. after deleting node_modules and re-installing i started to have the same error.

after spending so many hours i realized react-native-navigation library is missing reactNative60 folder under lib/android/app/src

so i
deleted node_modules folder
run npm cache clean --force
run npm i
and all went fine.

reactNative60 folder was in place.

RN version 0.60.4
RNN version 3.0 alpha 11

@guyca guyca mentioned this issue Aug 14, 2019
Merged
guyca added a commit that referenced this issue Aug 14, 2019
# Changes
* Support RN 0.60
* Migrate to AndroidX
* Improve draw behind StatusBar (Preparation for #4258)
* Don't push BottomTabs when keyboard is displayed (Fixes #4005, #3424)
    - It won't be needed to toggle the BottomTabs when Keyboard is visible
* BottomTab badge and dot indicator are not animated by default on Android (parity with iOS)

# Updating from v2
v3 is currently in alpha. To update simply npm install `3.0.0-alpha.11` - `npm install --save react-native-navigation@3.0.0-alpha.11`.
Breaking changes are outlined below.

## Layout system changes on **Android**
* Parent layouts (BottomsTabs, Stack, SideMenu) are always laid out behind the StatusBar.
* Components (`component` and `externalComponent`) are measured and offset according to the StatusBar.

In this release, We're changing the layout system in order to provide better support for immersive and full screen apps. In this release we've improved support for drawing behind the StatusBar,  next we'll address drawing behind the NavigationBar. 

Use the `drawBehind` and `translucent` options to control the StatusBar
```js
statusBar: {
  drawBehind: true,  // will draw a screen behind the StatusBar
  translucent: true // Usually you'll want to have drawBehind: true when this is true
}
```

While this isn't a breaking API change - there are a few breaking side effects.

### How will my app be effected
1. When the keyboard is opened, BottomTabs will now be drawn behind the keyboard and won't shift upwards. This is in parity with the current behaviour in iOS. For the most part, this isn't a breaking change. Toggling BottomTabs when TextInput's focus changes won't be needed anymore.

2. While parent controllers are drawn behind the StatusBar, their background isn't.
This means that when transitioning from a destinations drawn under the StatusBar to a destination drawn behind it, the application's default background color will be visible behind the StatusBar.
If you application's theme is dark, you might want to change the `windowBackground` property to mitigate this:

Add the following to your application's `style.xml`
```xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@color/backgroundColor</item>
    </style>

    <!--This is your application's default background color.
    It will be visible when the app is first opened (while the splash layout is visible)
    and when transitioning between a destination a screen drawn under the StatusBar to
    a destination drawn behind it-->
    <item name="backgroundColor" type="color">#f00</item>
</resources>
```

## AndroidX migration
We've migrated RNN to AndroidX, please follow migration instructions in the react-native repo.

## Removed SyncUiImplementation
[SyncUiImplementation](https://github.com/wix/react-native-navigation/blob/master/lib/android/app/src/reactNative57WixFork/java/com/reactnativenavigation/react/SyncUiImplementation.java) was used to overcome a bug in RN's UiImplementation. This workaround was added to RN's `UiImplementation` in RN 0.60 (thanks @SudoPlz) and can be removed from RNN.

If you're using `SyncUiImplementation` your app will fail to compile after upgrading to v3. Simply remove the following code from your `MainApplication.java`
```diff
- import com.facebook.react.uimanager.UIImplementationProvider;
- import com.reactnativenavigation.react.SyncUiImplementation;


- @OverRide
- protected UIImplementationProvider getUIImplementationProvider() {
-     return new SyncUiImplementation.Provider();
- }
```

## BottomTab badge and dot indicator are not animated by default on Android (parity with iOS)
Showing and hiding badge and dot indicator are now not animated by default. Badge animation is now controlled with the `bottomTab.animateBadge` property and dot indicator with `bottomTab.dotIndicator.animate` property.

#### The following option will show a badge with animation
```js
bottomTab: {
  badge: 'new,
  animateBadge: true
}
```

#### The following option will show a dot indicator with animation
```js
bottomTab: {
  dotIndicator: {
    visible: true,
    animate: true
  }
}
```

closes #5228
@guyca guyca unpinned this issue Aug 19, 2019
@isuhar
Copy link
Contributor

isuhar commented Aug 20, 2019

@guyca is FAB supported in v3?

+1 FAB renders on the top of screen under topBar

@ehtishamali042
Copy link

HI @guyca , I am also using "react-native-navigation": "^3.0.0-alpha.11" version, when I open drawer (sideMenu) with swipe gesture, my statusbar turns black, i don't know why this is happening! before swipe it have a custom color but after that statusbar is black. Please help.

@sijad
Copy link

sijad commented Sep 6, 2019

@EhtishamAli786 this is because you can apply custome options for your drawer, please add statusbar color in your sidemenu options too. it's working fine for me

@ehtishamali042
Copy link

Hi @sijad, thanks for reply, can you share a working snippet with me. it will be a great help

@sijad
Copy link

sijad commented Sep 6, 2019

this is my sidemenu static options:

Drawer.options = () => ({
  statusBar: {
    drawBehind: true,
    backgroundColor: 'rgba(0,0,0,0.3)',
  },
});

and this is my map screen options:

Offers.options = (): Options => ({
  statusBar: {
    style: 'light',
    drawBehind: true,
    backgroundColor: 'rgba(0,0,0,0.3)',
  },
  topBar: {
    visible: false,
  },
});

I also have this in my default options:

    // ...
    statusBar: {
      style: 'dark',
      backgroundColor: '#fff',
    },
	// ...

note my RNN version is 3.0.0-alpha.6, I can remember there where an issue with statusbar style (dark and light) in newer alpha version but if you faced any issue please upgrade to latest v3 version (which is 3.1) and try again.

demo:

rec

@ehtishamali042
Copy link

Finally its working, thanks, Really appreciate your help.

@SudoPlz
Copy link
Collaborator

SudoPlz commented Sep 27, 2019

Did anyone experience this crash?

2019-09-27 23:28:30.634 13508-13508/com.exampleapp.app.android E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.exampleapp.app.android, PID: 13508
    java.lang.RuntimeException: Unable to create application com.exampleapp.app.android.MainApplication: java.lang.RuntimeException: SoLoader.init() not yet called
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6465)
        at android.app.ActivityThread.access$1300(ActivityThread.java:219)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.RuntimeException: SoLoader.init() not yet called
        at com.facebook.soloader.SoLoader.assertInitialized(SoLoader.java:781)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:505)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:484)
        at com.facebook.react.ReactInstanceManagerBuilder.getDefaultJSExecutorFactory(ReactInstanceManagerBuilder.java:290)
        at com.facebook.react.ReactInstanceManagerBuilder.build(ReactInstanceManagerBuilder.java:265)
        at com.reactnativenavigation.react.NavigationReactNativeHost.createReactInstanceManager(NavigationReactNativeHost.java:99)
        at com.facebook.react.ReactNativeHost.getReactInstanceManager(ReactNativeHost.java:38)
        at com.exampleapp.app.android.MainApplication.createReactGateway(MainApplication.java:117)
        at com.reactnativenavigation.NavigationApplication.onCreate(NavigationApplication.java:28)
        at com.exampleapp.app.android.MainApplication.onCreate(MainApplication.java:208)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1189)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6460)

?

Here's my onCreate:

public void onCreate() {
        super.onCreate();
        SoLoader.init(this, /* native exopackage */ false); // <-- Check this line exists within the block
...

@AbednegoTM
Copy link

It works on android but gives me this error on ios : Remote branch 3.0.0-alpha.11 not found in upstream origin.

@kgaspar
Copy link

kgaspar commented Sep 30, 2019

It works on android but gives me this error on ios : Remote branch 3.0.0-alpha.11 not found in upstream origin.

Worked for me by installing the current master branch version instead of the "3.0.0-alpha.11" :
yarn add react-native-navigation@3.2.0
And then run pod install inside the ios folder

@AbednegoTM
Copy link

It works on android but gives me this error on ios : Remote branch 3.0.0-alpha.11 not found in upstream origin.

Worked for me by installing the current master branch version instead of the "3.0.0-alpha.11" :
yarn add react-native-navigation@3.2.0
And then run pod install inside the ios folder

Thank you @kgaspar i will try that

@InuriIlangakoon
Copy link

InuriIlangakoon commented Oct 15, 2019

@guyca Is there any updates on TopTabs?

I'm using

  • react native - 0.60.5
  • react-native-navigation - 3.0.0-alpha.11

Currently i'm having bottom tabs for the IOS version and trying to add top tabs for Android version.

I added the top tabs but the top tab bar is not displayed. But can navigate to the screens by swiping the screen to left and right.

@bmwertman
Copy link

bmwertman commented Nov 11, 2019

I am in the process of updating to RN 0.61.4 from a pre 0.60.0 version where linking changed. I am getting the error;

Unable to define method 'getConstants()' on NativeModule 'RNNBridgeModule'. NativeModule 'RNNBridgeModule' already has a constant or method called 'getConstants'. Please remove it.

as is seen in issue #4861

I deleted my package-lock.json updated package.json to
"react-native-navigation": "^3.5.1"
ran npm install
ran pod install from ./ios
and still get the same issue.

@GioLogist
Copy link

Unable to define method 'getConstants()' on NativeModule 'RNNBridgeModule'. NativeModule 'RNNBridgeModule' already has a constant or method called 'getConstants'. Please remove it.

I, too am seeing this after upgrading. Have cleaned node_modules and pods as well.

@smooJitter
Copy link

@GioLogist did you find a solution?

@GioLogist
Copy link

@smooJitter Apologies for not following up. I did, indeed find a solution. If i'm not mistaken, the error came from the steps i took to upgrade from v2 to v3 of RNN. Unfortunately, I have one giant commit for the most part where I did the upgrade, so i can't retrace my steps for that exact issue.

Here's what I remember doing though.

  • Cleaned node_modules & pods
  • Cleaned derived data in X-Code
  • Verified I followed the installation instructions (I think i may have had leftover / legacy stuff)
  • Manually went through the AppDelegate files.

If i'm not mistaken, there was some crossover / junk left behind from a combination of an older version installed, attempt to upgrade and RN0.60.0 now having auto-link.

I wish I had a more direct answer for you. Happy to help brainstorm further if you want to reach out. Aside from that, definitely be sure to leave the solution behind once you find it! Seems like this is pretty common and I failed in dropping the solution myself 😞

vshkl pushed a commit to vshkl/react-native-navigation that referenced this issue Feb 5, 2020
# Changes
* Support RN 0.60
* Migrate to AndroidX
* Improve draw behind StatusBar (Preparation for wix#4258)
* Don't push BottomTabs when keyboard is displayed (Fixes wix#4005, wix#3424)
    - It won't be needed to toggle the BottomTabs when Keyboard is visible
* BottomTab badge and dot indicator are not animated by default on Android (parity with iOS)

# Updating from v2
v3 is currently in alpha. To update simply npm install `3.0.0-alpha.11` - `npm install --save react-native-navigation@3.0.0-alpha.11`.
Breaking changes are outlined below.

## Layout system changes on **Android**
* Parent layouts (BottomsTabs, Stack, SideMenu) are always laid out behind the StatusBar.
* Components (`component` and `externalComponent`) are measured and offset according to the StatusBar.

In this release, We're changing the layout system in order to provide better support for immersive and full screen apps. In this release we've improved support for drawing behind the StatusBar,  next we'll address drawing behind the NavigationBar. 

Use the `drawBehind` and `translucent` options to control the StatusBar
```js
statusBar: {
  drawBehind: true,  // will draw a screen behind the StatusBar
  translucent: true // Usually you'll want to have drawBehind: true when this is true
}
```

While this isn't a breaking API change - there are a few breaking side effects.

### How will my app be effected
1. When the keyboard is opened, BottomTabs will now be drawn behind the keyboard and won't shift upwards. This is in parity with the current behaviour in iOS. For the most part, this isn't a breaking change. Toggling BottomTabs when TextInput's focus changes won't be needed anymore.

2. While parent controllers are drawn behind the StatusBar, their background isn't.
This means that when transitioning from a destinations drawn under the StatusBar to a destination drawn behind it, the application's default background color will be visible behind the StatusBar.
If you application's theme is dark, you might want to change the `windowBackground` property to mitigate this:

Add the following to your application's `style.xml`
```xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@color/backgroundColor</item>
    </style>

    <!--This is your application's default background color.
    It will be visible when the app is first opened (while the splash layout is visible)
    and when transitioning between a destination a screen drawn under the StatusBar to
    a destination drawn behind it-->
    <item name="backgroundColor" type="color">#f00</item>
</resources>
```

## AndroidX migration
We've migrated RNN to AndroidX, please follow migration instructions in the react-native repo.

## Removed SyncUiImplementation
[SyncUiImplementation](https://github.com/wix/react-native-navigation/blob/master/lib/android/app/src/reactNative57WixFork/java/com/reactnativenavigation/react/SyncUiImplementation.java) was used to overcome a bug in RN's UiImplementation. This workaround was added to RN's `UiImplementation` in RN 0.60 (thanks @SudoPlz) and can be removed from RNN.

If you're using `SyncUiImplementation` your app will fail to compile after upgrading to v3. Simply remove the following code from your `MainApplication.java`
```diff
- import com.facebook.react.uimanager.UIImplementationProvider;
- import com.reactnativenavigation.react.SyncUiImplementation;


- @OverRide
- protected UIImplementationProvider getUIImplementationProvider() {
-     return new SyncUiImplementation.Provider();
- }
```

## BottomTab badge and dot indicator are not animated by default on Android (parity with iOS)
Showing and hiding badge and dot indicator are now not animated by default. Badge animation is now controlled with the `bottomTab.animateBadge` property and dot indicator with `bottomTab.dotIndicator.animate` property.

#### The following option will show a badge with animation
```js
bottomTab: {
  badge: 'new,
  animateBadge: true
}
```

#### The following option will show a dot indicator with animation
```js
bottomTab: {
  dotIndicator: {
    visible: true,
    animate: true
  }
}
```

closes wix#5228
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.