react-native 0.72.0-rc.0 → 0.72.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/Libraries/Core/ReactNativeVersion.js +1 -1
  2. package/Libraries/Core/ReactNativeVersionCheck.js +5 -1
  3. package/Libraries/ReactNative/UIManager.js +27 -1
  4. package/Libraries/Renderer/implementations/ReactFabric-dev.js +26 -3
  5. package/Libraries/Renderer/implementations/ReactFabric-prod.js +13 -1
  6. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +13 -1
  7. package/React/Base/RCTVersion.m +1 -1
  8. package/React/Fabric/Mounting/ComponentViews/LegacyViewManagerInterop/RCTLegacyViewManagerInteropCoordinatorAdapter.mm +1 -1
  9. package/ReactAndroid/gradle.properties +1 -1
  10. package/ReactAndroid/src/main/java/com/facebook/react/ReactDelegate.java +40 -1
  11. package/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +22 -7
  12. package/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +3 -0
  13. package/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactActivityDelegate.kt +4 -0
  14. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  15. package/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomLetterSpacingSpan.java +4 -0
  16. package/ReactAndroid/src/main/java/com/facebook/react/views/text/CustomStyleSpan.java +4 -0
  17. package/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextUpdate.java +1 -5
  18. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java +190 -134
  19. package/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java +23 -10
  20. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundManager.java +5 -0
  21. package/ReactAndroid/src/main/jni/react/fabric/Binding.cpp +3 -0
  22. package/ReactCommon/React-rncore.podspec +12 -4
  23. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  24. package/ReactCommon/react/config/ReactNativeConfig.cpp +3 -0
  25. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.h +4 -1
  26. package/ReactCommon/react/renderer/components/legacyviewmanagerinterop/RCTLegacyViewManagerInteropCoordinator.mm +49 -2
  27. package/ReactCommon/react/renderer/components/text/ParagraphLayoutManager.cpp +30 -5
  28. package/ReactCommon/react/renderer/components/text/ParagraphLayoutManager.h +12 -0
  29. package/ReactCommon/react/renderer/core/CoreFeatures.cpp +1 -0
  30. package/ReactCommon/react/renderer/core/CoreFeatures.h +5 -0
  31. package/ReactCommon/react/renderer/textlayoutmanager/platform/android/react/renderer/textlayoutmanager/TextLayoutManager.cpp +5 -1
  32. package/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTTextLayoutManager.mm +112 -83
  33. package/build.gradle.kts +17 -0
  34. package/gradle.properties +1 -0
  35. package/package.json +7 -7
  36. package/scripts/cocoapods/__tests__/codegen_utils-test.rb +9 -1
  37. package/scripts/cocoapods/codegen_utils.rb +1 -1
  38. package/sdks/hermesc/osx-bin/hermesc +0 -0
  39. package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
  40. package/settings.gradle.kts +30 -0
  41. package/template/metro.config.js +7 -13
  42. package/template/package.json +4 -2
@@ -13,5 +13,5 @@ exports.version = {
13
13
  major: 0,
14
14
  minor: 72,
15
15
  patch: 0,
16
- prerelease: 'rc.0',
16
+ prerelease: 'rc.1',
17
17
  };
@@ -39,8 +39,12 @@ exports.checkVersions = function checkVersions(): void {
39
39
  }
40
40
  };
41
41
 
42
+ // Note: in OSS, the prerelease version is usually 0.Y.0-rc.W, so it is a string and not a number
43
+ // Then we need to keep supporting that object shape.
42
44
  function _formatVersion(
43
- version: (typeof Platform)['constants']['reactNativeVersion'],
45
+ version:
46
+ | (typeof Platform)['constants']['reactNativeVersion']
47
+ | {major: number, minor: number, patch: number, prerelease: ?string},
44
48
  ): string {
45
49
  return (
46
50
  `${version.major}.${version.minor}.${version.patch}` +
@@ -9,7 +9,6 @@
9
9
  */
10
10
 
11
11
  import type {RootTag} from '../Types/RootTagTypes';
12
- import type {Spec as FabricUIManagerSpec} from './FabricUIManager';
13
12
  import type {Spec} from './NativeUIManager';
14
13
 
15
14
  import {getFabricUIManager} from './FabricUIManager';
@@ -175,6 +174,33 @@ const UIManager = {
175
174
  );
176
175
  }
177
176
  },
177
+
178
+ dispatchViewManagerCommand(
179
+ reactTag: number,
180
+ commandName: number | string,
181
+ commandArgs: any[],
182
+ ) {
183
+ if (isFabricReactTag(reactTag)) {
184
+ const FabricUIManager = nullthrows(getFabricUIManager());
185
+ const shadowNode =
186
+ FabricUIManager.findShadowNodeByTag_DEPRECATED(reactTag);
187
+ if (shadowNode) {
188
+ // Transform the accidental CommandID into a CommandName which is the stringified number.
189
+ // The interop layer knows how to convert this number into the right method name.
190
+ // Stringify a string is a no-op, so it's safe.
191
+ commandName = `${commandName}`;
192
+ FabricUIManager.dispatchCommand(shadowNode, commandName, commandArgs);
193
+ }
194
+ } else {
195
+ UIManagerImpl.dispatchViewManagerCommand(
196
+ reactTag,
197
+ // We have some legacy components that are actually already using strings. ¯\_(ツ)_/¯
198
+ // $FlowFixMe[incompatible-call]
199
+ commandName,
200
+ commandArgs,
201
+ );
202
+ }
203
+ },
178
204
  };
179
205
 
180
206
  module.exports = UIManager;
@@ -3419,6 +3419,23 @@ function mountSafeCallback_NOT_REALLY_SAFE(context, callback) {
3419
3419
  return callback.apply(context, arguments);
3420
3420
  };
3421
3421
  }
3422
+ function warnForStyleProps(props, validAttributes) {
3423
+ {
3424
+ for (var key in validAttributes.style) {
3425
+ if (!(validAttributes[key] || props[key] === undefined)) {
3426
+ error(
3427
+ "You are setting the style `{ %s" +
3428
+ ": ... }` as a prop. You " +
3429
+ "should nest it in a style object. " +
3430
+ "E.g. `{ style: { %s" +
3431
+ ": ... } }`",
3432
+ key,
3433
+ key
3434
+ );
3435
+ }
3436
+ }
3437
+ }
3438
+ }
3422
3439
 
3423
3440
  // Modules provided by RN:
3424
3441
  var emptyObject = {};
@@ -5100,7 +5117,8 @@ var _nativeFabricUIManage = nativeFabricUIManager,
5100
5117
  FabricDefaultPriority = _nativeFabricUIManage.unstable_DefaultEventPriority,
5101
5118
  FabricDiscretePriority = _nativeFabricUIManage.unstable_DiscreteEventPriority,
5102
5119
  fabricGetCurrentEventPriority =
5103
- _nativeFabricUIManage.unstable_getCurrentEventPriority;
5120
+ _nativeFabricUIManage.unstable_getCurrentEventPriority,
5121
+ _setNativeProps = _nativeFabricUIManage.setNativeProps;
5104
5122
  var getViewConfigForType =
5105
5123
  ReactNativePrivateInterface.ReactNativeViewConfigRegistry.get; // Counter for uniquely identifying views.
5106
5124
  // % 10 === 1 means it is a rootTag.
@@ -5199,10 +5217,15 @@ var ReactFabricHostComponent = /*#__PURE__*/ (function() {
5199
5217
 
5200
5218
  _proto.setNativeProps = function setNativeProps(nativeProps) {
5201
5219
  {
5202
- error("Warning: setNativeProps is not currently supported in Fabric");
5220
+ warnForStyleProps(nativeProps, this.viewConfig.validAttributes);
5203
5221
  }
5204
5222
 
5205
- return;
5223
+ var updatePayload = create(nativeProps, this.viewConfig.validAttributes);
5224
+ var stateNode = this._internalInstanceHandle.stateNode;
5225
+
5226
+ if (stateNode != null && updatePayload != null) {
5227
+ _setNativeProps(stateNode.node, updatePayload);
5228
+ }
5206
5229
  }; // This API (addEventListener, removeEventListener) attempts to adhere to the
5207
5230
  // w3 Level2 Events spec as much as possible, treating HostComponent as a DOM node.
5208
5231
  //
@@ -1922,6 +1922,7 @@ var _nativeFabricUIManage = nativeFabricUIManager,
1922
1922
  FabricDiscretePriority = _nativeFabricUIManage.unstable_DiscreteEventPriority,
1923
1923
  fabricGetCurrentEventPriority =
1924
1924
  _nativeFabricUIManage.unstable_getCurrentEventPriority,
1925
+ _setNativeProps = _nativeFabricUIManage.setNativeProps,
1925
1926
  getViewConfigForType =
1926
1927
  ReactNativePrivateInterface.ReactNativeViewConfigRegistry.get,
1927
1928
  nextReactTag = 2;
@@ -1979,7 +1980,18 @@ var ReactFabricHostComponent = (function() {
1979
1980
  );
1980
1981
  }
1981
1982
  };
1982
- _proto.setNativeProps = function() {};
1983
+ _proto.setNativeProps = function(nativeProps) {
1984
+ nativeProps = diffProperties(
1985
+ null,
1986
+ emptyObject,
1987
+ nativeProps,
1988
+ this.viewConfig.validAttributes
1989
+ );
1990
+ var stateNode = this._internalInstanceHandle.stateNode;
1991
+ null != stateNode &&
1992
+ null != nativeProps &&
1993
+ _setNativeProps(stateNode.node, nativeProps);
1994
+ };
1983
1995
  _proto.addEventListener_unstable = function(eventType, listener, options) {
1984
1996
  if ("string" !== typeof eventType)
1985
1997
  throw Error("addEventListener_unstable eventType must be a string");
@@ -1981,6 +1981,7 @@ var _nativeFabricUIManage = nativeFabricUIManager,
1981
1981
  FabricDiscretePriority = _nativeFabricUIManage.unstable_DiscreteEventPriority,
1982
1982
  fabricGetCurrentEventPriority =
1983
1983
  _nativeFabricUIManage.unstable_getCurrentEventPriority,
1984
+ _setNativeProps = _nativeFabricUIManage.setNativeProps,
1984
1985
  getViewConfigForType =
1985
1986
  ReactNativePrivateInterface.ReactNativeViewConfigRegistry.get,
1986
1987
  nextReactTag = 2;
@@ -2038,7 +2039,18 @@ var ReactFabricHostComponent = (function() {
2038
2039
  );
2039
2040
  }
2040
2041
  };
2041
- _proto.setNativeProps = function() {};
2042
+ _proto.setNativeProps = function(nativeProps) {
2043
+ nativeProps = diffProperties(
2044
+ null,
2045
+ emptyObject,
2046
+ nativeProps,
2047
+ this.viewConfig.validAttributes
2048
+ );
2049
+ var stateNode = this._internalInstanceHandle.stateNode;
2050
+ null != stateNode &&
2051
+ null != nativeProps &&
2052
+ _setNativeProps(stateNode.node, nativeProps);
2053
+ };
2042
2054
  _proto.addEventListener_unstable = function(eventType, listener, options) {
2043
2055
  if ("string" !== typeof eventType)
2044
2056
  throw Error("addEventListener_unstable eventType must be a string");
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(72),
26
26
  RCTVersionPatch: @(0),
27
- RCTVersionPrerelease: @"rc.0",
27
+ RCTVersionPrerelease: @"rc.1",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -50,7 +50,7 @@
50
50
 
51
51
  - (void)handleCommand:(NSString *)commandName args:(NSArray *)args
52
52
  {
53
- [_coordinator handleCommand:commandName args:args reactTag:_tag];
53
+ [_coordinator handleCommand:commandName args:args reactTag:_tag paperView:self.paperView];
54
54
  }
55
55
 
56
56
  @end
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.72.0-rc.0
1
+ VERSION_NAME=0.72.0-rc.1
2
2
  GROUP=com.facebook.react
3
3
 
4
4
  # JVM Versions
@@ -11,6 +11,7 @@ import android.app.Activity;
11
11
  import android.content.Intent;
12
12
  import android.os.Bundle;
13
13
  import android.view.KeyEvent;
14
+ import androidx.annotation.NonNull;
14
15
  import androidx.annotation.Nullable;
15
16
  import com.facebook.infer.annotation.Assertions;
16
17
  import com.facebook.react.devsupport.DoubleTapReloadRecognizer;
@@ -33,6 +34,8 @@ public class ReactDelegate {
33
34
 
34
35
  private ReactNativeHost mReactNativeHost;
35
36
 
37
+ private boolean mFabricEnabled = false;
38
+
36
39
  public ReactDelegate(
37
40
  Activity activity,
38
41
  ReactNativeHost reactNativeHost,
@@ -45,6 +48,20 @@ public class ReactDelegate {
45
48
  mReactNativeHost = reactNativeHost;
46
49
  }
47
50
 
51
+ public ReactDelegate(
52
+ Activity activity,
53
+ ReactNativeHost reactNativeHost,
54
+ @Nullable String appKey,
55
+ @Nullable Bundle launchOptions,
56
+ boolean fabricEnabled) {
57
+ mActivity = activity;
58
+ mMainComponentName = appKey;
59
+ mLaunchOptions = composeLaunchOptions(launchOptions);
60
+ mDoubleTapReloadRecognizer = new DoubleTapReloadRecognizer();
61
+ mReactNativeHost = reactNativeHost;
62
+ mFabricEnabled = fabricEnabled;
63
+ }
64
+
48
65
  public void onHostResume() {
49
66
  if (getReactNativeHost().hasInstance()) {
50
67
  if (mActivity instanceof DefaultHardwareBackBtnHandler) {
@@ -109,7 +126,9 @@ public class ReactDelegate {
109
126
  }
110
127
 
111
128
  protected ReactRootView createRootView() {
112
- return new ReactRootView(mActivity);
129
+ ReactRootView reactRootView = new ReactRootView(mActivity);
130
+ reactRootView.setIsFabric(isFabricEnabled());
131
+ return reactRootView;
113
132
  }
114
133
 
115
134
  /**
@@ -144,4 +163,24 @@ public class ReactDelegate {
144
163
  public ReactInstanceManager getReactInstanceManager() {
145
164
  return getReactNativeHost().getReactInstanceManager();
146
165
  }
166
+
167
+ /**
168
+ * Override this method if you wish to selectively toggle Fabric for a specific surface. This will
169
+ * also control if Concurrent Root (React 18) should be enabled or not.
170
+ *
171
+ * @return true if Fabric is enabled for this Activity, false otherwise.
172
+ */
173
+ protected boolean isFabricEnabled() {
174
+ return mFabricEnabled;
175
+ }
176
+
177
+ private @NonNull Bundle composeLaunchOptions(Bundle composedLaunchOptions) {
178
+ if (isFabricEnabled()) {
179
+ if (composedLaunchOptions == null) {
180
+ composedLaunchOptions = new Bundle();
181
+ }
182
+ composedLaunchOptions.putBoolean("concurrentRoot", true);
183
+ }
184
+ return composedLaunchOptions;
185
+ }
147
186
  }
@@ -16,6 +16,7 @@ import android.view.KeyEvent;
16
16
  import android.view.LayoutInflater;
17
17
  import android.view.View;
18
18
  import android.view.ViewGroup;
19
+ import androidx.annotation.NonNull;
19
20
  import androidx.annotation.Nullable;
20
21
  import androidx.fragment.app.Fragment;
21
22
  import com.facebook.react.modules.core.PermissionAwareActivity;
@@ -29,6 +30,7 @@ public class ReactFragment extends Fragment implements PermissionAwareActivity {
29
30
 
30
31
  protected static final String ARG_COMPONENT_NAME = "arg_component_name";
31
32
  protected static final String ARG_LAUNCH_OPTIONS = "arg_launch_options";
33
+ protected static final String ARG_FABRIC_ENABLED = "arg_fabric_enabled";
32
34
 
33
35
  private ReactDelegate mReactDelegate;
34
36
 
@@ -40,13 +42,16 @@ public class ReactFragment extends Fragment implements PermissionAwareActivity {
40
42
 
41
43
  /**
42
44
  * @param componentName The name of the react native component
45
+ * @param fabricEnabled Flag to enable Fabric for ReactFragment
43
46
  * @return A new instance of fragment ReactFragment.
44
47
  */
45
- private static ReactFragment newInstance(String componentName, Bundle launchOptions) {
48
+ private static ReactFragment newInstance(
49
+ String componentName, Bundle launchOptions, Boolean fabricEnabled) {
46
50
  ReactFragment fragment = new ReactFragment();
47
51
  Bundle args = new Bundle();
48
52
  args.putString(ARG_COMPONENT_NAME, componentName);
49
53
  args.putBundle(ARG_LAUNCH_OPTIONS, launchOptions);
54
+ args.putBoolean(ARG_FABRIC_ENABLED, fabricEnabled);
50
55
  fragment.setArguments(args);
51
56
  return fragment;
52
57
  }
@@ -57,15 +62,18 @@ public class ReactFragment extends Fragment implements PermissionAwareActivity {
57
62
  super.onCreate(savedInstanceState);
58
63
  String mainComponentName = null;
59
64
  Bundle launchOptions = null;
65
+ Boolean fabricEnabled = null;
60
66
  if (getArguments() != null) {
61
67
  mainComponentName = getArguments().getString(ARG_COMPONENT_NAME);
62
68
  launchOptions = getArguments().getBundle(ARG_LAUNCH_OPTIONS);
69
+ fabricEnabled = getArguments().getBoolean(ARG_FABRIC_ENABLED);
63
70
  }
64
71
  if (mainComponentName == null) {
65
72
  throw new IllegalStateException("Cannot loadApp if component name is null");
66
73
  }
67
74
  mReactDelegate =
68
- new ReactDelegate(getActivity(), getReactNativeHost(), mainComponentName, launchOptions);
75
+ new ReactDelegate(
76
+ getActivity(), getReactNativeHost(), mainComponentName, launchOptions, fabricEnabled);
69
77
  }
70
78
 
71
79
  /**
@@ -85,7 +93,7 @@ public class ReactFragment extends Fragment implements PermissionAwareActivity {
85
93
 
86
94
  @Override
87
95
  public View onCreateView(
88
- LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
96
+ @NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
89
97
  mReactDelegate.loadApp();
90
98
  return mReactDelegate.getReactRootView();
91
99
  }
@@ -140,7 +148,7 @@ public class ReactFragment extends Fragment implements PermissionAwareActivity {
140
148
 
141
149
  @Override
142
150
  public void onRequestPermissionsResult(
143
- int requestCode, String[] permissions, int[] grantResults) {
151
+ int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
144
152
  super.onRequestPermissionsResult(requestCode, permissions, grantResults);
145
153
  if (mPermissionListener != null
146
154
  && mPermissionListener.onRequestPermissionsResult(requestCode, permissions, grantResults)) {
@@ -170,12 +178,14 @@ public class ReactFragment extends Fragment implements PermissionAwareActivity {
170
178
  /** Builder class to help instantiate a ReactFragment */
171
179
  public static class Builder {
172
180
 
173
- String mComponentName;
174
- Bundle mLaunchOptions;
181
+ @Nullable String mComponentName;
182
+ @Nullable Bundle mLaunchOptions;
183
+ @Nullable Boolean mFabricEnabled;
175
184
 
176
185
  public Builder() {
177
186
  mComponentName = null;
178
187
  mLaunchOptions = null;
188
+ mFabricEnabled = null;
179
189
  }
180
190
 
181
191
  /**
@@ -201,7 +211,12 @@ public class ReactFragment extends Fragment implements PermissionAwareActivity {
201
211
  }
202
212
 
203
213
  public ReactFragment build() {
204
- return ReactFragment.newInstance(mComponentName, mLaunchOptions);
214
+ return ReactFragment.newInstance(mComponentName, mLaunchOptions, mFabricEnabled);
215
+ }
216
+
217
+ public Builder setFabricEnabled(boolean fabricEnabled) {
218
+ mFabricEnabled = fabricEnabled;
219
+ return this;
205
220
  }
206
221
  }
207
222
  }
@@ -75,6 +75,9 @@ public class ReactFeatureFlags {
75
75
  /** Feature Flag to enable the pending event queue in fabric before mounting views */
76
76
  public static boolean enableFabricPendingEventQueue = false;
77
77
 
78
+ /** Feature Flag to enable caching mechanism of text measurement at shadow node level */
79
+ public static boolean enableTextMeasureCachePerShadowNode = false;
80
+
78
81
  /**
79
82
  * Feature flag that controls how turbo modules are exposed to JS
80
83
  *
@@ -7,6 +7,7 @@
7
7
 
8
8
  package com.facebook.react.defaults
9
9
 
10
+ import android.os.Bundle
10
11
  import com.facebook.react.ReactActivity
11
12
  import com.facebook.react.ReactActivityDelegate
12
13
  import com.facebook.react.ReactRootView
@@ -43,4 +44,7 @@ open class DefaultReactActivityDelegate(
43
44
 
44
45
  override fun createRootView(): ReactRootView =
45
46
  ReactRootView(context).apply { setIsFabric(fabricEnabled) }
47
+
48
+ override fun createRootView(bundle: Bundle?): ReactRootView =
49
+ ReactRootView(context).apply { setIsFabric(fabricEnabled) }
46
50
  }
@@ -18,5 +18,5 @@ public class ReactNativeVersion {
18
18
  "major", 0,
19
19
  "minor", 72,
20
20
  "patch", 0,
21
- "prerelease", "rc.0");
21
+ "prerelease", "rc.1");
22
22
  }
@@ -37,6 +37,10 @@ public class CustomLetterSpacingSpan extends MetricAffectingSpan implements Reac
37
37
  apply(paint);
38
38
  }
39
39
 
40
+ public float getSpacing() {
41
+ return mLetterSpacing;
42
+ }
43
+
40
44
  private void apply(TextPaint paint) {
41
45
  if (!Float.isNaN(mLetterSpacing)) {
42
46
  paint.setLetterSpacing(mLetterSpacing);
@@ -71,6 +71,10 @@ public class CustomStyleSpan extends MetricAffectingSpan implements ReactSpan {
71
71
  return mFontFamily;
72
72
  }
73
73
 
74
+ public @Nullable String getFontFeatureSettings() {
75
+ return mFeatureSettings;
76
+ }
77
+
74
78
  private static void apply(
75
79
  Paint paint,
76
80
  int style,
@@ -31,8 +31,6 @@ public class ReactTextUpdate {
31
31
  private final int mSelectionEnd;
32
32
  private final int mJustificationMode;
33
33
 
34
- public boolean mContainsMultipleFragments;
35
-
36
34
  /**
37
35
  * @deprecated Use a non-deprecated constructor for ReactTextUpdate instead. This one remains
38
36
  * because it's being used by a unit test that isn't currently open source.
@@ -142,13 +140,11 @@ public class ReactTextUpdate {
142
140
  int jsEventCounter,
143
141
  int textAlign,
144
142
  int textBreakStrategy,
145
- int justificationMode,
146
- boolean containsMultipleFragments) {
143
+ int justificationMode) {
147
144
 
148
145
  ReactTextUpdate reactTextUpdate =
149
146
  new ReactTextUpdate(
150
147
  text, jsEventCounter, false, textAlign, textBreakStrategy, justificationMode);
151
- reactTextUpdate.mContainsMultipleFragments = containsMultipleFragments;
152
148
  return reactTextUpdate;
153
149
  }
154
150