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

Consider supporting Proxy #33

Closed
tychota opened this issue Jul 13, 2019 · 88 comments
Closed

Consider supporting Proxy #33

tychota opened this issue Jul 13, 2019 · 88 comments
Labels
enhancement New feature or request

Comments

@tychota
Copy link

tychota commented Jul 13, 2019

In https://github.com/facebook/hermes/blob/master/doc/Features.md Proxy is listed as Excluded From Support. With

Hermes plans to target ECMAScript 2015 (ES6), with some carefully considered exceptions.

What are those considerations regarding Proxy?

Especially some library in JS environnement like:

  • mobx 5
  • immer
    rely on proxy support. It is super usefully to add observability upon an object access which helps building reactive apps.

Would it be technically possible to have support as an external / optionnal *. aar so it does bot affect the size of hermes ?

Solves:

@creativefctr
Copy link

I think this is a very important feature! After Redux, MobX is the most used state management solution with React which is getting more popular every day.

@lishine
Copy link

lishine commented Jul 14, 2019

Not only that, many state management libs are based on proxy, such as react-easy-state, and many other include Immer, such as easy-peasy.

@tlvenn
Copy link

tlvenn commented Jul 15, 2019

It seems there is a misconception that Immer or Mobx absolutely need proxy to work which is not true.

https://twitter.com/mweststrate/status/1150138659909361665

@itsMapleLeaf
Copy link

They're not required, but performance with proxies is significantly faster than with JS getter/setter properties. That, and non-proxy builds have some pitfalls that don't exist in proxy builds.

@dulinriley dulinriley added the enhancement New feature or request label Jul 15, 2019
@crutkas
Copy link

crutkas commented Jul 16, 2019

For helping prioritizing, does anyone have data that shows popular apps / libraries are performing badly without this? Just like any team, prioritizing features and resources is critical.

@lishine, do you have a list? the more data and targeted we can be, the more we can measure

@lishine
Copy link

lishine commented Jul 16, 2019

Performance comparison aside, the bellow state management libs do not use immer, they rely on proxy and symbols, I have used them or considered to use, and there are many more:
react-easy-state
parket
react-recollect

Of course they are not big sharks like mobx, but are useful for their size, speed, simpliness and easiness.

@fbartho
Copy link

fbartho commented Jul 16, 2019

