proton-native/docs/README.md
Gustav Hansen b5ca0f7f86
V2 (#230)
* Add initial test structure and some tests for Window

* Start on rewriting registerComponent

* Add View support

* Add flexbox support, still need to test more

* Add styling and better props management

* Add nested text support

* Fix text measurement and qt hogging layout styles

* Font size must be in px, so convert if it isn't

* Add stylesheet

* Various changes, start adding tests

* Try out travis CI

* Remove xwd package

* Install qt5

* Install correct moc

* Add g++ 5

* Add xwd and imagemagick

* Yoga layout doesn't support v12 right now

* Add touchablewithoutfeedback

* Add opacity. Need to investigate seg fault

* Fix build errors, unsupport trusty

* Force xenial version

* Add touchablehighlight. Start button

* Add support for image require

* Start on image

* Add image resizing and TextInput

* Fix button view

* Quit loop when all windows closed

* Fix require not working with jest

* Fix quit deleting still in use pointers

* Disable caching

* Depend on stable node-qt-napi

* Copy docs, start examples

* Many bug fixes, get cat example to work

* Fix percent issue and start more documentation

* Start docs

* Finish docs

* Fix App appendChild with comments

* Abstract QT bindings

* Add calculator example; try to get devtools working

* Update react-devtools

* Add hot reloading support

* Add hot reloading to examples, fix reloading bugs

* Update documentation on v2

* Add more examples to v2 changes

* Change readme for v2

* Remove packaging until it works

* Add prepack instead

* Use node-qt-napi up

* 2.0.1

* Convert everything to typescript

* Add note on TS

* Update readme with new images

* Add comparison to others in docs

* Add packaging instructions

* Fix windows packaging

* Create FUNDING.yml

* Update v2_changes.md

* Create LICENSE

* Add wx backend option

* Add more wx components

* Add wx backend notes

* Add note on mac wxwidgets libuv bug

* Add note on Macs with libuv bug

* Use npx by default

* Bump version for wx backend

* V2 small code improvements (#240)

* slightly improved import

* better type defs

* merged append and insert as they pretty same

* Run prettier

* Add issue templates (#241)

* About page typo (#216)

* Update quickstart.md (#223)

* Update README.md (#229)

* Create FUNDING.yml

* Add issue templates

* Update README.md

Co-authored-by: Yevhen Hraivoronskyi <evhenious@gmail.com>
2020-01-19 06:55:30 -08:00

2.7 KiB

Proton Native

Create desktop applications with React Native components, on all platforms

calculator catapi_v2

What's new in V2?

V2 brought along a complete overhaul, written from the ground up. The source code is better organized, we now support flexbox layout, CSS styling, the same components as React Native, hot reloading, and are working on unit testing. More components and features can now be added easily. It is easier to install, with no compiling required.

For the user, you can now copy and paste your React Native code with minimal to no changes. For our collaborators, it should now be more easy and friendly to bring this project right in line as the desktop port of React Native.

For more information and a full writeup, see the V2 page.

Native Components?

Currently we use Qt, which does not ship with true native components. Performance is basically the same and the look is very similar on almost all platforms, but we realize there is still a large demand for true native components in this project. There is a current experimental backend for wxWidgets and is described here. Please note this is very not complete and still needs a lot more work.

Why?

On mobile, it used to be hard to build beautiful cross-platform apps. Then React Native came along, giving us a seamless way to build user interfaces and manage state in code, all while doing it cross platform.

On desktop, there is no such tool. You can create a GUI using something like Qt, but for people who are used to the React workflow and JSX, there currently isn't an alternative.

Some of you might be saying that you could do it in Electron. It's a good tool, but it brings in a lot of overhead, running a full webbrowser to manage a small GUI, while Proton Native can do the same, using native tools, with a smaller size and with less resource usage.

Proton Native does the same to desktop that React Native did to mobile. Build cross-platform apps for the desktop, all while never leaving the React eco-system. Popular React packages such as Redux still work.

Here's a simple example in Proton Native:

js_example.js

Features

  • Same syntax and components as React Native
  • Works with existing React libraries such as Redux
  • Cross platform
  • No more Electron
  • Compatible with all normal Node.js packages
  • Hot reloading
  • Flexbox
  • CSS styling

Examples

Check out the examples to see more.

Accelerated by KeyCDN