Skip to content

Instantly share code, notes, and snippets.

View callstack-bot's full-sized avatar

Callstack Community Bot callstack-bot

View GitHub Profile
// eslint-disable-next-line import/no-unresolved
import { baz } from 'module1/baz';
export async function foo() {
return `foo + ${await baz()}`;
}
let counter = 3;
export async function baz() {
if (counter <= 0) {
return 'end';
}
// eslint-disable-next-line import/no-unresolved
const { foo } = await import('app1/foo');
import * as React from 'react';
import { Text } from 'react-native';
// eslint-disable-next-line import/no-unresolved
import Module1 from 'module1/Root';
import { foo } from './foo';
export default function App() {
const [fooText, setFooText] = React.useState<string>('');
// eslint-disable-next-line import/no-extraneous-dependencies
import { Federated } from '@callstack/repack/client';
import React from 'react';
import { Text, SafeAreaView } from 'react-native';
const App1 = React.lazy(() => Federated.importModule('app1', './App'));
const App2 = React.lazy(() => Federated.importModule('app2', './App'));
export default function App() {
return (
ScriptManager.shared.addResolver(async (scriptId, caller) => {
let url;
const containers = await fetchURLs();
const resolveURL = Federated.createURLResolver({
containers,
});
if (caller === 'main') {
url = Script.getDevServerURL(scriptId);
} else {
const resolveURL = Federated.createURLResolver({
containers: {
app1: 'http://localhost:9000/[name][ext]',
app2: 'http://localhost:9001/[name][ext]',
module1: 'http://localhost:9002/[name][ext]',
},
});
ScriptManager.shared.addResolver(async (scriptId, caller) => {
let url;
new Repack.plugins.ModuleFederationPlugin({
name: 'module1',
exposes: {
'./Root': './src/Root.tsx',
'./baz': './src/baz.ts',
},
shared: {
react: {
...Repack.Federated.SHARED_REACT,
eager: STANDALONE,
new Repack.plugins.ModuleFederationPlugin({
name: 'app1',
exposes: {
'./App': './src/App.tsx',
'./Text': './src/Text.tsx',
'./foo': './src/foo.ts',
},
shared: {
react: {
...Repack.Federated.SHARED_REACT,
new Repack.plugins.ModuleFederationPlugin({
name: 'host',
shared: {
react: {
...Repack.Federated.SHARED_REACT,
requiredVersion: '17.0.2',
},
'react-native': {
...Repack.Federated.SHARED_REACT_NATIVE,
requiredVersion: '0.68.2',
const handlePayPress = async () => {
// step 1
// step 2
// step 3
if (error) {
// Handle error
} else if (paymentIntent) {
// Handle success
}
};