@bleedingdev/modern-js-create 3.2.0-ultramodern.45 → 3.2.0-ultramodern.47

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.
package/dist/index.js CHANGED
@@ -565,7 +565,7 @@ const ZEPHYR_AGENT_VERSION = '1.1.1';
565
565
  const WRANGLER_VERSION = '4.95.0';
566
566
  const TAILWIND_VERSION = '4.3.0';
567
567
  const TAILWIND_POSTCSS_VERSION = '4.3.0';
568
- const EFFECT_TSGO_VERSION = '0.11.0';
568
+ const EFFECT_TSGO_VERSION = '0.13.0';
569
569
  const TYPESCRIPT_VERSION = '6.0.3';
570
570
  const TYPESCRIPT_NATIVE_PREVIEW_VERSION = '7.0.0-dev.20260527.2';
571
571
  const OXLINT_VERSION = '1.66.0';
@@ -2910,40 +2910,55 @@ export default function ShellCartPage() {
2910
2910
  `;
2911
2911
  }
2912
2912
  function createShellRemoteComponents() {
2913
- return `import { loadRemote } from '@module-federation/modern-js-v3/runtime';
2914
- import * as React from 'react';
2915
-
2916
- type RemoteComponent = React.ComponentType<Record<string, never>>;
2917
-
2918
- const lazyRemote = (moduleId: string) => {
2919
- const Component = React.lazy(async () => {
2920
- const module = await loadRemote(moduleId);
2921
- const remote = (module as { default?: unknown }).default;
2922
-
2923
- if (typeof remote !== 'function') {
2924
- throw new Error(\`Remote "\${moduleId}" did not expose a React component.\`);
2925
- }
2926
-
2927
- return {
2928
- default: remote as RemoteComponent,
2929
- };
2930
- });
2931
-
2932
- return function RemoteComponent() {
2933
- return (
2934
- <React.Suspense fallback={null}>
2935
- <Component />
2936
- </React.Suspense>
2937
- );
2938
- };
2939
- };
2940
-
2941
- export const Header = lazyRemote('explore/Header');
2942
- export const StorePicker = lazyRemote('explore/StorePicker');
2943
- export const Recommendations = lazyRemote('explore/Recommendations');
2944
- export const ProductPage = lazyRemote('decide/ProductPage');
2945
- export const MiniCart = lazyRemote('checkout/MiniCart');
2946
- export const CartPage = lazyRemote('checkout/CartPage');
2913
+ return `import { createLazyComponent } from '@module-federation/modern-js-v3/react';
2914
+ import { getInstance } from '@module-federation/modern-js-v3/runtime';
2915
+
2916
+ const remoteFallback =
2917
+ ({ error }: { error: Error }) =>
2918
+ <div data-remote-error={error.name}>Remote unavailable</div>;
2919
+
2920
+ export const Header = createLazyComponent({
2921
+ export: 'default',
2922
+ fallback: remoteFallback,
2923
+ instance: getInstance(),
2924
+ loader: () => import('explore/Header'),
2925
+ loading: null,
2926
+ });
2927
+ export const StorePicker = createLazyComponent({
2928
+ export: 'default',
2929
+ fallback: remoteFallback,
2930
+ instance: getInstance(),
2931
+ loader: () => import('explore/StorePicker'),
2932
+ loading: null,
2933
+ });
2934
+ export const Recommendations = createLazyComponent({
2935
+ export: 'default',
2936
+ fallback: remoteFallback,
2937
+ instance: getInstance(),
2938
+ loader: () => import('explore/Recommendations'),
2939
+ loading: null,
2940
+ });
2941
+ export const ProductPage = createLazyComponent({
2942
+ export: 'default',
2943
+ fallback: remoteFallback,
2944
+ instance: getInstance(),
2945
+ loader: () => import('decide/ProductPage'),
2946
+ loading: null,
2947
+ });
2948
+ export const MiniCart = createLazyComponent({
2949
+ export: 'default',
2950
+ fallback: remoteFallback,
2951
+ instance: getInstance(),
2952
+ loader: () => import('checkout/MiniCart'),
2953
+ loading: null,
2954
+ });
2955
+ export const CartPage = createLazyComponent({
2956
+ export: 'default',
2957
+ fallback: remoteFallback,
2958
+ instance: getInstance(),
2959
+ loader: () => import('checkout/CartPage'),
2960
+ loading: null,
2961
+ });
2947
2962
  `;
2948
2963
  }
2949
2964
  function createRemotePage(app) {
@@ -3242,36 +3257,27 @@ export default function ${componentName}() {
3242
3257
  `;
3243
3258
  }
3244
3259
  function createDecideRemoteComponents() {
3245
- return `import { loadRemote } from '@module-federation/modern-js-v3/runtime';
3246
- import * as React from 'react';
3247
-
3248
- type RemoteComponent = React.ComponentType<Record<string, never>>;
3249
-
3250
- const lazyRemote = (moduleId: string) => {
3251
- const Component = React.lazy(async () => {
3252
- const module = await loadRemote(moduleId);
3253
- const remote = (module as { default?: unknown }).default;
3254
-
3255
- if (typeof remote !== 'function') {
3256
- throw new Error(\`Remote "\${moduleId}" did not expose a React component.\`);
3257
- }
3258
-
3259
- return {
3260
- default: remote as RemoteComponent,
3261
- };
3262
- });
3263
-
3264
- return function RemoteComponent() {
3265
- return (
3266
- <React.Suspense fallback={null}>
3267
- <Component />
3268
- </React.Suspense>
3269
- );
3270
- };
3271
- };
3272
-
3273
- export const AddToCart = lazyRemote('checkout/AddToCart');
3274
- export const Recommendations = lazyRemote('explore/Recommendations');
3260
+ return `import { createLazyComponent } from '@module-federation/modern-js-v3/react';
3261
+ import { getInstance } from '@module-federation/modern-js-v3/runtime';
3262
+
3263
+ const remoteFallback =
3264
+ ({ error }: { error: Error }) =>
3265
+ <div data-remote-error={error.name}>Remote unavailable</div>;
3266
+
3267
+ export const AddToCart = createLazyComponent({
3268
+ export: 'default',
3269
+ fallback: remoteFallback,
3270
+ instance: getInstance(),
3271
+ loader: () => import('checkout/AddToCart'),
3272
+ loading: null,
3273
+ });
3274
+ export const Recommendations = createLazyComponent({
3275
+ export: 'default',
3276
+ fallback: remoteFallback,
3277
+ instance: getInstance(),
3278
+ loader: () => import('explore/Recommendations'),
3279
+ loading: null,
3280
+ });
3275
3281
  `;
3276
3282
  }
3277
3283
  function remoteComponentOutputPath(app, expose) {
package/package.json CHANGED
@@ -21,7 +21,7 @@
21
21
  "engines": {
22
22
  "node": ">=20"
23
23
  },
24
- "version": "3.2.0-ultramodern.45",
24
+ "version": "3.2.0-ultramodern.47",
25
25
  "types": "./dist/types/index.d.ts",
26
26
  "main": "./dist/index.js",
27
27
  "bin": {
@@ -41,7 +41,7 @@
41
41
  "@types/node": "^25.9.1",
42
42
  "@typescript/native-preview": "7.0.0-dev.20260527.2",
43
43
  "tsx": "^4.22.3",
44
- "@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.2.0-ultramodern.45"
44
+ "@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.2.0-ultramodern.47"
45
45
  },
46
46
  "publishConfig": {
47
47
  "registry": "https://registry.npmjs.org/",
@@ -54,6 +54,6 @@
54
54
  "start": "node ./dist/index.js"
55
55
  },
56
56
  "ultramodern": {
57
- "frameworkVersion": "3.2.0-ultramodern.45"
57
+ "frameworkVersion": "3.2.0-ultramodern.47"
58
58
  }
59
59
  }
@@ -36,7 +36,7 @@
36
36
  "react-i18next": "17.0.8"
37
37
  },
38
38
  "devDependencies": {
39
- "@effect/tsgo": "0.11.0",
39
+ "@effect/tsgo": "0.13.0",
40
40
  "@modern-js/adapter-rstest": "{{adapterRstestVersion}}",
41
41
  "@modern-js/app-tools": "{{appToolsVersion}}",
42
42
  {{#if enableBff}} "@modern-js/plugin-bff": "{{pluginBffVersion}}",