Skip to content

Conversation

@artus9033
Copy link
Collaborator

@artus9033 artus9033 commented Dec 18, 2025

Summary

This PR:

  • introduces a standalone CLI for the brownfield plugin to ease usage without Rock
  • reworks the documentation to get it up to date and more helpful with standalone integration
  • reworks the demo application by re-setting up the RN app, adding 2 additional demo apps: Android & iOS brownfield integration; the old integrated (RN source along with native source):
    Simulator Screenshot - iPhone 16e - 2026-01-04 at 12 28 31 image
  • reworks the CI pipeline to account for new apps:
    image
  • reworks build scripts & Turbo config in the repo to provide scripts & caching for all packages
  • adds CONTRIBUTING.md describing the scripts & an examples.mdx page for docs to list and briefly describe each of the example apps in the demo to enhance DX
  • adds caching of Turbo caches on GH Actions (.turbo directories)

The changes address a few important aspects:

  1. Make brownfield a fully-standalone library - currently, packaging artifacts is easy with Rock, but complex without it. The aim of this PR is to give brownfield a standalone, batteries-included tooling to do so.
  2. The demo apps and CI used to test building a native application using in-source RN app, which firstly did not produce a standalone packaged RN lib artifact and secondly didn't provide the opportunity for testing the CLI. The new setup adds 3 more apps: RN app, iOS consumer app & Android consumer app. The new CI builds artifacts from the RN app and then builds the iOS & Android consumer apps using these artifacts.

Test plan

CI green + all 3 apps working - tested manually.

@artus9033 artus9033 force-pushed the feat/cli-and-rework branch from 1da0fb5 to 33c29bf Compare January 4, 2026 12:42
@artus9033 artus9033 marked this pull request as ready for review January 7, 2026 09:34
@artus9033 artus9033 requested review from hurali97, okwasniewski and thymikee and removed request for hurali97 January 7, 2026 09:34
Copy link
Member

@okwasniewski okwasniewski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! Overall looks really good, left few minor comments

Comment on lines 329 to 351
{
const artifactName = 'ReactBrownfield.xcframework';
artifactNames.push(artifactName);
await mergeFrameworks({
sourceDir: iosBaseDir,
frameworkPaths: sdks.map((sdk) =>
path.join(
options.buildFolder ??
path.join(
iosBaseDir,
'build',
`${scheme}-${options.configuration}-${sdk}`
),
'Build',
'Products',
`${options.configuration}-${sdk}`,
'ReactBrownfield',
'ReactBrownfield.framework'
)
),
outputPath: path.join(outDir, artifactName),
});
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might need to do the same for brownie, a nice future improvement would be to allow to pass in artifact names for the CLI to pick up.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean exporting the Brownie native code as a separate XCFramework for native consumption and then packaging it with this CLI?

return relativeConfig;
}

export async function executeCommand(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can use spawn from Rock tools, it uses nano-spawn under the hood and handles these edge cases

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will!

@artus9033 artus9033 force-pushed the feat/cli-and-rework branch from d58773e to d5c11f5 Compare January 7, 2026 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants