Skip to content

Pluggable backends for react-native-like uses #395

Closed

Description

@mike-marcacci

Description

React native is a fantastic concept, but is seriously complicated by implementation details which are there to prevent javascript from causing a performance bottleneck. The RN team is currently working on a re-architecture (referred to as "fabric" internally) which should alleviate many of the tremendous issues with the current approach, but it is still subject to the constraints that come with composing the interface in javascript.

It seems to me that a similar framework written in a lower-level language could achieve superior performance and portability with less complexity.

Rust is the perfect modern language for such a task, and yew has already done a tremendous job in building an ergonomic "component centric" (react-like) UI framework for web targets. I'm curious if there's any interest in making backends pluggable, so that yew can be used for native targets?

Activity

  1. jeffvandyke commented on Aug 7, 2019

    @jeffvandyke

    I wonder how the fascinating Dear Imgui project (Rust wrapper) would work as a backend, given its immediate-mode render style. It even works in WebAssembly rendering to canvas, and is a pretty small, yet capable and themable library.

    The immediate mode rendering style might mean everything would have to be re-rendered every update, but Yew components could still be very useful for app structure, message handling, and saving some computed state in intermediate components. The absolute best-case would be to somehow store the frame buffer output of a "pure-imgui output" (html-like components would have to be invented like react-native) and simply gpu-draw it in place if the final output would be the same.

  2. locked and limited conversation to collaborators on Sep 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions