[NavigatorIOS] push flicker 0.10.0 #2490

Closed
adriansprod opened this Issue Aug 29, 2015 · 12 comments

Comments

Projects
None yet
7 participants
@adriansprod

Since updating from 0.8.0 to 0.10.0 there is now a noticeable white flicker of the current route view when pushing a new route into the navigator.

@brentvatne brentvatne changed the title from NavigatorIOS push flicker 0.10.0 to [NavigatorIOS] push flicker 0.10.0 Aug 30, 2015

@brentvatne

This comment has been minimized.

Show comment
Hide comment
@brentvatne

brentvatne Aug 30, 2015

Collaborator

Thanks for filing the issue! NavigatorIOS isn't actively maintained by the React Native team because most people use Navigator, so this is a very low priority fix. I'd encourage you to dive in and try to fix it yourself, if you have any issues with that you can ask people in StackOverflow, on Slack, or mention them here on this issue!

Collaborator

brentvatne commented Aug 30, 2015

Thanks for filing the issue! NavigatorIOS isn't actively maintained by the React Native team because most people use Navigator, so this is a very low priority fix. I'd encourage you to dive in and try to fix it yourself, if you have any issues with that you can ask people in StackOverflow, on Slack, or mention them here on this issue!

@oblador

This comment has been minimized.

Show comment
Hide comment
@oblador

oblador Aug 31, 2015

Contributor

😞

Navigator swipe back doesn't feel "native", is often dropping frames for non-trivial views and is not nearly as performant as NavigatorIOS. Even RN apps released by Facebook seem to struggle with this since they defer most of the rendering until after the transitions have finished.

IMHO the RN team should reconsider the decision of dropping NavigatorIOS from their responsibilities until a viable option exists. I'm baffled that two of the absolute key components of iOS apps (the other being tableviews) doesn't have official support.

Contributor

oblador commented Aug 31, 2015

😞

Navigator swipe back doesn't feel "native", is often dropping frames for non-trivial views and is not nearly as performant as NavigatorIOS. Even RN apps released by Facebook seem to struggle with this since they defer most of the rendering until after the transitions have finished.

IMHO the RN team should reconsider the decision of dropping NavigatorIOS from their responsibilities until a viable option exists. I'm baffled that two of the absolute key components of iOS apps (the other being tableviews) doesn't have official support.

@brentvatne

This comment has been minimized.

Show comment
Hide comment
@brentvatne

brentvatne Aug 31, 2015

Collaborator

@oblador - there are two things that will help a lot with this 1) moving Navigator to use Animated for all transitions 2) optimizing Animated so that it just starts the animation from the JS thread and then the rest happens on the main UI thread. @sahrens could tell you more about that if you're curious.

I agreed this is not ideal but I think right now the tradeoff being made is to invest in building something that is best for the future instead of putting time into something that is not used at Facebook and that will not be so useful in the near future when these animations are more performant. That said, the community outside of Facebook is very large, so if there are a few people interested in making this better you could perhaps create a channel on Reactiflux and work on it together! I'm sure you would agree it does not make a lot of sense for people that will never use it to work on it :)

Collaborator

brentvatne commented Aug 31, 2015

@oblador - there are two things that will help a lot with this 1) moving Navigator to use Animated for all transitions 2) optimizing Animated so that it just starts the animation from the JS thread and then the rest happens on the main UI thread. @sahrens could tell you more about that if you're curious.

I agreed this is not ideal but I think right now the tradeoff being made is to invest in building something that is best for the future instead of putting time into something that is not used at Facebook and that will not be so useful in the near future when these animations are more performant. That said, the community outside of Facebook is very large, so if there are a few people interested in making this better you could perhaps create a channel on Reactiflux and work on it together! I'm sure you would agree it does not make a lot of sense for people that will never use it to work on it :)

@adriansprod

This comment has been minimized.

Show comment
Hide comment
@adriansprod

adriansprod Aug 31, 2015

The 'Navigator' documentation and examples are very limited and it's hard to get it working. I'm not sure 'Animated' is documented. IOS worked well

The 'Navigator' documentation and examples are very limited and it's hard to get it working. I'm not sure 'Animated' is documented. IOS worked well

@alvaromb

This comment has been minimized.

Show comment
Hide comment
@alvaromb

alvaromb Aug 31, 2015

Contributor

The Navigator component is not animating when navigating to a view with a quite big form (+30 fields), but once the Navigator has loaded the form view, it does animate pop and push to other views. Is this the issue you guys are experiencing?

Contributor

alvaromb commented Aug 31, 2015

The Navigator component is not animating when navigating to a view with a quite big form (+30 fields), but once the Navigator has loaded the form view, it does animate pop and push to other views. Is this the issue you guys are experiencing?

@adriansprod

This comment has been minimized.

Show comment
Hide comment
@adriansprod

adriansprod Aug 31, 2015

this about a flicker in NavigatorIOS

this about a flicker in NavigatorIOS

@oblador

This comment has been minimized.

Show comment
Hide comment
@oblador

oblador Aug 31, 2015

Contributor

@alvaromb: Yes, NavigatorIOS will first initialize the view and then present it using a highly priotitized thread with gpu accelleration. Navigator will start the transition directly and use javascript to animate, so if it's the first time you present the view or if it's complex you might have all frames dropped.

In my opinion, everything in the core should be working and maintained. If not, why not just break it out to a separate module and give ownership to someone willing? :-)

Contributor

oblador commented Aug 31, 2015

@alvaromb: Yes, NavigatorIOS will first initialize the view and then present it using a highly priotitized thread with gpu accelleration. Navigator will start the transition directly and use javascript to animate, so if it's the first time you present the view or if it's complex you might have all frames dropped.

In my opinion, everything in the core should be working and maintained. If not, why not just break it out to a separate module and give ownership to someone willing? :-)

@oblador

This comment has been minimized.

Show comment
Hide comment
@oblador

oblador Aug 31, 2015

Contributor

@adrian-social-prod: sorry for hijacking :-(

Contributor

oblador commented Aug 31, 2015

@adrian-social-prod: sorry for hijacking :-(

@brentvatne

This comment has been minimized.

Show comment
Hide comment
@brentvatne

brentvatne Aug 31, 2015

Collaborator

@adrian-social-prod @oblador - I went ahead and created #navigator-ios on Reactiflux - http://www.reactiflux.com/ - feel free to join and discuss / collaborate on NavigatorIOS. I encourage anyone reading this that prefers using NavigatorIOS to join the channel!

@ide @vjeux and I have discussed pulled it out into a separate module, but for a variety of reasons which we can discuss further in Slack, we had to postpone this. In particular, if you look into the code that drives NavigatorIOS you'll see that it's littered throughout various parts of react-native, so it would be hard to just pull it out cleanly.

Collaborator

brentvatne commented Aug 31, 2015

@adrian-social-prod @oblador - I went ahead and created #navigator-ios on Reactiflux - http://www.reactiflux.com/ - feel free to join and discuss / collaborate on NavigatorIOS. I encourage anyone reading this that prefers using NavigatorIOS to join the channel!

@ide @vjeux and I have discussed pulled it out into a separate module, but for a variety of reasons which we can discuss further in Slack, we had to postpone this. In particular, if you look into the code that drives NavigatorIOS you'll see that it's littered throughout various parts of react-native, so it would be hard to just pull it out cleanly.

@sahrens

This comment has been minimized.

Show comment
Hide comment
@sahrens

sahrens Sep 1, 2015

Contributor

Plus, since we don't use it internally at Facebook, we're pretty quick to accept and merge pull requests if @ide or @brentvatne sign off on it.

Contributor

sahrens commented Sep 1, 2015

Plus, since we don't use it internally at Facebook, we're pretty quick to accept and merge pull requests if @ide or @brentvatne sign off on it.

@oblador

This comment has been minimized.

Show comment
Hide comment
@oblador

oblador Oct 14, 2015

Contributor

Commit a4ef7ab fixes this issue 👍 🙇

Contributor

oblador commented Oct 14, 2015

Commit a4ef7ab fixes this issue 👍 🙇

@ide

This comment has been minimized.

Show comment
Hide comment
@ide

ide Oct 14, 2015

Collaborator

Closing this out ^

Collaborator

ide commented Oct 14, 2015

Closing this out ^

@ide ide closed this Oct 14, 2015

@facebook facebook locked as resolved and limited conversation to collaborators Jul 21, 2018

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.