• Stars
    star
    116
  • Rank 303,894 (Top 6 %)
  • Language
    HTML
  • License
    MIT License
  • Created almost 7 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Build native, high-performance, cross-platform applications through a React (and/or QML) syntax

ReactQML

Build native, high-performance, cross-platform universal applications (desktop and mobile) through a React (and/or QML) syntax

🚧 NOTE: ReactQML is a work-in-progress! 🚧

Features

  • Native components: no Electron
  • Batteries included: access to full webpack ecosystem and wide sets of QML modules
  • Cross platform: macOS/Windows/Linux/Android/iOS/tvOS/watchOS (see Qt supported platforms).
  • Write codes in modern Javascript (ES2016+) or TypeScript (transpiling with babel, bundling with webpack, highly customizable)
  • Works with existing front-end libraries such as redux, lodash, rxjs, redux-observable etc.
  • Supports Hot Module Reloading
  • Supports react-devtools & redux-devtools (Time Travel Debugging possible)
  • New in v0.5: supports React Hooks!

Quickstart

See react-qml-quickstart and Ben

API Example

You can build UI components using JSX syntax and/or QML syntax.

React Component

import React from "react";
import { render, Window, ColumnLayout, Text } from "react-qml";

const styles = {
  window: {
    width: 400,
    height: 500
  },
  title: {
    fontSize: 20
  },
  subtitle: {
    color: "#333"
  }
};

const App = () => (
  <Window visible style={styles.window}>
    <ColumnLayout width={200} anchors={{ centerIn: "parent" }}>
      <Text
        text="Welcome to React QML"
        Layout={{ fillWidth: true }}
        style={styles.title}
      />
      <Text
        text="To get started, edit index.js"
        Layout={{ fillWidth: true }}
        style={styles.subtitle}
      />
    </ColumnLayout>
  </Window>
);

export default () => render(<App />);

QML Components

App.qml

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtQuick.Window 2.2

Window {
  width: 400
  height: 500
  visible: true

  ColumnLayout {
    width: 200
    x: (Window.width - width) / 2
    y: (Window.height - height) / 2

    Text {
      text: "Welcome to React QML"
      Layout.fillWidth: true
      font.pointSize: 20
    }

    Text {
      text: "To get started, edit App.qml"
      color: "#333333"
      Layout.fillWidth: true
    }
  }
}

index.js

import React from "react";
import { render } from "react-qml";

import App from "./App.qml";

export default () => render(<App />);

Other Awesome Projects

  • Haul: A command line tool for developing React Native apps
  • Revery: ⚡️ Native, high-performance, cross-platform desktop apps - built with Reason!
  • Proton Native: Create native desktop applications through a React syntax, on all platforms
  • React Native: Build native mobile apps using JavaScript and React
  • React Native Desktop: A Desktop port of React Native, driven by Qt, forked from Canonical
  • React Native macOS: React Native for macOS is an experimental fork for writing desktop apps using Cocoa

License

  • ReactQML is available under MIT license
  • Qt is available under different licensing options. See here and here

Copyright for portions of project React QML are held by Mike Grabowski as part of project Haul. All other copyright for project React QML are held by Long Nguyen.

More Repositories

1

netflix_patch

Patched Netflix App for Android enabling Widevine L1 allowing not certified devices to play HD
Shell
203
star
2

react-native-hammerjs

A port of HammerJS for React Native. HammerJS is a javascript library for multi-touch gestures.
JavaScript
27
star
3

ben

Fast, native*, cross-platform Slack client, develop with React QML
TypeScript
21
star
4

movielens

Promise based Node API for the movielens unpublished API (ready to be used with async/await)
JavaScript
13
star
5

react-qml-quickstart

Example app using react-qml and a pluggable backend
TypeScript
6
star
6

atom-android-debugger

Atom Remote GDB
CoffeeScript
4
star
7

react-qml-keychain

Keychain Service for ReactQML
C++
3
star
8

LFLiveKit

LFLiveKit
Objective-C
3
star
9

Materialicon.qml

Materialicon.qml bundle Material Icons font and icon table into a single module for QML project.
JavaScript
3
star
10

Ionicon.qml

Using Ionicon in QML
JavaScript
3
star
11

react-qml-breakpad

Breakpad Integration with ReactQML
C++
3
star
12

react-qml-rust-boilerplate

A simple boilerplate to build native desktop app using react-qml and rust
JavaScript
3
star
13

hdviet

HDViet APIs
JavaScript
2
star
14

framelesswindow

Unofficial framelesswindow package
C++
2
star
15

influents-elastic-builder

Angular Module for building an Elasticsearch Query
JavaScript
1
star
16

homebrew-tap

Homebrew tap for Qt 5.10 & React QML
Ruby
1
star
17

heroku-buildpack-calibre

Shell
1
star
18

modern-node-boilerplate

Minimal, general purpose NodeJS boilerplate
JavaScript
1
star
19

QEmailValidator

A class that provides a QValidator to validate emails
C++
1
star
20

longseespace

Hello 🖐
1
star
21

quickflix

Your personal flix collection
JavaScript
1
star