React 功能标志
Land 或移除(零努力)
很可能可以删除或 Land 且不会有后果的标志
// -----------------------------------------------------------------------------
// Land or remove (zero effort)
// 着陆或移除(零努力)
//
// Flags that can likely be deleted or landed without consequences
// 很可能可以删除或着陆且不会有后果的标志
// -----------------------------------------------------------------------------
// None
// 无
// -----------------------------------------------------------------------------
// Killswitch
// 紧急开关
//
// Flags that exist solely to turn off a change in case it causes a regression
// when it rolls out to prod. We should remove these as soon as possible.
// 仅存在于关闭某个更改以防止在上线生产环境时引发回归的标志,我们应尽快删除这些标志。
// -----------------------------------------------------------------------------
export const enableHydrationLaneScheduling: boolean = true;
// -----------------------------------------------------------------------------
// Land or remove (moderate effort)
// Land 或移除(中等努力)
//
// Flags that can be probably deleted or landed, but might require extra effort
// like migrating internal callers or performance testing.
// 可能可以删除或合并的标志,但可能需要额外的工作,比如迁移内部调用者或性能测试。
// -----------------------------------------------------------------------------
// Need to remove didTimeout argument from Scheduler before landing
// 在合并前需要从调度器中移除 didTimeout 参数
export const disableSchedulerTimeoutInWorkLoop: boolean = false;
// -----------------------------------------------------------------------------
// Slated for removal in the future (significant effort)
// 未来计划移除(需要大量工作)
//
// These are experiments that didn't work out, and never shipped, but we can't
// delete from the codebase until we migrate internal callers.
// 这些是没有成功的实验,从未发布过,但在迁移内部调用者之前,我们不能从代码库中删除。
// -----------------------------------------------------------------------------
// Add a callback property to suspense to notify which promises are currently
// in the update queue. This allows reporting and tracing of what is causing
// the user to see a loading state.
//
// 为 suspense 添加回调属性,以通知当前哪些 promise 在更新队列中。这允许报告和追踪导致用户
// 看到加载状态的原因。
//
// Also allows hydration callbacks to fire when a dehydrated boundary gets
// hydrated or deleted.
// 还允许在脱水边界被重新水化或删除时触发水化回调。
//
// This will eventually be replaced by the Transition Tracing proposal.
// 这最终将被过渡追踪提案取代。
export const enableSuspenseCallback: boolean = false;
// Experimental Scope support.
// 实验性 Scope 支持。
export const enableScopeAPI: boolean = false;
// Experimental Create Event Handle API.
// 实验性创建事件处理 API。
export const enableCreateEventHandleAPI: boolean = false;
// Support legacy Primer support on internal FB www
// 在内部 FB www 上支持旧版 Primer
export const enableLegacyFBSupport: boolean = false;
// -----------------------------------------------------------------------------
// Ongoing experiments
// 正在进行的实验
//
// These are features that we're either actively exploring or are reasonably
// likely to include in an upcoming release.
// 这些功能是我们正在积极探索的,或者很可能会在即将发布的版本中包含的。
// -----------------------------------------------------------------------------
// Yield to the browser event loop and not just the scheduler event loop before passive effects.
// Fix gated tests that fail with this flag enabled before turning it back on.
//
// 在被动副作用之前,让位于浏览器事件循环,而不仅仅是调度器事件循环。在重新启用此标志之前,修复启用该标志时失败的
// 受控测试。
export const enableYieldingBeforePassive: boolean = false;
// Experiment to intentionally yield less to block high framerate animations.
// 实验故意减少响应以阻止高帧率动画。
export const enableThrottledScheduling: boolean = false;
export const enableLegacyCache = __EXPERIMENTAL__;
export const enableAsyncIterableChildren = __EXPERIMENTAL__;
export const enableTaint = __EXPERIMENTAL__;
export const enableHalt: boolean = true;
export const enableViewTransition: boolean = true;
export const enableGestureTransition = __EXPERIMENTAL__;
export const enableScrollEndPolyfill = __EXPERIMENTAL__;
export const enableSuspenseyImages: boolean = false;
export const enableFizzBlockingRender = __EXPERIMENTAL__; // rel="expect"
export const enableSrcObject = __EXPERIMENTAL__;
export const enableHydrationChangeEvent = __EXPERIMENTAL__;
export const enableDefaultTransitionIndicator = __EXPERIMENTAL__;
export const enableOptimisticKey = __EXPERIMENTAL__;
/**
* Switches Fiber creation to a simple object instead of a constructor.
* 将 Fiber 创建切换为简单对象,而不是构造函数。
*/
export const enableObjectFiber: boolean = false;
export const enableTransitionTracing: boolean = false;
// FB-only usage. The new API has different semantics.
// 仅限 FB 使用。新 API 的语义不同。
export const enableLegacyHidden: boolean = false;
// Enables unstable_avoidThisFallback feature in Fiber
// 在 Fiber 中启用 unstable_avoidThisFallback 功能
export const enableSuspenseAvoidThisFallback: boolean = false;
export const enableCPUSuspense = __EXPERIMENTAL__;
// Test this at Meta before enabling.
// 在启用之前先在 Meta 上测试。
export const enableNoCloningMemoCache: boolean = false;
export const enableUseEffectEventHook: boolean = true;
// Test in www before enabling in open source.
// Enables DOM-server to stream its instruction set as data-attributes
// (handled with an MutationObserver) instead of inline-scripts
//
// 在开放源代码中启用之前,先在 www 中测试。允许 DOM 服务器将其指令集作为数据属性进行
// 流传输(通过 MutationObserver 处理)而不是内联脚本
export const enableFizzExternalRuntime = __EXPERIMENTAL__;
export const alwaysThrottleRetries: boolean = true;
export const passChildrenWhenCloningPersistedNodes: boolean = false;
export const enableEagerAlternateStateNodeCleanup: boolean = true;
/**
* Enables an expiration time for retry lanes to avoid starvation.
* 为重试通道启用过期时间以避免饥饿问题。
*/
export const enableRetryLaneExpiration: boolean = false;
export const retryLaneExpirationMs = 5000;
export const syncLaneExpirationMs = 250;
export const transitionLaneExpirationMs = 5000;
/**
* Enables a new error detection for infinite render loops from updates caused
* by setState or similar outside of the component owning the state.
*
* 启用一种新的错误检测,用于检测由 setState 或类似操作在不拥有该状态的组件外部引起的无限渲染
* 循环的更新。
*/
export const enableInfiniteRenderLoopDetection: boolean = false;
export const enableFragmentRefs: boolean = true;
export const enableFragmentRefsScrollIntoView: boolean = true;
export const enableFragmentRefsInstanceHandles: boolean = false;
export const enableInternalInstanceMap: boolean = false;
// -----------------------------------------------------------------------------
// Ready for next major.
//
// Alias __NEXT_MAJOR__ to __EXPERIMENTAL__ for easier skimming.
// -----------------------------------------------------------------------------
// TODO: Anything that's set to `true` in this section should either be cleaned
// up (if it's on everywhere, including Meta and RN builds) or moved to a
// different section of this file.
// const __NEXT_MAJOR__ = __EXPERIMENTAL__;
// Renames the internal symbol for elements since they have changed signature/constructor
export const renameElementSymbol: boolean = true;
/**
* Enables a fix to run insertion effect cleanup on hidden subtrees.
*/
export const enableHiddenSubtreeInsertionEffectCleanup: boolean = true;
/**
* Removes legacy style context defined using static `contextTypes` and consumed with static `childContextTypes`.
*/
export const disableLegacyContext: boolean = true;
/**
* Removes legacy style context just from function components.
*/
export const disableLegacyContextForFunctionComponents: boolean = true;
// Enable the moveBefore() alternative to insertBefore(). This preserves states of moves.
export const enableMoveBefore: boolean = false;
// Disabled caching behavior of `react/cache` in client runtimes.
export const disableClientCache: boolean = true;
// Warn on any usage of ReactTestRenderer
export const enableReactTestRendererWarning: boolean = true;
// Disables legacy mode
// This allows us to land breaking changes to remove legacy mode APIs in experimental builds
// before removing them in stable in the next Major
export const disableLegacyMode: boolean = true;
// -----------------------------------------------------------------------------
// Chopping Block
//
// Planned feature deprecations and breaking changes. Sorted roughly in order of
// when we plan to enable them.
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// React DOM Chopping Block
//
// Similar to main Chopping Block but only flags related to React DOM. These are
// grouped because we will likely batch all of them into a single major release.
// -----------------------------------------------------------------------------
// Disable support for comment nodes as React DOM containers. Already disabled
// in open source, but www codebase still relies on it. Need to remove.
export const disableCommentsAsDOMContainers: boolean = true;
export const enableTrustedTypesIntegration: boolean = false;
// Prevent the value and checked attributes from syncing with their related
// DOM properties
export const disableInputAttributeSyncing: boolean = false;
// Disables children for <textarea> elements
export const disableTextareaChildren: boolean = false;
// -----------------------------------------------------------------------------
// Debugging and DevTools
// -----------------------------------------------------------------------------
// Gather advanced timing metrics for Profiler subtrees.
export const enableProfilerTimer = __PROFILE__;
// Adds performance.measure() marks using Chrome extensions to allow formatted
// Component rendering tracks to show up in the Performance tab.
// This flag will be used for both Server Component and Client Component tracks.
// All calls should also be gated on enableProfilerTimer.
export const enableComponentPerformanceTrack: boolean = true;
// Enables annotating of React performance track events with `performanceIssue`
// metadata, to more prominently highlight performance issues to users
// (initially, an experimental feature in React Native).
export const enablePerformanceIssueReporting: boolean = false;
// Adds user timing marks for e.g. state updates, suspense, and work loop stuff,
// for an experimental timeline tool.
export const enableSchedulingProfiler: boolean =
!enableComponentPerformanceTrack && __PROFILE__;
// Record durations for commit and passive effects phases.
export const enableProfilerCommitHooks = __PROFILE__;
// Phase param passed to onRender callback differentiates between an "update" and a "cascading-update".
export const enableProfilerNestedUpdatePhase = __PROFILE__;
export const enableAsyncDebugInfo: boolean = true;
// Track which Fiber(s) schedule render work.
export const enableUpdaterTracking = __PROFILE__;
export const ownerStackLimit = 1e4;