We too rely on Proxy for a small chunk of our infrastructure. -- Before JSC supported it, we wrote a micro-ponyfill that sort of implemented some of the features we needed. (It's impossible to Polyfill most of the Proxy API because it requires low level engine support). It had so many caveats that we did not publish this as open-source.

It would definitely be ideal if Hermes added support for this API! -- We don't need the full Reflection API / I don't think I even understand what that would entail, but Proxy is super powerful on its own.

@chevonc
Copy link

chevonc commented Jul 19, 2019

+1. Proxy support would be great to have as well. We decorate our data models with a Proxy caching layer to speed up computations. We're also intending to upgrade keep up-to-date with mobx, but lack of support in hermes would bar us from doing so

@iEchoic
Copy link

iEchoic commented Jul 23, 2019

+1 - MobX aside, proxies are incredibly useful constructs that we want to use directly in our own code and cannot while using Hermes.

@tcodes0
Copy link

tcodes0 commented Jul 23, 2019

I'm working on crypto projects and ethereum js uses Proxy. Support for this on hermes would be highly desireable

@mtford90
Copy link

Proxies allow for a somewhat cleaner API when inspecting and debugging e.g. with mobx v5. This would be awesome to have.

@fossage
Copy link

fossage commented Jul 27, 2019

@crutkas

Regarding performance benchmarks:

From the Immer docs

The ES5 fallback implementation is roughly twice as slow as the proxy implementation, in some cases worse.

Considering the operations are generally very quick anyway, this doesn't seem like the biggest deal in the world. That being said, I think proxy support would be a fantastic addition to Hermes. As proxy support in general becomes more widespread, I think we will see more and more libraries taking advantage of them, and potentially even omitting support for non-proxy environments all together. It would be a real shame to be locked out of certain parts of the ecosystem because one aspect of your JS runtime couldn't support it.

All of that being said, this is a really cool project and thanks for working on it!

*Unfortunately I have yet to find any benchmarks on MobX4(non-proxy version) vs MobX5(proxy version).

@carlosroberto555
Copy link

I have used a library that uses mobx5, but when I install on my project with hermes I need to make manual change to mobx4 on yarn.lock, etc
This is complicated, because can on future come more libraries using proxy and with hermes will be impossible to use.

Please consider proxy support.

@d4rky-pl
Copy link

To keep the engine’s size small, we have chosen not to support a few language features that do not appear to be commonly used in React Native apps, such as proxies (...)
Source

I believe this is a very dishonest take, considering the support for proxies was broken for Android since forever so people were coming up with workarounds to avoid using them in the first place

@driley-emoney
Copy link

Proxy allows for a whole realm of capabilities, previously impossible in javascript. By blocking it because its "underused" is preventing those capabilities from being explored.

The ability to analyze which properties a function accesses has some great advantages. Currently we use it to know exactly which parts of our state to persist on redux state changes.

We don't use it in any type of situation where it would create a performance problem. Both the claims for not implementing (underuse, performance) are invalid.

@mhorowitz
Copy link
Contributor

I’d like to explain a little more about our thoughts on Proxy. Our concern is that Proxy inserts itself into the JS engine in many places. In an interpreted engine like Hermes, this adds overhead, even if Proxy is never used. For example, when looking up a property on an object, now Hermes needs to check on every call if the object is a Proxy, and branch to a separate code path, even if this branch is never taken. This is not a large cost, but it happens very, very often. Even a little extra cost repeated many times can add latency, even with CPU branch prediction. There are also performance improvements we’d like to investigate which use static analysis of the JS code, but with Proxy, static analysis becomes much harder.

That said, it would appear that our evaluation of the use of Proxy was inadequate. We looked at Facebook RN apps (of which there are many), and FB does not use any of the packages in common use in the community which depend on Proxy. This led us to believe Proxy wasn’t important, but it is now one of our most requested features.

We have begun to investigate how we can implement Proxy without significant impact to performance, and we hope we can build something which meets the needs of the community. But, since we hadn’t originally planned on doing this work, it’s a low priority task, so we can’t give any estimate when Proxy would be available for Hermes. We ask for your patience as we investigate the best way to move forward.

@driley-emoney
Copy link

@mhorowitz thanks for providing the explanation. I'm a bit out of my depth with how the VM works, but curios... Is similar branching already happening with computed properties like getters? To me it seems like a similar scenario where you have to execute some code when a property is accessed.

@mhorowitz
Copy link
Contributor

Yes, property accessors also require branching, and we've been careful to minimize those costs. We can overlap the checks in some places, due to the nature of C++ bit comparisons, but not everywhere. Mainly, proxies modify a lot more code paths than accessors do. For example, there's no accessor equivalent to the ownKeys and getOwnPropertyDescriptor traps, and these end up affecting the behavior of a surprising amount of the system.

@sirsavary
Copy link

@mhorowitz I'm not a totally versed on VMs but would it not be possible to put Proxy behind some sort of flag? I'm sure some people wouldn't mind opting into the performance hit for improve DX w/ proxies

@mhorowitz
Copy link
Contributor

mhorowitz commented Oct 1, 2019

It would be possible to make it a build flag, but this creates long-term support issues. Flags combine to describe a exponential number of builds. So either everyone need to build the VM from source to set the flags they want, which complicates integration, or we need to create an ever-increasing number of binary releases to support combinations of flags. So this is not a first-choice strategy.

@jamonholmgren
Copy link

Could you statically analyze the JS code bundle when you load it to look for Proxy and eliminate any proxy-related code paths if it’s not used in the code base, @mhorowitz? This is one benefit to having all of the JS code known at load time.

@mhorowitz
Copy link
Contributor

This is an interesting idea. In some sense, this is similar to what JITs do when they generate machine code based on observation of the code itself.

My initial impression is that like a JIT, the tradeoff is not ideal for mobile apps. Android is eliminating writable code pages, so we'd need to ship two copies of the engine, or to be able to copy the entire engine with some pieces removed. Either is plausible, but it seems like it would impose nontrivial costs in app size, or in startup I/O. We could move this decision to compile time, and ship only a single engine, based on the JS code at build time, but then technology like code push could add use of Proxy, which could cause issues.

If instead we can structure the implementation to make Proxy very low cost even when present and unused, that seems like the best overall solution.

@ShaMan123
Copy link

+1

@mateosilguero
Copy link

@schrulnz you could do: npm install [email protected]

@schrulnz
Copy link

Sorry, I had a little mistake in my comment. I already did npm install [email protected]. But React Native still uses the v0.5.1 as dependency. Do I have to change something in the RN installation?

@mateosilguero
Copy link

No, no extra changes are needed. Did you see "hermes-engine": "0.5.2-rc1", at your package.json ?

@evelant
Copy link

evelant commented Oct 16, 2020

@schrulnz To rule out any caching issues you could delete node_modules and package-lock.json (beware removing package lock can cause minor version changes depending on your package.json but usually it isn't an issue) then run npm install again. Then go to your android folder and run ./gradlew clean.

As long as your package.json says "hermes-engine": "0.5.2-rc1", those steps will ensure the correct version gets installed.

@schrulnz
Copy link

Thanks for the help. @mateosilguero, yes my package.json says "hermes-engine": "0.5.2-rc1",. But even after the steps of @AndrewMorsillo, my package-lock.json holds "hermes-engine": { "version": "0.5.1",in dependencies > "react-native" > dependencies.

Also in package-lock.json, dependencies > "hermes-engine", it says ""version": "0.5.2-rc1", though. So to me it seems like the npm install works fine, but RN is installing the 0.5.1 version and not using rc1.

@schrulnz
Copy link

I solved my issue by using npm-force-resolutions: https://stackoverflow.com/a/62956076/12984119. This overrides nested npm dependency versions.

@Evan-Younan
Copy link

Evan-Younan commented Nov 16, 2020

@a-eid @Kikketer noted that at https://github.com/facebook/hermes/releases, we explicitly documented the specific RN version that a Hermes release is aimed at, e.g. v0.5.* was for RN 0.63.*, while the 0.6.* and 0.7.* were both for RN's upcoming 0.64.*.

The rule of thumb is just to follow it strictly, since that's the combination we've tested and ensured that they should work. If you encountered instant crash on your apps, it's very likely a version mismatch.

I think the issue is the lack of this documentation on the actual Hermes setup pages and README file. I only ever found out about the compatibility through this thread. Maybe a reference to this versioning should be cited in both?

Huxpro added a commit to Huxpro/react-native-website that referenced this issue Dec 1, 2020
Hermes works more reliably following the versions explicitly documented in its releases page.

This is suggested by the community at facebook/hermes#33 (comment)
Huxpro added a commit to Huxpro/react-native-website that referenced this issue Dec 1, 2020
Hermes works more reliably following the versions explicitly documented in its releases page.

This is suggested by the community at facebook/hermes#33 (comment)
facebook-github-bot pushed a commit that referenced this issue Dec 1, 2020
Summary:
Hermes works more reliably following the versions explicitly documented in its
releases page. This is suggested by the community at
[#33 (comment)](#33 (comment))

Reviewed By: mhorowitz

Differential Revision: D25236153

fbshipit-source-id: e05ff71507172aa8a88444d505764d5e89d6978a
Simek added a commit to facebook/react-native-website that referenced this issue Dec 4, 2020
* Update hermes.md to include RN compatibility

Hermes works more reliably following the versions explicitly documented in its releases page.

This is suggested by the community at facebook/hermes#33 (comment)

* port the addition to the base docs

Co-authored-by: Bartosz Kaszubowski <[email protected]>
sunnylqm added a commit to reactnativecn/react-native-website that referenced this issue Dec 7, 2020
commit 82142cc
Merge: 38be89c aa97a8f
Author: sunnylqm <[email protected]>
Date:   Mon Dec 7 17:10:40 2020 +0800

    Merge branch 'master' of https://github.com/facebook/react-native-website into facebook-master

    # Conflicts:
    #	website/core/Footer.js

commit 38be89c
Merge: 0d9a929 bcb8a3d
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 16:46:37 2020 +0800

    Merge pull request #315 from noah227/production

    做了一些调整

commit bcb8a3d
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 15:47:32 2020 +0800

    Update pressable.md

commit 0d9a929
Merge: e9c11c0 d959587
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 15:14:38 2020 +0800

    Merge pull request #316 from hqwlkj/patch-4

    Update typescript.md

commit d959587
Author: Yanghc <[email protected]>
Date:   Mon Dec 7 15:02:20 2020 +0800

    Update typescript.md

commit 21eeb45
Author: noah227 <[email protected]>
Date:   Mon Dec 7 12:10:33 2020 +0800

commit e9c11c0
Merge: 3ebae53 dbac391
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 11:10:45 2020 +0800

    Merge pull request #309 from noah227/production

    cndocs pressable translation(partially)

commit dbac391
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 11:06:28 2020 +0800

    Update pressable.md

commit aa97a8f
Author: Ray Holland <[email protected]>
Date:   Sat Dec 5 17:06:02 2020 -0600

    Update drawerlayoutandroid.md (facebook#2342)

    * Update drawerlayoutandroid.md

    More detailed example of how to use openDrawer and closeDrawer

    * revert changes, update snack example, update base docs

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit 92f92be
Author: Ilya Zarembsky <[email protected]>
Date:   Sat Dec 5 17:22:46 2020 -0500

    Recommend Node be installed via nvm-windows (facebook#2312)

    * Recommend Node be installed via nvm-windows

    By installing Node via nvm-windows instead of directly, users will be able to easily switch between the multiple different versions of Node that their various projects may require.

    * Pacify language linter

    * convert nvm addition to separate paragraph, update base docs

    * revert change in versioned docs

    Co-authored-by: Ilya Zarembsky <[email protected]>
    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit e50d8a4
Author: Bartosz Kaszubowski <[email protected]>
Date:   Sat Dec 5 22:54:33 2020 +0100

    fix few Lighthouse warnings, remove old Footer file (facebook#2371)

commit ecd6041
Author: Bartosz Kaszubowski <[email protected]>
Date:   Sat Dec 5 20:44:50 2020 +0100

    update Share, Shadow and View Props pages to match latest patterns (facebook#2370)

commit 03eb786
Author: Luis Miguel Alvarado <[email protected]>
Date:   Sat Dec 5 14:13:36 2020 -0400

    [docs]: Add 0.64 required updates to the documentation - Part 1/x (facebook#2368)

    * Add support for shadowColor on Android >= 28

    * Add support to image progress event on Android

    * ScrollView now supports contentOffset in Android

    * Add showSoftInputOnFocus to TextInput on iOS

    * Removed DEPRECATED_sendUpdatedChildFrames prop from ScrollView

    * Added unstable_pressDelay prop to Pressable

    * Apply suggested changes

commit 0ad8af3
Author: Bartosz Kaszubowski <[email protected]>
Date:   Sat Dec 5 14:57:59 2020 +0100

    add loading param to remark-snackplayer plugin (facebook#2367)

commit 3e30040
Author: Magnus Brattlöf <[email protected]>
Date:   Sat Dec 5 14:57:42 2020 +0100

    Extends and class are no longer part of the example code 'above'. Add… (facebook#2366)

    * Extends and class are no longer part of the example code 'above'. Added the arrow function as an additional example

    * use fix from the current docs

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit 48e2417
Author: Xuan Huang (黄玄) <[email protected]>
Date:   Fri Dec 4 09:12:36 2020 -0800

    Update hermes.md to include RN compatibility (facebook#2361)

    * Update hermes.md to include RN compatibility

    Hermes works more reliably following the versions explicitly documented in its releases page.

    This is suggested by the community at facebook/hermes#33 (comment)

    * port the addition to the base docs

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit 3c72887
Author: Xuan Huang (黄玄) <[email protected]>
Date:   Fri Dec 4 08:18:34 2020 -0800

    Update hermes.md to explain debugging on Hermes (facebook#2360)

    * Update hermes.md to explain debugging on Hermes

    This has been a frequently source of confusion. See facebook/hermes#48 (comment) for an example.

    * fix link format, update base docs

    * add missing tweak to base docs

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit c5f95fa
Author: Bartosz Kaszubowski <[email protected]>
Date:   Thu Dec 3 19:19:36 2020 +0100

    fix "Javascript" capitalization typo across all docs (facebook#2365)

commit 572843a
Author: Moti Zilberman <[email protected]>
Date:   Thu Dec 3 17:50:57 2020 +0000

    Javascript->JavaScript in native-modules-intro (facebook#2364)

    Capitalisation fix.

commit 1e82527
Author: lauramedalia <[email protected]>
Date:   Thu Dec 3 10:01:42 2020 -0500

    Updating Native Modules Documentation (facebook#2261)

    * feat: updating Native Modules docs

    * feat: update native modules documentation (missed the docs changes)

    * converting nativemodules to native modules

    * language lint tweaks

    * Update docs/native-modules-ios.md

    * feat: apply code review comments that needed grammer. changes

    * feat: updating intro

    * feat: apply comment changes

    * feat: remove () from method names

    * feat: cleaning up docs/responding to comments

    * feat: adding the new titles to the original docs

    * feat: updating base doc title

    * feat:  cleaning up notes and removing references to other mobile platforms in mobile platform docs

    * feat: updating some we's to you's

    * pulling direct manipulation out

    * fixing some outstanding yous and wes

    * updating these to new titles

    * move ios/android native components section under native components

    * Adding platform agnostic note back (it was removed when removing content related to iOS from this androids section)

    * fixing an out of date link to the getting started guides

    * correcting link

    * adding turbomodules note

    * adding parentheses for method names

    * native module consistency

    * editing run ios/android commands

    * using correct code block for java

    * removing this file, must have stuck around after a merge conflict but its not needed but it should no longer exist in docusouras V2 (i18n will be added in the future)

    * only editing in 0.63 moving forward

    * original_id is not needed

    * cleaning up white space

    * using correct Apostrophe characters

    * moving argument types to a table

    * adding note about where we are adding the method

    * adding a link to info on turbo modules

    Co-authored-by: lauramedalia <[email protected]>
    Co-authored-by: Ramanpreet Nara <[email protected]>

commit bfe4f83
Author: Bartosz Kaszubowski <[email protected]>
Date:   Thu Dec 3 11:25:03 2020 +0100

    refreshed FB OSS logo, footer and menu small UI tweaks (facebook#2362)

commit 3ebae53
Author: sunnylqm <[email protected]>
Date:   Thu Dec 3 16:28:49 2020 +0800

    Trigger update

commit feb0d32
Author: Ben McDonald <[email protected]>
Date:   Thu Dec 3 02:00:26 2020 -0500

    Update intro-react-native-components.md (facebook#2363)

    Small typo.  A grammatical fix.

commit 7d6a964
Author: Harsh Thakkar <[email protected]>
Date:   Wed Dec 2 05:44:52 2020 +0530

    Installation word spelling mistake (facebook#2353)

    * Installation word spelling mistake

    * fix remaining "intallation" typos

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit f3ee2ef
Author: Jessica Lin <[email protected]>
Date:   Tue Dec 1 15:39:30 2020 -0800

    Add Call of Duty Companion App, NerdWallet, Foreca, LendMN, and FlipKart into showcase (facebook#2344)

    * Add Call of Duty Companion App and NerdWallet into showcase

    * Move Discord up on showcase

    * Add FlipKart, Foreca, LendMN to showcase

commit dcfcda3
Author: Bartosz Kaszubowski <[email protected]>
Date:   Mon Nov 30 14:00:44 2020 +0100

    add simple React Native logo animation (facebook#2339)

commit 2354d56
Author: Bartosz Kaszubowski <[email protected]>
Date:   Mon Nov 30 13:58:44 2020 +0100

    small tweaks for the docs sidebar (facebook#2359)

commit 87fa863
Author: Bartosz Kaszubowski <[email protected]>
Date:   Mon Nov 30 13:17:45 2020 +0100

    add temporary fix for navbar overflow issue (facebook#2358)

    * add temporary fix for navbar overflow issue

    * small tweak

commit 572f7a7
Author: noah227 <[email protected]>
Date:   Sun Nov 29 19:03:47 2020 +0800

    pressable.md 翻译(不完全)小调整

commit 267770c
Author: noah227 <[email protected]>
Date:   Sun Nov 29 18:49:13 2020 +0800

    pressable.md 翻译细微调整

commit 53c6718
Author: noah227 <[email protected]>
Date:   Sun Nov 29 18:38:51 2020 +0800

    most part translated.

commit 27a3372
Author: luism3861 <[email protected]>
Date:   Fri Nov 27 13:10:22 2020 -0600

    update link name in MaskedViewIOS (facebook#2354)

    Co-authored-by: luism3861 <[email protected]>

commit e73993f
Author: Khalid Magdy Khalil <[email protected]>
Date:   Fri Nov 27 21:06:31 2020 +0200

    Update running-on-device.md (facebook#2357)

    * Update running-on-device.md

    Remove the parts that mention xip.io since it's no longer used.
    facebook/react-native@40a8434#diff-0eeea47fa4bace26fa6c492a03fa0ea3923a2d8d54b7894f7760cb9131ab65eb

    * Update running-on-device.md

commit 2f651e4
Author: HenokT <[email protected]>
Date:   Thu Nov 26 19:56:42 2020 +0300

    Minor grammar correction to tutorial.md (facebook#2351)

    * Update tutorial.md

    * Update tutorial.md for version-0.62
sunnylqm added a commit to reactnativecn/react-native-website that referenced this issue Dec 23, 2020
* Init

* Squashed commit of the following:

commit 82142cc
Merge: 38be89c aa97a8f
Author: sunnylqm <[email protected]>
Date:   Mon Dec 7 17:10:40 2020 +0800

    Merge branch 'master' of https://github.com/facebook/react-native-website into facebook-master

    # Conflicts:
    #	website/core/Footer.js

commit 38be89c
Merge: 0d9a929 bcb8a3d
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 16:46:37 2020 +0800

    Merge pull request #315 from noah227/production

    做了一些调整

commit bcb8a3d
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 15:47:32 2020 +0800

    Update pressable.md

commit 0d9a929
Merge: e9c11c0 d959587
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 15:14:38 2020 +0800

    Merge pull request #316 from hqwlkj/patch-4

    Update typescript.md

commit d959587
Author: Yanghc <[email protected]>
Date:   Mon Dec 7 15:02:20 2020 +0800

    Update typescript.md

commit 21eeb45
Author: noah227 <[email protected]>
Date:   Mon Dec 7 12:10:33 2020 +0800

commit e9c11c0
Merge: 3ebae53 dbac391
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 11:10:45 2020 +0800

    Merge pull request #309 from noah227/production

    cndocs pressable translation(partially)

commit dbac391
Author: Sunny Luo <[email protected]>
Date:   Mon Dec 7 11:06:28 2020 +0800

    Update pressable.md

commit aa97a8f
Author: Ray Holland <[email protected]>
Date:   Sat Dec 5 17:06:02 2020 -0600

    Update drawerlayoutandroid.md (facebook#2342)

    * Update drawerlayoutandroid.md

    More detailed example of how to use openDrawer and closeDrawer

    * revert changes, update snack example, update base docs

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit 92f92be
Author: Ilya Zarembsky <[email protected]>
Date:   Sat Dec 5 17:22:46 2020 -0500

    Recommend Node be installed via nvm-windows (facebook#2312)

    * Recommend Node be installed via nvm-windows

    By installing Node via nvm-windows instead of directly, users will be able to easily switch between the multiple different versions of Node that their various projects may require.

    * Pacify language linter

    * convert nvm addition to separate paragraph, update base docs

    * revert change in versioned docs

    Co-authored-by: Ilya Zarembsky <[email protected]>
    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit e50d8a4
Author: Bartosz Kaszubowski <[email protected]>
Date:   Sat Dec 5 22:54:33 2020 +0100

    fix few Lighthouse warnings, remove old Footer file (facebook#2371)

commit ecd6041
Author: Bartosz Kaszubowski <[email protected]>
Date:   Sat Dec 5 20:44:50 2020 +0100

    update Share, Shadow and View Props pages to match latest patterns (facebook#2370)

commit 03eb786
Author: Luis Miguel Alvarado <[email protected]>
Date:   Sat Dec 5 14:13:36 2020 -0400

    [docs]: Add 0.64 required updates to the documentation - Part 1/x (facebook#2368)

    * Add support for shadowColor on Android >= 28

    * Add support to image progress event on Android

    * ScrollView now supports contentOffset in Android

    * Add showSoftInputOnFocus to TextInput on iOS

    * Removed DEPRECATED_sendUpdatedChildFrames prop from ScrollView

    * Added unstable_pressDelay prop to Pressable

    * Apply suggested changes

commit 0ad8af3
Author: Bartosz Kaszubowski <[email protected]>
Date:   Sat Dec 5 14:57:59 2020 +0100

    add loading param to remark-snackplayer plugin (facebook#2367)

commit 3e30040
Author: Magnus Brattlöf <[email protected]>
Date:   Sat Dec 5 14:57:42 2020 +0100

    Extends and class are no longer part of the example code 'above'. Add… (facebook#2366)

    * Extends and class are no longer part of the example code 'above'. Added the arrow function as an additional example

    * use fix from the current docs

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit 48e2417
Author: Xuan Huang (黄玄) <[email protected]>
Date:   Fri Dec 4 09:12:36 2020 -0800

    Update hermes.md to include RN compatibility (facebook#2361)

    * Update hermes.md to include RN compatibility

    Hermes works more reliably following the versions explicitly documented in its releases page.

    This is suggested by the community at facebook/hermes#33 (comment)

    * port the addition to the base docs

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit 3c72887
Author: Xuan Huang (黄玄) <[email protected]>
Date:   Fri Dec 4 08:18:34 2020 -0800

    Update hermes.md to explain debugging on Hermes (facebook#2360)

    * Update hermes.md to explain debugging on Hermes

    This has been a frequently source of confusion. See facebook/hermes#48 (comment) for an example.

    * fix link format, update base docs

    * add missing tweak to base docs

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit c5f95fa
Author: Bartosz Kaszubowski <[email protected]>
Date:   Thu Dec 3 19:19:36 2020 +0100

    fix "Javascript" capitalization typo across all docs (facebook#2365)

commit 572843a
Author: Moti Zilberman <[email protected]>
Date:   Thu Dec 3 17:50:57 2020 +0000

    Javascript->JavaScript in native-modules-intro (facebook#2364)

    Capitalisation fix.

commit 1e82527
Author: lauramedalia <[email protected]>
Date:   Thu Dec 3 10:01:42 2020 -0500

    Updating Native Modules Documentation (facebook#2261)

    * feat: updating Native Modules docs

    * feat: update native modules documentation (missed the docs changes)

    * converting nativemodules to native modules

    * language lint tweaks

    * Update docs/native-modules-ios.md

    * feat: apply code review comments that needed grammer. changes

    * feat: updating intro

    * feat: apply comment changes

    * feat: remove () from method names

    * feat: cleaning up docs/responding to comments

    * feat: adding the new titles to the original docs

    * feat: updating base doc title

    * feat:  cleaning up notes and removing references to other mobile platforms in mobile platform docs

    * feat: updating some we's to you's

    * pulling direct manipulation out

    * fixing some outstanding yous and wes

    * updating these to new titles

    * move ios/android native components section under native components

    * Adding platform agnostic note back (it was removed when removing content related to iOS from this androids section)

    * fixing an out of date link to the getting started guides

    * correcting link

    * adding turbomodules note

    * adding parentheses for method names

    * native module consistency

    * editing run ios/android commands

    * using correct code block for java

    * removing this file, must have stuck around after a merge conflict but its not needed but it should no longer exist in docusouras V2 (i18n will be added in the future)

    * only editing in 0.63 moving forward

    * original_id is not needed

    * cleaning up white space

    * using correct Apostrophe characters

    * moving argument types to a table

    * adding note about where we are adding the method

    * adding a link to info on turbo modules

    Co-authored-by: lauramedalia <[email protected]>
    Co-authored-by: Ramanpreet Nara <[email protected]>

commit bfe4f83
Author: Bartosz Kaszubowski <[email protected]>
Date:   Thu Dec 3 11:25:03 2020 +0100

    refreshed FB OSS logo, footer and menu small UI tweaks (facebook#2362)

commit 3ebae53
Author: sunnylqm <[email protected]>
Date:   Thu Dec 3 16:28:49 2020 +0800

    Trigger update

commit feb0d32
Author: Ben McDonald <[email protected]>
Date:   Thu Dec 3 02:00:26 2020 -0500

    Update intro-react-native-components.md (facebook#2363)

    Small typo.  A grammatical fix.

commit 7d6a964
Author: Harsh Thakkar <[email protected]>
Date:   Wed Dec 2 05:44:52 2020 +0530

    Installation word spelling mistake (facebook#2353)

    * Installation word spelling mistake

    * fix remaining "intallation" typos

    Co-authored-by: Bartosz Kaszubowski <[email protected]>

commit f3ee2ef
Author: Jessica Lin <[email protected]>
Date:   Tue Dec 1 15:39:30 2020 -0800

    Add Call of Duty Companion App, NerdWallet, Foreca, LendMN, and FlipKart into showcase (facebook#2344)

    * Add Call of Duty Companion App and NerdWallet into showcase

    * Move Discord up on showcase

    * Add FlipKart, Foreca, LendMN to showcase

commit dcfcda3
Author: Bartosz Kaszubowski <[email protected]>
Date:   Mon Nov 30 14:00:44 2020 +0100

    add simple React Native logo animation (facebook#2339)

commit 2354d56
Author: Bartosz Kaszubowski <[email protected]>
Date:   Mon Nov 30 13:58:44 2020 +0100

    small tweaks for the docs sidebar (facebook#2359)

commit 87fa863
Author: Bartosz Kaszubowski <[email protected]>
Date:   Mon Nov 30 13:17:45 2020 +0100

    add temporary fix for navbar overflow issue (facebook#2358)

    * add temporary fix for navbar overflow issue

    * small tweak

commit 572f7a7
Author: noah227 <[email protected]>
Date:   Sun Nov 29 19:03:47 2020 +0800

    pressable.md 翻译(不完全)小调整

commit 267770c
Author: noah227 <[email protected]>
Date:   Sun Nov 29 18:49:13 2020 +0800

    pressable.md 翻译细微调整

commit 53c6718
Author: noah227 <[email protected]>
Date:   Sun Nov 29 18:38:51 2020 +0800

    most part translated.

commit 27a3372
Author: luism3861 <[email protected]>
Date:   Fri Nov 27 13:10:22 2020 -0600

    update link name in MaskedViewIOS (facebook#2354)

    Co-authored-by: luism3861 <[email protected]>

commit e73993f
Author: Khalid Magdy Khalil <[email protected]>
Date:   Fri Nov 27 21:06:31 2020 +0200

    Update running-on-device.md (facebook#2357)

    * Update running-on-device.md

    Remove the parts that mention xip.io since it's no longer used.
    facebook/react-native@40a8434#diff-0eeea47fa4bace26fa6c492a03fa0ea3923a2d8d54b7894f7760cb9131ab65eb

    * Update running-on-device.md

commit 2f651e4
Author: HenokT <[email protected]>
Date:   Thu Nov 26 19:56:42 2020 +0300

    Minor grammar correction to tutorial.md (facebook#2351)

    * Update tutorial.md

    * Update tutorial.md for version-0.62

* Update

* Update prettier

* Update security

* WIP

* Update

* Add sponsor and remove old doc

* Update

* Update

* Update

* Update

* Fix environment setting

* Update integration

* Update integration

* Update integration

* Update tabs

* Archive doc

* Update index

* Update introduction

* Fix docs

* Update docusaurus

* Update github action
@byteab
Copy link

byteab commented Jan 24, 2021

what about react native firebase. it will not work with proxy anymore

@mhorowitz
Copy link
Contributor

mhorowitz commented Mar 12, 2021

Proxy is now enabled by default starting from RN 0.64:

We have added Proxy support to Hermes, enabling compatibility with popular community projects like react-native-firebase and mobx. If you have been using these packages you can now migrate to Hermes for your project.

-- https://reactnative.dev/blog/2021/03/11/version-0.64#hermes-with-proxy-support

@yzhangdegit
Copy link

In order to make it easy to use ES6 Proxy, we've created an npm you can use to opt-in: https://twitter.com/HermesEngine/status/1245136667414913024

  1. Upgrade your app to React Native 0.62
  2. npm install [email protected]
  3. build and install your app

This will only work with RN 0.62. If your using an older version of RN you must upgrade to use Proxy. Using Hermes 0.4.x with RN 0.61.x will most likely crash.

If you use Proxy, or a library which uses Proxy, please let us know your experiences here! Once we have confidence this is stable for the community, we will enable Proxy by default.

If you observe any bugs with Proxy, we'd like to know about that, too. Please open a new issue, instead of commenting here. Thanks!

thanks! it's work. I have another question, enableHermes is working ,but there is no significant improvement in performance? I don't have any ideas.

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

No branches or pull requests