Skip to content

[Fiber] Umbrella for remaining features / bugs #7925

Closed
@sebmarkbage

Description

@sebmarkbage

This is an umbrella issues for remaining fiber issues. More can be found by running the unit tests with the useFiber flag in ReactDOMFeatureFlags turned on

See #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

Phase 5

Phase 6: Unit tests and known bugs push


Phase 6.1: 15.5 Release

  • Warn (throw?) when doing an update on a container that was manually emptied outside of React (in stack, this mounted a brand-new tree; in fiber, it tries to apply an update and usually fails) [@keyanzhang, @sebmarkbage took over this] (blocks beta)
  • Extract propTypes into a separate npm package. Get prop-types package name. [@acdlite]
  • Unit tests: ReactContextValidator-test -- Pass the correct previous context to componentDidUpdate (or deprecate feature and remove test). [@bvaughn] Pass prevContext param to componentDidUpdate #8631
  • [fb] Better fix to ReactART.Text.
  • Update warning when calling propTypes directly to refer user to checkPropTypes API
  • Docs updates for test utils and removed add-ons [@flarnie]

Phase 6.2: React Native Fiber

  • Reimplement Shallow Renderer without Stack dependencies [@lelandrichardson/@trueadm] Add createComponentMock option to test renderer #8982
  • RN: ensure we keep all important invariants (such as that text must be wrapped in <Text>) (does not block anything but we should do this)
  • Ensure that we call the FB specific warning module instead of the fbjs/lib/warning one in RN. [@spicyj] (doesn't block anything OSS, internal to FB)
  • Convert propTypes callers to use checkPropTypes. [@acdlite]
  • Deploy forwarding modules to react/lib/ReactCurrentOwner, react/lib/ReactComponentTreeHook, fbjs/lib/invariant, fbjs/lib/warning, fbjs/lib/ExecutionEnvironment, fbjs/lib/performanceNow, fbjs/lib/emptyObject, fbjs/lib/emptyFunction, fbjs/lib/shallowEqual. So that we can keep using providesModule in this repo until we have flat bundles. Or better yet: Do the inverse and switch to using CommonJS naming convention in www. [@sebmarkbage, @bvaughn]
  • See if we can codemod createStrictPropTypeChecker away and use exactShape instead. (doesn't block OSS release)
  • Release a new version of react-redux whose peer is compatible with 16-alpha. Update RN to use it. Add React 16 as a valid peer dep reduxjs/react-redux#629
  • Enable prepareNewChildrenBeforeUnmountInStack feature flag (one week after landing sync).
  • Codemod Flow errors yielded by properly typing findNodeHandle. (we added types and $FlowFixMe comments; good enough for now)
  • Redesign the host component "type", the type of host component refs and integration with NativeMethodsMixin to be upgrade compatible. [@bvaughn]
  • Make sure instanceProps in ReactNativeComponentTree doesn't leak. (@sebmarkbage, @bvaughn)

Phase 6.3: Flat Bundles/Rollup

  • Make React Perf work with Fiber (ReactPerf-test) [@gaearon] (Decided not to in favor of deeper timeline integration)
  • Unit tests: ReactComponentTreeHook-test [@gaearon]
  • Unit tests: ReactHostOperationHistoryHook-test [@gaearon]
  • Make a list of all internal React modules required by FB code
  • Come up with a better strategy for dealing with DEV code and make sure we don't ship it in prod
  • Change www sync script https://fburl.com/juffnc9d to run rollup using commonjs source
    • Shimming the required files (ex: ReactDOMInjection, warning)
    • Exporting a single bundle that exposes the internals we need
    • Make fowarding modules for ReactDOM/etc as well as internal modules
  • Convert OSS repo to ES6 modules (does not block release; nice-to-have follow up)
  • Make separate dev and non-dev build in one file for www (if (__DEV__) { ... all of React ... } else { ... all of React })
  • Convert OSS repo to rollup
  • Replace current Grunt/Gulp build system with a unified build system (maybe purely using Rollup)
  • Add Closure Compiler with ADVANCED and deal with mangling properly (does not block release; nice-to-have follow up)

Phase 7: Async-Compatible (does not block release)

  • Fix incremental regression (if it is a regression)
  • [fb] Fix resumeMountClassInstance so that newProps gets passed to construct class. Otherwise this.props can be null.
  • RN: Aborting async work or unmounting a tree due to an error leaks native views
  • Add cross-renderer support for portals (necessary for async ART)
  • ReactDOMFiber.render - Return the root instance from render even if priority is deferred. Test and cover incremental cases
  • Decide on replacing priorities with deadlines to fix starvation

Phase 8: Server-Side Rendering

  • What are we doing?
  • Unit tests: ReactRenderDocument-test (SSR) -- Reviving server rendered markup (including rendering into document and shadow DOM containers)

Phase 9: Improvements (does not block release)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions