react-native-windows 0.68.0-preview.1 → 0.68.0-preview.4

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 (40) hide show
  1. package/Microsoft.ReactNative/IReactContext.cpp +4 -0
  2. package/Microsoft.ReactNative/IReactContext.h +3 -2
  3. package/Microsoft.ReactNative/IReactContext.idl +6 -0
  4. package/Microsoft.ReactNative/JSDispatcherWriter.cpp +101 -0
  5. package/Microsoft.ReactNative/JSDispatcherWriter.h +44 -0
  6. package/Microsoft.ReactNative/JsiWriter.cpp +1 -13
  7. package/Microsoft.ReactNative/JsiWriter.h +0 -3
  8. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +6 -0
  9. package/Microsoft.ReactNative/ReactHost/React.h +2 -0
  10. package/Microsoft.ReactNative/ReactHost/ReactContext.cpp +7 -0
  11. package/Microsoft.ReactNative/ReactHost/ReactContext.h +1 -0
  12. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +21 -7
  13. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +2 -1
  14. package/Microsoft.ReactNative/ReactInstanceSettings.h +12 -0
  15. package/Microsoft.ReactNative/ReactInstanceSettings.idl +8 -2
  16. package/Microsoft.ReactNative/ReactNativeHost.cpp +1 -0
  17. package/Microsoft.ReactNative/TurboModulesProvider.cpp +146 -145
  18. package/Microsoft.ReactNative/TurboModulesProvider.h +5 -10
  19. package/Microsoft.ReactNative/Views/ScrollViewManager.cpp +0 -2
  20. package/Mso/dispatchQueue/dispatchQueue.h +6 -1
  21. package/{template/cs-app/proj/Directory.Build.props → PropertySheets/CppEnablePackageReferences.props} +0 -0
  22. package/PropertySheets/External/Microsoft.ReactNative.CSharp.PackageReferences.props +12 -0
  23. package/PropertySheets/External/{Microsoft.ReactNative.Uwp.CSharpApp.SourceReferences.targets → Microsoft.ReactNative.CSharp.ProjectReferences.props} +2 -2
  24. package/PropertySheets/External/Microsoft.ReactNative.Cpp.PackageReferences.props +12 -0
  25. package/PropertySheets/External/Microsoft.ReactNative.Cpp.ProjectReferences.props +19 -0
  26. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CSharpApp.targets +11 -4
  27. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CSharpLib.targets +8 -10
  28. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CppApp.targets +9 -8
  29. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CppLib.targets +9 -8
  30. package/PropertySheets/Generated/PackageVersion.g.props +1 -1
  31. package/PropertySheets/JSEngine.props +1 -1
  32. package/Scripts/rnw-dependencies.ps1 +1 -1
  33. package/Shared/Modules/PlatformConstantsModule.cpp +4 -0
  34. package/Shared/OInstance.cpp +0 -1
  35. package/package.json +6 -6
  36. package/template/cpp-app/proj/MyApp.vcxproj +0 -1
  37. package/template/cpp-lib/proj/MyLib.vcxproj +0 -1
  38. package/template/cs-app/proj/MyApp.csproj +0 -16
  39. package/template/shared-lib/proj/ExperimentalFeatures.props +29 -1
  40. package/template/cs-lib/proj/Directory.Build.props +0 -13
@@ -53,6 +53,10 @@ uint16_t ReactSettingsSnapshot::SourceBundlePort() const noexcept {
53
53
  return m_settings->SourceBundlePort();
54
54
  }
55
55
 
56
+ bool ReactSettingsSnapshot::RequestInlineSourceMap() const noexcept {
57
+ return m_settings->RequestInlineSourceMap();
58
+ }
59
+
56
60
  hstring ReactSettingsSnapshot::JavaScriptBundleFile() const noexcept {
57
61
  return winrt::to_hstring(m_settings->JavaScriptBundleFile());
58
62
  }
@@ -21,6 +21,7 @@ struct ReactSettingsSnapshot : winrt::implements<ReactSettingsSnapshot, IReactSe
21
21
  hstring BundleRootPath() const noexcept;
22
22
  hstring SourceBundleHost() const noexcept;
23
23
  uint16_t SourceBundlePort() const noexcept;
24
+ bool RequestInlineSourceMap() const noexcept;
24
25
  hstring JavaScriptBundleFile() const noexcept;
25
26
 
26
27
  public:
@@ -57,8 +58,8 @@ struct ReactContext : winrt::implements<ReactContext, IReactContext> {
57
58
  JSValueArgWriter const &paramsArgWriter) noexcept;
58
59
 
59
60
  public: // IReactContext
60
- // Not part of the public ABI interface
61
- // Internal accessor for within the Microsoft.ReactNative dll to allow calling into internal methods
61
+ // Not part of the public ABI interface
62
+ // Internal accessor for within the Microsoft.ReactNative dll to allow calling into internal methods
62
63
  Mso::React::IReactContext &GetInner() const noexcept;
63
64
 
64
65
  private:
@@ -84,6 +84,12 @@ namespace Microsoft.ReactNative
84
84
  "that will be used to load the bundle from.")
85
85
  UInt16 SourceBundlePort { get; };
86
86
 
87
+ DOC_STRING(
88
+ "A read-only snapshot of the @ReactInstanceSettings.RequestInlineSourceMap property value "
89
+ "at the time when the React instance was created.\n"
90
+ "If set, the bundler will include the source maps inline (this will improve debugging experience, but for very large bundles it could have a significant performance hit)")
91
+ Boolean RequestInlineSourceMap { get; };
92
+
87
93
  DOC_STRING(
88
94
  "A read-only snapshot of the @ReactInstanceSettings.JavaScriptBundleFile property value "
89
95
  "at the time when the React instance was created.\n"
@@ -0,0 +1,101 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ #include "pch.h"
5
+ #include "JSDispatcherWriter.h"
6
+ #include <JSI/JSIDynamic.h>
7
+ #include <crash/verifyElseCrash.h>
8
+
9
+ namespace winrt::Microsoft::ReactNative {
10
+
11
+ //===========================================================================
12
+ // JSDispatcherWriter implementation
13
+ //===========================================================================
14
+
15
+ JSDispatcherWriter::JSDispatcherWriter(
16
+ IReactDispatcher const &jsDispatcher,
17
+ facebook::jsi::Runtime &jsiRuntime) noexcept
18
+ : m_jsDispatcher(jsDispatcher), m_jsiRuntime(jsiRuntime) {}
19
+
20
+ void JSDispatcherWriter::WithResultArgs(
21
+ Mso::Functor<void(facebook::jsi::Runtime &rt, facebook::jsi::Value const *args, size_t argCount)>
22
+ handler) noexcept {
23
+ if (m_jsDispatcher.HasThreadAccess()) {
24
+ VerifyElseCrash(!m_dynamicWriter);
25
+ const facebook::jsi::Value *args{nullptr};
26
+ size_t argCount{0};
27
+ m_jsiWriter->AccessResultAsArgs(args, argCount);
28
+ handler(m_jsiRuntime, args, argCount);
29
+ } else {
30
+ VerifyElseCrash(!m_jsiWriter);
31
+ folly::dynamic dynValue = m_dynamicWriter->TakeValue();
32
+ m_jsDispatcher.Post([handler, dynValue, &runtime = m_jsiRuntime]() {
33
+ VerifyElseCrash(dynValue.isArray());
34
+ std::vector<facebook::jsi::Value> args;
35
+ args.reserve(dynValue.size());
36
+ for (auto const &item : dynValue) {
37
+ args.emplace_back(facebook::jsi::valueFromDynamic(runtime, item));
38
+ }
39
+ handler(runtime, args.data(), args.size());
40
+ });
41
+ }
42
+ }
43
+
44
+ void JSDispatcherWriter::WriteNull() noexcept {
45
+ GetWriter().WriteNull();
46
+ }
47
+
48
+ void JSDispatcherWriter::WriteBoolean(bool value) noexcept {
49
+ GetWriter().WriteBoolean(value);
50
+ }
51
+
52
+ void JSDispatcherWriter::WriteInt64(int64_t value) noexcept {
53
+ GetWriter().WriteInt64(value);
54
+ }
55
+
56
+ void JSDispatcherWriter::WriteDouble(double value) noexcept {
57
+ GetWriter().WriteDouble(value);
58
+ }
59
+
60
+ void JSDispatcherWriter::WriteString(const winrt::hstring &value) noexcept {
61
+ GetWriter().WriteString(value);
62
+ }
63
+
64
+ void JSDispatcherWriter::WriteObjectBegin() noexcept {
65
+ GetWriter().WriteObjectBegin();
66
+ }
67
+
68
+ void JSDispatcherWriter::WritePropertyName(const winrt::hstring &name) noexcept {
69
+ GetWriter().WritePropertyName(name);
70
+ }
71
+
72
+ void JSDispatcherWriter::WriteObjectEnd() noexcept {
73
+ GetWriter().WriteObjectEnd();
74
+ }
75
+
76
+ void JSDispatcherWriter::WriteArrayBegin() noexcept {
77
+ GetWriter().WriteArrayBegin();
78
+ }
79
+
80
+ void JSDispatcherWriter::WriteArrayEnd() noexcept {
81
+ GetWriter().WriteArrayEnd();
82
+ }
83
+
84
+ IJSValueWriter JSDispatcherWriter::GetWriter() noexcept {
85
+ if (m_jsDispatcher.HasThreadAccess()) {
86
+ VerifyElseCrash(!m_dynamicWriter);
87
+ if (!m_jsiWriter) {
88
+ m_jsiWriter = winrt::make_self<JsiWriter>(m_jsiRuntime);
89
+ m_writer = m_jsiWriter.as<IJSValueWriter>();
90
+ }
91
+ } else {
92
+ VerifyElseCrash(!m_jsiWriter);
93
+ if (!m_dynamicWriter) {
94
+ m_dynamicWriter = winrt::make_self<DynamicWriter>();
95
+ m_writer = m_dynamicWriter.as<IJSValueWriter>();
96
+ }
97
+ }
98
+ return m_writer;
99
+ }
100
+
101
+ } // namespace winrt::Microsoft::ReactNative
@@ -0,0 +1,44 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ #pragma once
4
+
5
+ #include <functional/functor.h>
6
+ #include "DynamicWriter.h"
7
+ #include "JsiWriter.h"
8
+ #include "folly/dynamic.h"
9
+ #include "winrt/Microsoft.ReactNative.h"
10
+
11
+ namespace winrt::Microsoft::ReactNative {
12
+
13
+ // IJSValueWriter to ensure that JsiWriter is always used from JSDispatcher.
14
+ // In case if writing is done outside of JSDispatcher, it uses DynamicWriter to create
15
+ // folly::dynamic which then is written to JsiWriter in JSDispatcher.
16
+ struct JSDispatcherWriter : winrt::implements<JSDispatcherWriter, IJSValueWriter> {
17
+ JSDispatcherWriter(IReactDispatcher const &jsDispatcher, facebook::jsi::Runtime &jsiRuntime) noexcept;
18
+ void WithResultArgs(Mso::Functor<void(facebook::jsi::Runtime &rt, facebook::jsi::Value const *args, size_t argCount)>
19
+ handler) noexcept;
20
+
21
+ public: // IJSValueWriter
22
+ void WriteNull() noexcept;
23
+ void WriteBoolean(bool value) noexcept;
24
+ void WriteInt64(int64_t value) noexcept;
25
+ void WriteDouble(double value) noexcept;
26
+ void WriteString(const winrt::hstring &value) noexcept;
27
+ void WriteObjectBegin() noexcept;
28
+ void WritePropertyName(const winrt::hstring &name) noexcept;
29
+ void WriteObjectEnd() noexcept;
30
+ void WriteArrayBegin() noexcept;
31
+ void WriteArrayEnd() noexcept;
32
+
33
+ private:
34
+ IJSValueWriter GetWriter() noexcept;
35
+
36
+ private:
37
+ IReactDispatcher m_jsDispatcher;
38
+ facebook::jsi::Runtime &m_jsiRuntime;
39
+ winrt::com_ptr<DynamicWriter> m_dynamicWriter;
40
+ winrt::com_ptr<JsiWriter> m_jsiWriter;
41
+ IJSValueWriter m_writer;
42
+ };
43
+
44
+ } // namespace winrt::Microsoft::ReactNative
@@ -61,7 +61,7 @@ void JsiWriter::WriteDouble(double value) noexcept {
61
61
  }
62
62
 
63
63
  void JsiWriter::WriteString(const winrt::hstring &value) noexcept {
64
- WriteValue({m_runtime, facebook::jsi::String::createFromUtf8(m_runtime, winrt::to_string(value))});
64
+ WriteValue({facebook::jsi::String::createFromUtf8(m_runtime, winrt::to_string(value))});
65
65
  }
66
66
 
67
67
  void JsiWriter::WriteObjectBegin() noexcept {
@@ -163,16 +163,4 @@ void JsiWriter::Push(Container &&container) noexcept {
163
163
  m_containers.push_back(std::move(container));
164
164
  }
165
165
 
166
- /*static*/ facebook::jsi::Value JsiWriter::ToJsiValue(
167
- facebook::jsi::Runtime &runtime,
168
- JSValueArgWriter const &argWriter) noexcept {
169
- if (argWriter) {
170
- IJSValueWriter jsiWriter = winrt::make<JsiWriter>(runtime);
171
- argWriter(jsiWriter);
172
- return jsiWriter.as<JsiWriter>()->MoveResult();
173
- }
174
-
175
- return {};
176
- }
177
-
178
166
  } // namespace winrt::Microsoft::ReactNative
@@ -35,9 +35,6 @@ struct JsiWriter : winrt::implements<JsiWriter, IJSValueWriter> {
35
35
  void WriteArrayBegin() noexcept;
36
36
  void WriteArrayEnd() noexcept;
37
37
 
38
- public:
39
- static facebook::jsi::Value ToJsiValue(facebook::jsi::Runtime &runtime, JSValueArgWriter const &argWriter) noexcept;
40
-
41
38
  private:
42
39
  enum class ContainerState {
43
40
  AcceptValueAndFinish,
@@ -191,6 +191,9 @@
191
191
  <ClInclude Include="DynamicWriter.h">
192
192
  <DependentUpon>IJSValueWriter.idl</DependentUpon>
193
193
  </ClInclude>
194
+ <ClInclude Include="JSDispatcherWriter.h">
195
+ <DependentUpon>IJSValueWriter.idl</DependentUpon>
196
+ </ClInclude>
194
197
  <ClInclude Include="GlyphViewManager.h" />
195
198
  <ClInclude Include="HResult.h" />
196
199
  <ClInclude Include="IReactDispatcher.h">
@@ -523,6 +526,9 @@
523
526
  <ClCompile Include="DynamicWriter.cpp">
524
527
  <DependentUpon>IJSValueWriter.idl</DependentUpon>
525
528
  </ClCompile>
529
+ <ClCompile Include="JSDispatcherWriter.cpp">
530
+ <DependentUpon>IJSValueWriter.idl</DependentUpon>
531
+ </ClCompile>
526
532
  <ClCompile Include="GlyphViewManager.cpp" />
527
533
  <ClCompile Include="IReactDispatcher.cpp">
528
534
  <DependentUpon>IReactDispatcher.idl</DependentUpon>
@@ -102,6 +102,7 @@ struct IReactSettingsSnapshot : IUnknown {
102
102
  virtual std::string BundleRootPath() const noexcept = 0;
103
103
  virtual std::string SourceBundleHost() const noexcept = 0;
104
104
  virtual uint16_t SourceBundlePort() const noexcept = 0;
105
+ virtual bool RequestInlineSourceMap() const noexcept = 0;
105
106
  virtual std::string JavaScriptBundleFile() const noexcept = 0;
106
107
  virtual bool UseDeveloperSupport() const noexcept = 0;
107
108
  virtual JSIEngine JsiEngine() const noexcept = 0;
@@ -149,6 +150,7 @@ struct ReactDevOptions {
149
150
  //! Specify a value for a component, or leave empty to use the default.
150
151
  std::string SourceBundleHost; // Host domain (without port) for the bundler server. Default: "localhost".
151
152
  uint16_t SourceBundlePort{0}; // Host port for the bundler server. Default: "8081".
153
+ bool RequestInlineSourceMap{true}; // Request the source map inline
152
154
  std::string SourceBundleName; // Bundle name without any extension (e.g. "index.win32"). Default: "index.{PLATFORM}"
153
155
  std::string SourceBundleExtension; // Bundle name extension. Default: ".bundle".
154
156
 
@@ -79,6 +79,13 @@ uint16_t ReactSettingsSnapshot::SourceBundlePort() const noexcept {
79
79
  return 0;
80
80
  }
81
81
 
82
+ bool ReactSettingsSnapshot::RequestInlineSourceMap() const noexcept {
83
+ if (auto instance = m_reactInstance.GetStrongPtr()) {
84
+ return instance->RequestInlineSourceMap();
85
+ }
86
+ return false;
87
+ }
88
+
82
89
  std::string ReactSettingsSnapshot::JavaScriptBundleFile() const noexcept {
83
90
  if (auto instance = m_reactInstance.GetStrongPtr()) {
84
91
  return instance->JavaScriptBundleFile();
@@ -27,6 +27,7 @@ class ReactSettingsSnapshot final : public Mso::UnknownObject<IReactSettingsSnap
27
27
  std::string BundleRootPath() const noexcept override;
28
28
  std::string SourceBundleHost() const noexcept override;
29
29
  uint16_t SourceBundlePort() const noexcept override;
30
+ bool RequestInlineSourceMap() const noexcept override;
30
31
  std::string JavaScriptBundleFile() const noexcept override;
31
32
  bool UseDeveloperSupport() const noexcept override;
32
33
  JSIEngine JsiEngine() const noexcept override;
@@ -8,6 +8,7 @@
8
8
  #include <Base/CoreNativeModules.h>
9
9
  #include <Threading/MessageDispatchQueue.h>
10
10
  #include <Threading/MessageQueueThreadFactory.h>
11
+ #include <appModel.h>
11
12
  #include <comUtil/qiCast.h>
12
13
 
13
14
  #ifndef CORE_ABI
@@ -351,6 +352,7 @@ void ReactInstanceWin::Initialize() noexcept {
351
352
  devSettings->useJITCompilation = m_options.EnableJITCompilation;
352
353
  devSettings->sourceBundleHost = SourceBundleHost();
353
354
  devSettings->sourceBundlePort = SourceBundlePort();
355
+ devSettings->inlineSourceMap = RequestInlineSourceMap();
354
356
  devSettings->debugBundlePath = DebugBundlePath();
355
357
  devSettings->liveReloadCallback = GetLiveReloadCallback();
356
358
  devSettings->errorCallback = GetErrorCallback();
@@ -407,14 +409,22 @@ void ReactInstanceWin::Initialize() noexcept {
407
409
  case JSIEngine::Hermes:
408
410
  devSettings->jsiRuntimeHolder =
409
411
  std::make_shared<facebook::react::HermesRuntimeHolder>(devSettings, m_jsMessageThread.Load());
410
- devSettings->inlineSourceMap = false;
411
412
  break;
412
413
  case JSIEngine::V8:
413
414
  #if defined(USE_V8)
414
- #ifndef CORE_ABI
415
- preparedScriptStore =
416
- std::make_unique<facebook::react::BasePreparedScriptStoreImpl>(getApplicationLocalFolder());
417
- #endif // CORE_ABI
415
+ {
416
+ uint32_t length{0};
417
+ if (GetCurrentPackageFullName(&length, nullptr) != APPMODEL_ERROR_NO_PACKAGE) {
418
+ preparedScriptStore =
419
+ std::make_unique<facebook::react::BasePreparedScriptStoreImpl>(getApplicationTempFolder());
420
+ } else {
421
+ wchar_t tempPath[MAX_PATH];
422
+ if (GetTempPathW(static_cast<DWORD>(std::size(tempPath)), tempPath)) {
423
+ preparedScriptStore =
424
+ std::make_unique<facebook::react::BasePreparedScriptStoreImpl>(winrt::to_string(tempPath));
425
+ }
426
+ }
427
+ }
418
428
  devSettings->jsiRuntimeHolder = std::make_shared<facebook::react::V8JSIRuntimeHolder>(
419
429
  devSettings, m_jsMessageThread.Load(), std::move(scriptStore), std::move(preparedScriptStore));
420
430
  break;
@@ -975,8 +985,8 @@ Mso::CntPtr<IReactInstanceInternal> MakeReactInstance(
975
985
  }
976
986
 
977
987
  #if defined(USE_V8)
978
- std::string ReactInstanceWin::getApplicationLocalFolder() {
979
- auto local = winrt::Windows::Storage::ApplicationData::Current().LocalFolder().Path();
988
+ std::string ReactInstanceWin::getApplicationTempFolder() {
989
+ auto local = winrt::Windows::Storage::ApplicationData::Current().TemporaryFolder().Path();
980
990
 
981
991
  return Microsoft::Common::Unicode::Utf16ToUtf8(local.c_str(), local.size()) + "\\";
982
992
  }
@@ -1021,6 +1031,10 @@ uint16_t ReactInstanceWin::SourceBundlePort() const noexcept {
1021
1031
  : facebook::react::DevServerHelper::DefaultPackagerPort;
1022
1032
  }
1023
1033
 
1034
+ bool ReactInstanceWin::RequestInlineSourceMap() const noexcept {
1035
+ return m_options.DeveloperSettings.RequestInlineSourceMap;
1036
+ }
1037
+
1024
1038
  JSIEngine ReactInstanceWin::JsiEngine() const noexcept {
1025
1039
  return m_options.JsiEngine();
1026
1040
  }
@@ -77,6 +77,7 @@ class ReactInstanceWin final : public Mso::ActiveObject<IReactInstanceInternal>
77
77
  std::string BundleRootPath() const noexcept;
78
78
  std::string SourceBundleHost() const noexcept;
79
79
  uint16_t SourceBundlePort() const noexcept;
80
+ bool RequestInlineSourceMap() const noexcept;
80
81
  std::string JavaScriptBundleFile() const noexcept;
81
82
  bool UseDeveloperSupport() const noexcept;
82
83
  JSIEngine JsiEngine() const noexcept;
@@ -130,7 +131,7 @@ class ReactInstanceWin final : public Mso::ActiveObject<IReactInstanceInternal>
130
131
  };
131
132
 
132
133
  #if defined(USE_V8)
133
- static std::string getApplicationLocalFolder();
134
+ static std::string getApplicationTempFolder();
134
135
  #endif
135
136
 
136
137
  private: // immutable fields
@@ -130,6 +130,9 @@ struct ReactInstanceSettings : ReactInstanceSettingsT<ReactInstanceSettings> {
130
130
  uint16_t SourceBundlePort() noexcept;
131
131
  void SourceBundlePort(uint16_t value) noexcept;
132
132
 
133
+ bool RequestInlineSourceMap() noexcept;
134
+ void RequestInlineSourceMap(bool value) noexcept;
135
+
133
136
  JSIEngine JSIEngineOverride() noexcept;
134
137
  void JSIEngineOverride(JSIEngine value) noexcept;
135
138
 
@@ -174,6 +177,7 @@ struct ReactInstanceSettings : ReactInstanceSettingsT<ReactInstanceSettings> {
174
177
  hstring m_sourceBundleHost{};
175
178
  hstring m_debuggerRuntimeName{};
176
179
  uint16_t m_sourceBundlePort{0};
180
+ bool m_requestInlineSourceMap{true};
177
181
  LogHandler m_nativeLogger{nullptr};
178
182
 
179
183
  #if USE_HERMES
@@ -308,6 +312,14 @@ inline void ReactInstanceSettings::SourceBundlePort(uint16_t value) noexcept {
308
312
  m_sourceBundlePort = value;
309
313
  }
310
314
 
315
+ inline bool ReactInstanceSettings::RequestInlineSourceMap() noexcept {
316
+ return m_requestInlineSourceMap;
317
+ }
318
+
319
+ inline void ReactInstanceSettings::RequestInlineSourceMap(bool value) noexcept {
320
+ m_requestInlineSourceMap = value;
321
+ }
322
+
311
323
  inline JSIEngine ReactInstanceSettings::JSIEngineOverride() noexcept {
312
324
  return m_jSIEngineOverride;
313
325
  }
@@ -204,17 +204,23 @@ namespace Microsoft.ReactNative
204
204
  IReactDispatcher UIDispatcher { get; set; };
205
205
 
206
206
  DOC_STRING(
207
- "When using a @.UseFastRefresh, @.UseLiveReload, or @.UseWebDebugger this is the server hostname "
207
+ "When using @.UseFastRefresh, @.UseLiveReload, or @.UseWebDebugger this is the server hostname "
208
208
  "that will be used to load the bundle from.")
209
209
  DOC_DEFAULT("localhost")
210
210
  String SourceBundleHost { get; set; };
211
211
 
212
212
  DOC_STRING(
213
- "When using a @.UseFastRefresh, @.UseLiveReload, or @.UseWebDebugger this is the server port "
213
+ "When using @.UseFastRefresh, @.UseLiveReload, or @.UseWebDebugger this is the server port "
214
214
  "that will be used to load the bundle from.")
215
215
  DOC_DEFAULT("8081")
216
216
  UInt16 SourceBundlePort { get; set; };
217
217
 
218
+ DOC_STRING(
219
+ "When using @.UseFastRefresh, @.UseLiveReload, or @.UseWebDebugger this controls whether the bundler should include inline source maps."
220
+ "If set, the bundler will include the source maps inline (this will improve debugging experience, but for very large bundles it could have a significant performance hit)")
221
+ DOC_DEFAULT("true")
222
+ Boolean RequestInlineSourceMap { get; set; };
223
+
218
224
  DOC_STRING(
219
225
  "The @JSIEngine override to be used with the React instance.\n"
220
226
  "In order for the override to work, Microsoft.ReactNative must be compiled with support of that engine. "
@@ -132,6 +132,7 @@ IAsyncAction ReactNativeHost::ReloadInstance() noexcept {
132
132
  }
133
133
  reactOptions.DeveloperSettings.SourceBundleHost = to_string(m_instanceSettings.SourceBundleHost());
134
134
  reactOptions.DeveloperSettings.SourceBundlePort = m_instanceSettings.SourceBundlePort();
135
+ reactOptions.DeveloperSettings.RequestInlineSourceMap = m_instanceSettings.RequestInlineSourceMap();
135
136
 
136
137
  reactOptions.ByteCodeFileUri = to_string(m_instanceSettings.ByteCodeFileUri());
137
138
  reactOptions.EnableByteCodeCaching = m_instanceSettings.EnableByteCodeCaching();