-
Notifications
You must be signed in to change notification settings - Fork 46.9k
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
[Fiber] Umbrella for remaining features / bugs #7925
Comments
Things that I hope would also be appended to this list of features/bugs:
|
@donnieflorence This is a list of things we need to do to get parity with the existing implementation. After we finish these we might look at adding new features. |
How to Help
Note: Contributing is hard right now. It will get easier once more pieces (e.g. DOM attributes and events) are in place. There will be a long trail of issues where community can really help. But if you're feeling adventurous, you can give it a go. Check out older Fiber PRs for inspiration and pieces of information. Example Fiber "easy" PR: #8156. |
In facebook#7925 there is a task to: > Ensure we replace errors with invariant calls and they have sensible > messages While it is likely a bit premature to begin that work, this script will make it easier to find and replace the exact call sites to manage. Usage: ``` sh $ ./scripts/fiber/find-errors ``` ``` sh $ ./scripts/fiber/find-errors --quiet ```
In facebook#7925 there is a task to: > Ensure we replace errors with invariant calls and they have sensible > messages While it is likely a bit premature to begin that work, this script will make it easier to find and replace the exact call sites to manage. Usage: ``` sh $ ./scripts/fiber/find-errors ...lots of output... src/renderers/shared/fiber/ReactFiberScheduler.js#921: throw new Error('No error for given unit of work.'); src/renderers/shared/fiber/ReactFiberScheduler.js#940: throw new Error('Invalid type of work.'); src/renderers/shared/utils/ReactErrorUtils.js#55: throw error; All done. Results: 6 errors 0 unmodified 380 skipped 0 ok Stats: error: 42 Time elapsed: 4.031seconds 42 throw statements to to convert to `invariant` ``` ``` sh $ ./scripts/fiber/find-errors --quiet ...lots of output... src/renderers/shared/fiber/ReactFiberScheduler.js#780: src/renderers/shared/fiber/ReactFiberScheduler.js#785: src/renderers/shared/fiber/ReactFiberScheduler.js#921: src/renderers/shared/fiber/ReactFiberScheduler.js#940: src/renderers/shared/utils/ReactErrorUtils.js#55: All done. Results: 6 errors 0 unmodified 380 skipped 0 ok Stats: error: 42 Time elapsed: 3.728seconds 42 throw statements to to convert to `invariant` ```
In facebook#7925 there is a task to: > Ensure we replace errors with invariant calls and they have sensible > messages While it is likely a bit premature to begin that work, this script will make it easier to find and replace the exact call sites to manage. Usage: ``` sh $ ./scripts/fiber/find-errors ...lots of output... src/renderers/shared/fiber/ReactFiberScheduler.js#921: throw new Error('No error for given unit of work.'); src/renderers/shared/fiber/ReactFiberScheduler.js#940: throw new Error('Invalid type of work.'); src/renderers/shared/utils/ReactErrorUtils.js#55: throw error; All done. Results: 6 errors 0 unmodified 380 skipped 0 ok Stats: error: 42 Time elapsed: 4.031seconds 42 throw statements to to convert to `invariant` ``` ``` sh $ ./scripts/fiber/find-errors --quiet ...lots of output... src/renderers/shared/fiber/ReactFiberScheduler.js#780: src/renderers/shared/fiber/ReactFiberScheduler.js#785: src/renderers/shared/fiber/ReactFiberScheduler.js#921: src/renderers/shared/fiber/ReactFiberScheduler.js#940: src/renderers/shared/utils/ReactErrorUtils.js#55: All done. Results: 6 errors 0 unmodified 380 skipped 0 ok Stats: error: 42 Time elapsed: 3.728seconds 42 throw statements to to convert to `invariant` ```
will you support bind context like VueJS?. So there is no need bind function manually. |
@ssuhat
|
@ssuhat I think they explicitly decided against this a long time ago for being too "magical". Using the experimental property initializer syntax is a nice way to deal with it; you can also try a 3rd party plugin like react-autobind. |
Aside from being "magical," the problem with autobinding is that there's a performance cost to binding methods, and it's wasteful to autobind the ones that don't need it. |
Something akin to Inferno's linkEvent would be good though, skipping binding while allowing data to be passed through. Often I find myself with code in a loop that would benefit from this, e.g.
Being able to drop the binding there would be nice. |
Let's create a separate issue for any further discussions. |
We just moved remaining open items from 6.1-6.3 into #8854 and for now decided to archive this issue. We can open a new 'umbrella' issue or individual issues for items in phases 7-9 after we finish the 16.0 release. |
This is an umbrella issues for remaining fiber issues. More can be found by running the unit tests with the
useFiber
flag inReactDOMFeatureFlags
turned onSee #8830 for additional tasks beyond the scope of the initial Fiber release
Phases 1–6
Phase 1: Infrastructure
Phase 2: Smaller / Initial Tasks
Phase 3: Larger Tasks
Phase 4: Uncovered Bugs
Validate if inputValueTracking does indeed need to be cleaned up on unmountI don't think it needs to but we should revert anywayreact/src/renderers/shared/fiber/ReactFiberBeginWork.js
Line 213 in 705c9bc
updateQueue
instead ofpendingProps
. [@acdlite].output
. [Fiber] Remove output field #8406[fb] Batch different roots together into one commit (ReactUpdates-test)Won't fix. Use Portals instead. Use Portals to test batching across roots #8508Ensure that when we switch on tag names, we cover mixed/upper case. E.g.Won't fix. Instead, we'll warn if upper case is used on HTML tags. [@sebmarkbage] Drop runtime validation and lower case coercion of tag names #8563React.createElement('INPUT')
.Phase 5
andMap
,requestAnimationFrame
requestIdleCallback
. [@sebmarkbage] Polyfill requestIdleCallback when native is not available #8833Phase 6: Unit tests and known bugs push
findDOMNode
bug when used in certain cases fromcomponentWillUnmount
. [@sebmarkbage, @acdlite] [Fiber] Fix findDOMNode algorithm #8897throw new Error
withinvariant
calls and they have sensible messages [@acdlite] [Fiber] Replacethrow new Error
with invariant module #8926let
/const
), maybe fork Babel plugin to throw [@spicyj]childContextTypes
warnings for functional components #9043Phase 6.1: 15.5 Release
@keyanzhang, @sebmarkbage took over this] (blocks beta)prop-types
package name. [@acdlite]context
tocomponentDidUpdate
(or deprecate feature and remove test). [@bvaughn] Pass prevContext param to componentDidUpdate #8631checkPropTypes
APIPhase 6.2: React Native Fiber
<Text>
) (does not block anything but we should do this)fbjs/lib/warning
one in RN. [@spicyj] (doesn't block anything OSS, internal to FB)createStrictPropTypeChecker
away and useexactShape
instead. (doesn't block OSS release)prepareNewChildrenBeforeUnmountInStack
feature flag (one week after landing sync).Codemod Flow errors yielded by properly typing(we added types andfindNodeHandle
.$FlowFixMe
comments; good enough for now)NativeMethodsMixin
to be upgrade compatible. [@bvaughn]ReactNativeComponentTree
doesn't leak. (@sebmarkbage, @bvaughn)Phase 6.3: Flat Bundles/Rollup
if (__DEV__) { ... all of React ... } else { ... all of React }
)Phase 7: Async-Compatible (does not block release)
newProps
gets passed to construct class. Otherwisethis.props
can benull
.Phase 8: Server-Side Rendering
document
and shadow DOM containers)Phase 9: Improvements (does not block release)
getPublicInstance
internal API should consistently be used before exposing any stateNodes.PI
#8751 (comment)We haven't shipped in OSS yet so not too hard to fix-- This will probably get pushed back to 16/17callbackList
[@acdlite] Make callbackList a linked-list instead of an array #8752The text was updated successfully, but these errors were encountered: