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

Using a different renderer besides UIKit #5

Closed
michaeleisel opened this issue Feb 4, 2021 · 3 comments
Closed

Using a different renderer besides UIKit #5

michaeleisel opened this issue Feb 4, 2021 · 3 comments

Comments

@michaeleisel
Copy link

Given the instantiation cost of UIViews and delays in rendering, both of which must be done on the main thread, it'd be cool to support an alternate renderer. It could be one that's thread-safe, does less work, or both. Perhaps Flutter's Skia would be worth playing with, which I've heard anecdotally can be faster.

@erichoracek
Copy link
Collaborator

erichoracek commented Feb 4, 2021

Hi Michael, first off thanks for submitting an issue to Epoxy!

In terms of supporting an alternate renderer, I would say that Epoxy is most definitely tightly coupled to UIKit for rendering, so something like an alternate renderer would be out of scope for this project as it would dramatically increase the scope of Epoxy beyond being a set of declarative adapters written atop UIKit APIs like UICollectionView, UIStackView, etc.

We've found UIKit to meet our needs in terms of performance despite rendering occurring on the main thread. Auto Layout has had a number of great performance improvements over the years, and UIKit's ability to hand off most animations to the render server gives us a smooth 60 FPS in most cases.

@erichoracek
Copy link
Collaborator

You might find https://github.com/TokamakUI/Tokamak interesting, which is a Swift declarative UI framework that supports custom platform-specific renderers.

@michaeleisel
Copy link
Author

To elaborate, I agree that scrolling performance is a fairly solved problem. My concern is more around creating the views for a new screen, especially during startup. This is a case where I think everyone is dropping frames. But I understand not wanting to try a whole new renderer for this as well.

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

No branches or pull requests

2 participants