An experimental, comprehensive port of React Native to the web.

Overview

React Native DOM · CircleCI npm version lerna All Contributors

An experimental, comprehensive port of React Native to the web.

  • Multithreaded by default: Following the exact same architecture as React Native on mobile, all of your react components/app logic are run in web worker, leaving the main thread to entirely focus on rendering.
  • Same layout behavior as React Native on mobile: Powered by custom bindings to Yoga and compiled to WebAssembly, avoid layout inconsistencies between your native and web projects.
  • Built with the same bundler used for existing React Native platforms: Build both the "native" main and JS threads with the Metro Bundler along with all the developer experience features it provides.
  • Ecosystem compatible escape hatch to the DOM: Using the same native module bridge, expose DOM-specific APIs in a more generic way that can easily be made into a cross-platform module.

To see it in action, check out these live demos:


Why?

For the best introduction to this project, check out my talk at React Europe 2018 introducing it.


WARNING

This project is still highly experimental and many aspects of it are subject to breaking changes, continue at your own risk.


Getting Started

Getting your React Native project configured to use react-native-dom is a lot like the process for other 3rd party platforms such as react-native-windows.

If you're starting a new project from scratch: ensure you have the react-native CLI installed globally.

npm install -g react-native-cli
# or
yarn global add react-native-cli

Next, initialize your React Native project.

react-native init [project name]

Then, cd into your project and install rnpm-plugin-dom into your devDependencies, after which you can initialize your React Native DOM scaffolding with the react-native dom command.

npm install --save-dev rnpm-plugin-dom
# or
yarn add --dev rnpm-plugin-dom

# Add DOM support to your React Native project
react-native dom

To run your initialized project in your browser, you can either:

  • Start the packager yourself using react-native start and navigate open your browser to localhost:8081/dom
  • Leverage the built-in rnpm command react-native run-dom which will start the packager and open the browser to the correct URL for you

NOTE: After setting up the DOM platform you may need to run react-native start with the --reset-cache flag at least once if you recieve an error message like Unable to resolve module AccessibilityInfo.

Overview of files generated by the RNPM plugin

  • dom/bootstrap.js - Entry point to the main thread bundle where you can set runtime configuration options, register custom native modules, or any other JS initialization you would like to do.
  • dom/entry.js - Entry point to the JS thread bundle, will likely only be importing your App's entry point from the top-level folder of your project.
  • dom/index.html - HTML file which is what references and loads the JS bundles.
  • (conditionally) rn-cli.config.js - Depending on if the project already has one, the rnpm plugin will either create it with the proper configuration options to support the DOM platform or will simply add the necessary entries to your existing one.

React Developer Tools

You can use the standalone version of React Developer Tools to debug the React component hierarchy. To use it, install the react-devtools package globally:

npm install -g react-devtools

Now run react-devtools from the terminal to launch the standalone DevTools app:

react-devtools

In order to activate the connection with the devtools app add '?devtools' to the end of your development url (e.g. localhost:8081/dom?devtools)

Building for Production

A built-in script for performing a production build is still in the backlog but here is a manual script which does so (assuming the same directory structure that gets generated from the rnpm plugin).

# Ensure development-speecific code is stripped from the bundle
export NODE_ENV=production

# Make the dist directory, or the build command below will fail.
mkdir -p ./dom/dist

# Build the main thread bundle
react-native bundle \
  --config $(pwd)/rn-cli.config.js \
  --dev false \
  --platform dom \
  --entry-file ./dom/bootstrap.js \
  --assets-dest ./dom/dist \
  --bundle-output ./dom/dist/bootstrap.bundle

# Build the JS thread bundle
react-native bundle \
  --config $(pwd)/rn-cli.config.js \
  --dev false \
  --entry-file ./dom/entry.js \
  --platform dom \
  --bundle-output ./dom/dist/entry.bundle \
  --assets-dest ./dom/dist

# Copy the index.html file to the build destination
cp dom/index.html dom/dist/index.html

The resulting folder in dom/dist will contain static HTML & JS ready to be deployed to your provider of choice.


Writing Native Modules/Views

Work In Progress

The API for this is going to be overhauled soon with accompanying documentation. If you want to see what it currently looks like take a look at some of the built in native modules such as AsyncLocalStorage


Repository Structure

This project is a lerna-managed monorepo with all the projects living in the packages folder.

Package Overview

  • react-native-dom - The library itself (this is most likely the package you're interested in).
  • rnpm-plugin-dom - RNPM plugin primarily used for bootstrapping DOM support into a React Native project.
  • rndom-* - Custom web components (built with svelte) used for some of the built-in widgets/views in react-native-dom.

One noticeable omission to the list of packages is the custom build of Yoga which can be found in this separate repo. yoga-dom is not included in this monorepo due to requiring a significantly different build environment than this repo's entirely JS codebase.


Running RNTester/Examples

To run the examples located in the react-native-dom source, run the following commands from the root of the monorepo:

# be sure to update the git submodules to pull the RNTester code
git submodule update --init

# install dependencies
yarn && yarn compile

# start the react-native packager
yarn run-examples

Then navigate to localhost:8081/Examples and choose which example you would like to see.

A live deployment of the RNTester project (used primarily for manually testing changes) can be found at rntester.now.sh

Contributors

Thanks goes to these wonderful people (emoji key):


Vincent Riemer

💻 🐛 📖 💡 🤔 🚇 📦 📢

Joe Goodall

📖

François Rosato

📖

Moti Zilberman

💻 📖

thebetterjort

📖

Bilo Lwabona

📖

Madhav Varshney

📖

Eric Rozell

💻

empyrical

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

Comments
  • Guide for creating new components

    Guide for creating new components

    Is there any kind of guide that covers how to implement a "native view" for react-native-dom? I'd like to build a component to expose the html5 video tag.

    I've looked at the ImageView implementation, but am not very familiar with the react-native-dom model to know what's going on there. I can debug my way through it but was hoping there was an easier way.

    opened by cobarx 8
  • Hard time understanding the use case for this

    Hard time understanding the use case for this

    Maybe I'm a bit behind in web trends and totally missing the point, I have a few questions someone may be able to answer.

    Q1. What is the point of a mobile framework being ported to web? Q2. Why aren't we just optimizing react.js for the web? Q3. It feels like we are confusing the frontend landscape with even more frameworks, like my previous question - why not just contribute to react.js... Q4. Don't we have electron + react.js for web to native desktop experience? What is the purpose of this?

    discussion 
    opened by abacaj 8
  • Expo support

    Expo support

    Hello, i'm trying to run my react-native-scripts project and have the issues. First, the command run the, (review the node package) react-native run-dom --port=19000, but he don't recognize this option But i can run the packager on 8081 port

    Second, i'm not sure that is related with first issue. When i'm starting i've the error: bundling failed: Error: Unable to resolve module "./BarCodeScanner" from "/node_modules/expo/src/Expo.js": The module "./BarCodeScanner" could not be found from "node_modules/expo/src/Expo.js". Indeed, none of these files exist: In Expo BarCodeScanner we have the file with extension BarCodeScanner.web.js, so it is good to support compilation for this one.

    opened by kross77 6
  • ENOENT: no such file or directory, open './dom/dist/entry.bundle'

    ENOENT: no such file or directory, open './dom/dist/entry.bundle'

    react-native bundle \
    >   --config $(pwd)/rn-cli.config.js \
    >   --dev false \
    >   --entry-file ./dom/entry.js \
    >   --platform dom \
    >   --bundle-output ./dom/dist/entry.bundle \
    >   --assets-dest ./dom/dist
    
    

    I fixed this error by creating the dom folder by hand. Do I need to run this command with sudo?

    opened by thebetterjort 6
  • Map .dom.js to .web.js

    Map .dom.js to .web.js

    Hello,

    I know RNDom is incompatible to RNW, but for the most of the project files in my project I don't have a difference between DOM and WEB. Is there a configuration way (maybe in the rn-cli.config.js?) to take the .web.js file if there is no .dom.js?

    In the meantime I have to duplicate all .web.js files to .dom.js files.

    Thank you

    opened by patlux 5
  • Flex layout not consistent with native device layouts

    Flex layout not consistent with native device layouts

    I'm aware of the "it's not ready for production" caveat, but I wanted to kick the tires and play with this lib a bit. I added react-native-dom to an application I'm working on, and I'm seeing some issues with layout. The layout in RNDom isn't matching iOS or Android, so I'm guessing there's something janky in how Yoga is being applied.

    In this example, each row has two children, one for the title and one for this magnitude bar. The title is flex: 2 and the magbar is flex: 1. The RNDom version has inconsistent sizings from row-to-row.

    Layout on iOS Layout on react-native-dom

    bug 
    opened by darthtrevino 5
  • Implement Image resizeMode=repeat

    Implement Image resizeMode=repeat

    Closes #18. First-time contributor here, happy to take guidance and make any necessary changes to get the PR merged.

    This is a bit of a crude implementation, but it seems to work:

    (Side note: Not sure how best to update RNTester with this PR, if at all - so to test I simply removed this Platform.OS conditional in ImageExample.js)

    The specific behaviour - scaling the image down to fit the view and tiling it from the top left - is exactly as in RN iOS/Android (see screenshots in https://github.com/facebook/react-native/pull/17404). It's achieved by setting a repeating background image with the appropriate background-size in pixels once layout is known (since there is no background-size: scale-down unfortunately). ~Currently the "foreground" image is also rendered on top of this background, correctly covering the "first" (top left) tile; I suppose there might be a way to hide it if it turns out to make any difference, but didn't bother here.~ UPDATE: See https://github.com/vincentriemer/react-native-dom/pull/31#issuecomment-390426864 below.

    For the record, I first tried an SVG <feTile>-based approach, but was not able to get it anywhere near working.

    opened by motiz88 4
  • chore: temporarily test against Node.js 10

    chore: temporarily test against Node.js 10

    To see if there are any issues with Node.js 10. We should test Node.js 8 and 10 to keep track of this.

    This PR is only meant to start a fresh test build using Node.js 10 and see what happens.

    opened by DanielRuf 4
  • react-native-web

    react-native-web

    Hello, I'm trying to understand the difference between this project and https://necolas.github.io/react-native-web/storybook/. It would be useful, to have an explanation in the readme.

    discussion 
    opened by Hermanya 4
  • Register react-native-dom as an out-of-tree platform

    Register react-native-dom as an out-of-tree platform

    opened by empyrical 3
  • Support Expo

    Support Expo

    Hi,

    This would be awesome if the Expo hello world app would be easy to deploy as a website, making the dom RN platform more accessible without having to eject, install plugin, setup configuration etc...

    Also many of us already have Expo non-ejected apps and it would be nice to be able to test RN-dom on it without ejecting.

    I guess this also needs support from Expo team to work and it's not only on your side, just opening the issue to see if there is interest for this and track eventual progress.

    See also Canny request

    opened by slorber 3
  • chore(deps-dev): bump svelte from 2.13.4 to 3.49.0

    chore(deps-dev): bump svelte from 2.13.4 to 3.49.0

    Bumps svelte from 2.13.4 to 3.49.0.

    Changelog

    Sourced from svelte's changelog.

    3.49.0

    • Improve performance of string escaping during SSR (#5701)
    • Add ComponentType and ComponentProps convenience types (#6770)
    • Add support for CSS @layer (#7504)
    • Export CompileOptions from svelte/compiler (#7658)
    • Fix DOM-less components not being properly destroyed (#7488)
    • Fix class: directive updates with <svelte:element> (#7521, #7571)
    • Harden attribute escaping during SSR (#7530)

    3.48.0

    • Allow creating cancelable custom events with createEventDispatcher (#4623)
    • Support {@const} tag in {#if} blocks #7241
    • Return the context object in setContext #7427
    • Allow comments inside {#each} blocks when using animate: (#3999)
    • Fix |local transitions in {#key} blocks (#5950)
    • Support svg namespace for {@html} (#7002, #7450)
    • Fix {@const} tag not working inside a component when there's no let: #7189
    • Remove extraneous leading newline inside <pre> and <textarea> (#7264)
    • Fix erroneous setting of textContent for \<template> elements (#7297)
    • Fix value of let: bindings not updating in certain cases (#7440)
    • Fix handling of void tags in <svelte:element> (#7449)
    • Fix handling of boolean attributes in <svelte:element> (#7478)
    • Add special style scoping handling of [open] selectors on <dialog> elements (#7495)

    3.47.0

    • Add support for dynamic elements through <svelte:element> (#2324)
    • Miscellaneous variable context fixes in {@const} (#7222)
    • Fix {#key} block not being reactive when the key variable is not otherwise used (#7408)
    • Add Symbol as a known global (#7418)

    3.46.6

    • Actually include action TypeScript interface in published package (#7407)

    3.46.5

    • Add TypeScript interfaces for typing actions (#6538)
    • Do not generate unused-export-let warning inside <script context="module"> blocks (#7055)
    • Do not collapse whitespace-only CSS vars (#7152)
    • Add aria-description to the list of allowed ARIA attributes (#7301)
    • Fix attribute escaping during SSR (#7327)
    • Prevent .innerHTML optimization from being used when style: directive is present (#7386)

    3.46.4

    • Avoid maximum call stack size exceeded errors on large components (#4694)
    • Preserve leading space with preserveWhitespace: true (#4731)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump predefine from 0.1.2 to 0.1.3

    chore(deps): bump predefine from 0.1.2 to 0.1.3

    Bumps predefine from 0.1.2 to 0.1.3.

    Commits
    • 7eed221 0.1.3
    • 8c8c73e fix: add github workflow badge
    • bbd2ebc chore: remove travis
    • a1051e5 chore: add github action test
    • 2b75066 dist: update dependencies
    • 6f0f12f dist: add package lock file
    • 1a86a01 Merge pull request #12 from ohad2712/fix/address-prototype-pollution-vulnerab...
    • 045c1c7 Update index.js
    • 29851b6 fix: Address prototype pollution vulnerability in merge function
    • 238137e Merge pull request #9 from bigpipe/greenkeeper/assume-1.5.0
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by swaagie, a new releaser for predefine since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump node-fetch from 1.7.3 to 3.1.1

    chore(deps): bump node-fetch from 1.7.3 to 3.1.1

    Bumps node-fetch from 1.7.3 to 3.1.1.

    Release notes

    Sourced from node-fetch's releases.

    v3.1.1

    Security patch release

    Recommended to upgrade, to not leak sensitive cookie and authentication header information to 3th party host while a redirect occurred

    What's Changed

    New Contributors

    Full Changelog: https://github.com/node-fetch/node-fetch/compare/v3.1.0...v3.1.1

    v3.1.0

    What's Changed

    ... (truncated)

    Changelog

    Sourced from node-fetch's changelog.

    Changelog

    All notable changes will be recorded here.

    The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

    What's Changed

    New Contributors

    Full Changelog: https://github.com/node-fetch/node-fetch/compare/v3.1.0...v3.1.2

    3.1.0

    What's Changed

    ... (truncated)

    Commits
    Maintainer changes

    This version was pushed to npm by endless, a new releaser for node-fetch since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump shelljs from 0.8.2 to 0.8.5

    chore(deps-dev): bump shelljs from 0.8.2 to 0.8.5

    Bumps shelljs from 0.8.2 to 0.8.5.

    Release notes

    Sourced from shelljs's releases.

    v0.8.5

    This was a small security fix for #1058.

    v0.8.4

    Small patch release to fix a circular dependency warning in node v14. See #973.

    v0.8.3

    Closed issues:

    • Shelljs print stderr to console even if exec-only "silent" is true #905
    • refactor: remove common.state.tempDir #902
    • Can't suppress stdout for echo #899
    • exec() doesn't apply the arguments correctly #895
    • shell.exec('npm pack') painfully slow #885
    • shelljs.exec cannot find app.asar/node_modules/shelljs/src/exec-child.js #881
    • test infra: mocks and skipOnWin conflict #862
    • Support for shell function completion on IDE #859
    • echo command shows options in stdout #855
    • silent does not always work #851
    • Appveyor installs the latest npm, instead of the latest compatible npm #844
    • Force symbolic link (ln -sf) does not overwrite/recreate existing destination #830
    • inconsistent result when trying to echo to a file #798
    • Prevent require()ing executable-only files #789
    • Cannot set property to of [object String] which has only a getter #752
    • which() should check executability before returning a value #657
    • Bad encoding experience #456
    • phpcs very slow #440
    • Error shown when triggering a sigint during shelljs.exec if process.on sigint is defined #254
    • .to\(file\) does not mute STDIO output #146
    • Escaping shell arguments to exec() #143
    • Allow multiple string arguments for exec() #103
    • cp does not recursively copy from readonly location #98
    • Handling permissions errors on file I/O #64

    Merged pull requests:

    ... (truncated)

    Changelog

    Sourced from shelljs's changelog.

    Change Log

    Unreleased

    Full Changelog

    Closed issues:

    • find returns empty array even though directory has files #922
    • exec() should support node v10 (maxbuffer change) #915
    • grep exit status and extra newlines #900
    • Travis CI currently broken #893
    • Drop node v4 support #873
    • cp -Ru respects the -R but not the -u #808

    Merged pull requests:

    v0.8.3 (2018-11-13)

    Full Changelog

    Closed issues:

    • Shelljs print stderr to console even if exec-only "silent" is true #905
    • refactor: remove common.state.tempDir #902
    • Can't suppress stdout for echo #899
    • exec() doesn't apply the arguments correctly #895
    • shell.exec('npm pack') painfully slow #885
    • shelljs.exec cannot find app.asar/node_modules/shelljs/src/exec-child.js #881
    • test infra: mocks and skipOnWin conflict #862
    • Support for shell function completion on IDE #859
    • echo command shows options in stdout #855
    • silent does not always work #851
    • Appveyor installs the latest npm, instead of the latest compatible npm #844
    • Force symbolic link (ln -sf) does not overwrite/recreate existing destination #830
    • inconsistent result when trying to echo to a file #798
    • Prevent require()ing executable-only files #789
    • Cannot set property to of [object String] which has only a getter #752

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump tmpl from 1.0.4 to 1.0.5

    chore(deps): bump tmpl from 1.0.4 to 1.0.5

    Bumps tmpl from 1.0.4 to 1.0.5.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • chore(deps): bump path-parse from 1.0.5 to 1.0.7

    chore(deps): bump path-parse from 1.0.5 to 1.0.7

    Bumps path-parse from 1.0.5 to 1.0.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
Vincent Riemer
Web Core @ Facebook
Vincent Riemer
🇨🇭 A React renderer for Three.js (web and react-native)

react-three-fiber react-three-fiber is a React renderer for threejs on the web and react-native. npm install three react-three-fiber These demos are r

Poimandres 20.6k Dec 7, 2022
🇨🇭 A React renderer for Three.js (web and react-native)

react-three-fiber react-three-fiber is a React renderer for threejs on the web and react-native. npm install three react-three-fiber These demos are r

Poimandres 20.6k Dec 4, 2022
Experiments to see the advantages of using Web Workers to Render React Virtual DOM

React Renderer using Web Workers A React Custom renderer using Web Workers. All the Virtual DOM reconcilliations happen in a WebWorker thread. Only no

Web Performance 917 Dec 2, 2022
Web-like GUI toolkit for node.js with minimal overhead. Lightweight, GPU-rendered alternative to electron.

title permalink Home / Note: I've noticed (from the increasing number of stars) some people are interested in this, could you please submit your use-c

Kamil Tomšík 886 Nov 28, 2022
Build performant, native and cross-platform desktop applications with native React + powerful CSS like styling.🚀

React NodeGui Build performant, native and cross-platform desktop applications with React. ?? React NodeGUI is powered by React ⚛️ and Qt5 ?? which ma

NodeGui 6.1k Dec 3, 2022
React Native bridge for gtk desktop applications

react-gtk cross-platform react native desktop applications Please ★ this repo if you found it useful ★ ★ ★ Built with Node GTK Built by Silicon Hills

Clay Risser 265 Nov 26, 2022
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: React

Long Nguyen 103 Nov 16, 2022
A framework for building native apps with React.

React Native Learn once, write anywhere: Build mobile apps with React. Getting Started · Learn the Basics · Showcase · Contribute · Community · Suppor

Facebook 106.3k Dec 4, 2022
React JSX Renderer is a React Component for rendering JSX to React nodes.

React JSX Renderer A React Component for Rendering JSX. Description React JSX Renderer is a React Component for rendering JSX to React nodes.

Sho Kusano 43 Nov 28, 2022
🍙 A minimal implementation of react-dom using react-reconciler

react-tiny-dom react-tiny-dom is a minimal implementation of react-dom as custom renderer using React 16 official Renderer API. The purpose of this pr

Jiayi Hu 451 Nov 21, 2022
[ Unmaintained due to raphamorim/react-ape ] React Renderer for low memory applications

React-TV · react-tv: React Renderer for low memory applications. react-tv-cli: React Packager for TVs. Currently under development. import React from

Raphael Amorim 2k Nov 29, 2022
React PDF viewer - A React component to view a PDF document

A React component to view a PDF document. It's written in TypeScript, and powered by React hooks completely.

React PDF Viewer 1.4k Dec 3, 2022
Osd-react-renderer - A custom React renderer for OpenSeadragon

osd-react-renderer A custom React renderer for OpenSeadragon viewer, built using

Lunit Inc. 3 Jan 24, 2022
🌈 React for interactive command-line apps

React for CLIs. Build and test your CLI output using components. Ink provides the same component-based UI building experience that React offers in the

Vadim Demedes 19.5k Nov 30, 2022
render React components to Sketch ⚛️💎

render React components to Sketch; tailor-made for design systems Quick-start ??‍ First, make sure you have installed Sketch version 50+, & a recent n

Airbnb 14.9k Dec 7, 2022
⚛️ A React renderer for Figma

React Figma A React renderer for Figma. Use React components as a source for your designs. ?? Compatible with react-native, react-sketchapp, react-pri

React Figma 2.1k Dec 1, 2022
Create amazing 360 and VR content using React

React 360 React 360 is a framework for the creation of interactive 360 experiences that run in your web browser. It pairs modern APIs like WebGL and W

Facebook Archive 8.7k Dec 3, 2022
⃝ A react null renderer

Nothing to see here ... Quite so. This package allows you to bring Reacts high-level component abstraction to Node, or wherever you need it. Why not m

Poimandres 648 Dec 1, 2022
📄 Create PDF files using React

React renderer for creating PDF files on the browser and server Lost? This package is used to create PDFs using React. If you wish to display existing

Diego Muracciole 11.5k Dec 8, 2022