react/packages/shared
Andrew Clark d364d8555f
Set up experimental builds (#17071)
* Don't bother including `unstable_` in error

The method names don't get stripped out of the production bundles
because they are passed as arguments to the error decoder.

Let's just always use the unprefixed APIs in the messages.

* Set up experimental builds

The experimental builds are packaged exactly like builds in the stable
release channel: same file structure, entry points, and npm package
names. The goal is to match what will eventually be released in stable
as closely as possible, but with additional features turned on.

Versioning and Releasing
------------------------

The experimental builds will be published to the same registry and
package names as the stable ones. However, they will be versioned using
a separate scheme. Instead of semver versions, experimental releases
will receive arbitrary version strings based on their content hashes.
The motivation is to thwart attempts to use a version range to match
against future experimental releases. The only way to install or depend
on an experimental release is to refer to the specific version number.

Building
--------

I did not use the existing feature flag infra to configure the
experimental builds. The reason is because feature flags are designed
to configure a single package. They're not designed to generate multiple
forks of the same package; for each set of feature flags, you must
create a separate package configuration.

Instead, I've added a new build dimension called the **release
channel**. By default, builds use the **stable** channel. There's
also an **experimental** release channel. We have the option to add more
in the future.

There are now two dimensions per artifact: build type (production,
development, or profiling), and release channel (stable or
experimental). These are separate dimensions because they are
combinatorial: there are stable and experimental production builds,
stable and experimental developmenet builds, and so on.

You can add something to an experimental build by gating on
`__EXPERIMENTAL__`, similar to how we use `__DEV__`. Anything inside
these branches will be excluded from the stable builds.
This gives us a low effort way to add experimental behavior in any
package without setting up feature flags or configuring a new package.
2019-10-14 10:46:42 -07:00
..
__tests__ Pass prod error messages directly to constructor (#17063) 2019-10-11 09:10:40 -07:00
forks Stop warning about setNativeProps being deprecated (#17045) 2019-10-08 11:21:20 -07:00
ExecutionEnvironment.js give `canUseDOM` with a possibility to be a constant (#14194) 2019-04-25 11:28:53 +01:00
HostConfigWithNoHydration.js Event Replaying (#16725) 2019-09-23 11:21:10 -07:00
HostConfigWithNoMutation.js Hide timed-out children instead of deleting them so their state is preserved (#13823) 2018-10-18 15:37:16 -07:00
HostConfigWithNoPersistence.js Adds experimental fundamental interface (#16049) 2019-07-19 22:20:28 +01:00
ReactDOMTypes.js [react-interactions] Remove context.setTimeout & context.clearTimeout (#17000) 2019-10-03 13:37:37 +02:00
ReactElementType.js Drop the year from Facebook copyright headers and the LICENSE file. (#13593) 2018-09-07 15:11:23 -07:00
ReactErrorUtils.js Drop the year from Facebook copyright headers and the LICENSE file. (#13593) 2018-09-07 15:11:23 -07:00
ReactFeatureFlags.js Set up experimental builds (#17071) 2019-10-14 10:46:42 -07:00
ReactInstanceMap.js Drop the year from Facebook copyright headers and the LICENSE file. (#13593) 2018-09-07 15:11:23 -07:00
ReactLazyComponent.js Partial support for React.lazy() in server renderer. (#16383) 2019-08-13 18:51:20 -07:00
ReactPortal.js Drop the year from Facebook copyright headers and the LICENSE file. (#13593) 2018-09-07 15:11:23 -07:00
ReactRootTags.js Add Batched Mode (#15502) 2019-05-13 14:30:39 -07:00
ReactSharedInternals.js Add withSuspenseConfig API (#15593) 2019-05-16 16:51:18 -07:00
ReactSideEffectTags.js [Partial Hydration] Dispatching events should not work until hydration commits (#16532) 2019-08-22 08:46:20 -07:00
ReactSymbols.js [react-core] Add experimental React Scope component API (#16587) 2019-08-29 12:06:51 +01:00
ReactTreeTraversal.js Drop the year from Facebook copyright headers and the LICENSE file. (#13593) 2018-09-07 15:11:23 -07:00
ReactTypes.js [react-interactions] Adds more experimental Scope API methods (#17042) 2019-10-08 19:32:53 +02:00
ReactVersion.js Update local version numbers for 16.10.2 release 2019-10-03 14:14:10 -07:00
ReactWorkTags.js [react-core] Add experimental React Scope component API (#16587) 2019-08-29 12:06:51 +01:00
createEventResponder.js [react-interactions] Add Portal propagation configuration (#16889) 2019-09-25 16:56:51 +02:00
createFundamentalComponent.js Adds experimental fundamental interface (#16049) 2019-07-19 22:20:28 +01:00
createScope.js [react-core] Add experimental React Scope component API (#16587) 2019-08-29 12:06:51 +01:00
describeComponentFrame.js Drop the year from Facebook copyright headers and the LICENSE file. (#13593) 2018-09-07 15:11:23 -07:00
endsWith.js [Flare] Revise responder event types (#16081) 2019-07-08 14:35:59 +01:00
enqueueTask.js Prevent bundling of Node polyfills when importing TestUtils/TestRenderer (#15305) 2019-04-03 16:12:31 +01:00
formatProdErrorMessage.js Pass prod error messages directly to constructor (#17063) 2019-10-11 09:10:40 -07:00
getComponentName.js [Flare] Redesign core event system (#16163) 2019-07-23 23:46:44 +01:00
hasBadMapPolyfill.js Adds experimental fundamental interface (#16049) 2019-07-19 22:20:28 +01:00
invariant.js Compile invariant directly to throw expressions (#15071) 2019-03-18 13:58:03 -07:00
invokeGuardedCallbackImpl.js fix spelling mistakes (#14805) 2019-02-09 16:43:49 -08:00
isTextInputElement.js Drop the year from Facebook copyright headers and the LICENSE file. (#13593) 2018-09-07 15:11:23 -07:00
isValidElementType.js [react-core] Add experimental React Scope component API (#16587) 2019-08-29 12:06:51 +01:00
lowPriorityWarning.js Warning system refactoring (part 1) (#16799) 2019-09-24 13:45:38 +01:00
lowPriorityWarningWithoutStack.js Warning system refactoring (part 1) (#16799) 2019-09-24 13:45:38 +01:00
objectIs.js Optimize objectIs (#16212) 2019-09-17 23:55:43 +02:00
package.json Drop Haste (#11303) 2017-10-25 02:55:00 +03:00
shallowEqual.js Separate Object.is polyfill (#14334) 2019-01-08 14:21:12 +00:00
warning.js Drop the year from Facebook copyright headers and the LICENSE file. (#13593) 2018-09-07 15:11:23 -07:00
warningWithoutStack.js Use Function.prototype.apply in warningWithoutStack (#14107) 2018-11-05 11:11:33 -08:00