Skip to content

Commit eb5bbc6

Browse files
committed
Merge branch 'main' into feat/android-aab-signing
2 parents 321b308 + 1e69b57 commit eb5bbc6

File tree

75 files changed

+1001
-574
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+1001
-574
lines changed

.changeset/fluffy-windows-relax.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'rock': patch
3+
'rock-docs': patch
4+
---
5+
6+
website: update wording to emphasize Rock's strengths

README.md

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,54 +4,46 @@
44
</picture>
55
</a>
66
<p align="center">
7-
🪨 Rock is a cross-platform React Native app development and build toolchain built for modularity, build reuse, and incremental adoption. It integrates seamlessly with your existing infrastructure, giving you complete control without vendor lock-in.
7+
🪨 Rock is a modular toolkit for teams building React Native apps. It helps improve build times and developer experience while fitting into your existing workflows and infrastructure.
88
</p>
99

1010
---
1111

12-
## React Native at scale is challenging
12+
## Key Features
1313

14-
Enterprise apps aren't built overnight. As maintainers of the Community CLI and partners to enterprise teams, we've seen the real challenges: high build times, difficulty adopting new third-party cloud services, and high barriers to introducing React Native into existing iOS and Android apps.
14+
**☁️ Remote Build Cache**
15+
Save up to 96% of build time by reusing native artifacts (APK, AAB, APP, IPA) across machines and CI. Use built‑in integrations for GitHub, S3, and R2 or bring your own storage.
1516

16-
Rock simplifies native build setup and reuse. In most React Native codebases, only about 10% of code changes affect the native iOS/Android files. Yet most teams rebuild their native apps constantly—on every commit, PR, or merge to main—when it's completely unnecessary.
17+
**🔗 Brownfield ready**
18+
Add React Native to existing iOS and Android apps using Rock Brownfield.
1719

18-
Rock leverages this insight by providing intelligent caching in your cloud infrastructure, seamlessly integrated through its CLI. This allows you to skip up to 90% of unnecessary native builds.
20+
**🔌 Modular & Extensible**
21+
A plugin‑driven architecture that lets you customize platforms, bundlers, cache providers, and more.
1922

20-
## Features
23+
**🖥️ Cross‑platform‑ready**
24+
iOS and Android by default; designed to extend to TVs, macOS, and Windows (coming soon).
2125

22-
**🖥️ Brand New CLI**
23-
A familiar CLI experience with end-to-end development and build workflows. Migrate in seconds with `npm create rock`.
24-
25-
**☁️ Reusable Cloud Builds**
26-
Reliable caching of native artifacts (APK, IPA) that you can store wherever you prefer, or use our out-of-the-box integrations with GitHub, S3, and R2.
27-
28-
**🔧 GitHub Actions**
29-
Complete logic for downloading, uploading, and building native artifacts for iOS (APP, IPA) and Android (APK, AAB).
30-
31-
**🔗 Plug-and-Play Brownfield**
32-
Package your React Native app as a framework and integrate it into your iOS and Android apps just like any other library.
33-
34-
**📦 Bundler Flexibility**
35-
Rock supports both Metro and Re.Pack for JavaScript bundling. With Re.Pack, you can build Super Apps and Mobile Microfrontends.
36-
37-
**🔌 Extensible Plugin System**
38-
Built with modularity in mind, Rock allows you to extend its capabilities through plugins that integrate with both the CLI and native templates.
26+
**⚡ Easy Community CLI Migration**
27+
A familiar CLI that helps you develop, run, and build your app. Migrate from Community CLI in minutes.
3928

4029
## Installation
4130

42-
Rock is designed for incremental adoption. Whether you're just starting with React Native in your iOS or Android app, or want to migrate from the React Native Community CLI, you can do it step-by-step without having to figure everything out at once.
31+
Choose your path based on your current situation:
4332

44-
### Migrating an existing Community CLI project
33+
### Creating a new project
4534

46-
To migrate an existing project, open a terminal in your project root and run:
35+
> **Consider Expo First**
36+
> For **new projects**, we recommend starting with [Expo](https://expo.dev) for the best developer experience and similar remote caching capabilities. Rock is designed for teams who have outgrown the Community CLI.
37+
38+
To create a fresh React Native app with Rock, open a terminal and run:
4739

4840
```shell
4941
npm create rock
5042
```
5143

52-
### Creating a new project
44+
### Migrating an existing Community CLI project
5345

54-
To create a fresh React Native app with Rock, open a terminal and run:
46+
To migrate an existing project, open a terminal in your project root and run:
5547

5648
```shell
5749
npm create rock

packages/cli/CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,24 @@
11
# rock
22

3+
## 0.11.5
4+
5+
### Patch Changes
6+
7+
- 94e2fba: chore: add missing description fields to package.jsons
8+
- Updated dependencies [3be5269]
9+
- Updated dependencies [94e2fba]
10+
- @rock-js/tools@0.11.5
11+
- @rock-js/config@0.11.5
12+
13+
## 0.11.4
14+
15+
### Patch Changes
16+
17+
- c904ec9: fix: properly take env value into account; hash sensitive data
18+
- Updated dependencies [c904ec9]
19+
- @rock-js/tools@0.11.4
20+
- @rock-js/config@0.11.4
21+
322
## 0.11.3
423

524
### Patch Changes

packages/cli/README.md

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,54 +4,46 @@
44
</picture>
55
</a>
66
<p align="center">
7-
🪨 Rock is a cross-platform React Native app development and build toolchain built for modularity, build reuse, and incremental adoption. It integrates seamlessly with your existing infrastructure, giving you complete control without vendor lock-in.
7+
🪨 Rock is a modular toolkit for teams building React Native apps. It helps improve build times and developer experience while fitting into your existing workflows and infrastructure.
88
</p>
99

1010
---
1111

12-
## React Native at scale is challenging
12+
## Key Features
1313

14-
Enterprise apps aren't built overnight. As maintainers of the Community CLI and partners to enterprise teams, we've seen the real challenges: high build times, difficulty adopting new third-party cloud services, and high barriers to introducing React Native into existing iOS and Android apps.
14+
**☁️ Remote Build Cache**
15+
Save up to 96% of build time by reusing native artifacts (APK, AAB, APP, IPA) across machines and CI. Use built‑in integrations for GitHub, S3, and R2 or bring your own storage.
1516

16-
Rock simplifies native build setup and reuse. In most React Native codebases, only about 10% of code changes affect the native iOS/Android files. Yet most teams rebuild their native apps constantly—on every commit, PR, or merge to main—when it's completely unnecessary.
17+
**🔗 Brownfield ready**
18+
Add React Native to existing iOS and Android apps using Rock Brownfield.
1719

18-
Rock leverages this insight by providing intelligent caching in your cloud infrastructure, seamlessly integrated through its CLI. This allows you to skip up to 90% of unnecessary native builds.
20+
**🔌 Modular & Extensible**
21+
A plugin‑driven architecture that lets you customize platforms, bundlers, cache providers, and more.
1922

20-
## Features
23+
**🖥️ Cross‑platform‑ready**
24+
iOS and Android by default; designed to extend to TVs, macOS, and Windows (coming soon).
2125

22-
**🖥️ Brand New CLI**
23-
A familiar CLI experience with end-to-end development and build workflows. Migrate in seconds with `npm create rock`.
24-
25-
**☁️ Reusable Cloud Builds**
26-
Reliable caching of native artifacts (APK, IPA) that you can store wherever you prefer, or use our out-of-the-box integrations with GitHub, S3, and R2.
27-
28-
**🔧 GitHub Actions**
29-
Complete logic for downloading, uploading, and building native artifacts for iOS (APP, IPA) and Android (APK, AAB).
30-
31-
**🔗 Plug-and-Play Brownfield**
32-
Package your React Native app as a framework and integrate it into your iOS and Android apps just like any other library.
33-
34-
**📦 Bundler Flexibility**
35-
Rock supports both Metro and Re.Pack for JavaScript bundling. With Re.Pack, you can build Super Apps and Mobile Microfrontends.
36-
37-
**🔌 Extensible Plugin System**
38-
Built with modularity in mind, Rock allows you to extend its capabilities through plugins that integrate with both the CLI and native templates.
26+
**⚡ Easy Community CLI Migration**
27+
A familiar CLI that helps you develop, run, and build your app. Migrate from Community CLI in minutes.
3928

4029
## Installation
4130

42-
Rock is designed for incremental adoption. Whether you're just starting with React Native in your iOS or Android app, or want to migrate from the React Native Community CLI, you can do it step-by-step without having to figure everything out at once.
31+
Choose your path based on your current situation:
4332

44-
### Migrating an existing Community CLI project
33+
### Creating a new project
4534

46-
To migrate an existing project, open a terminal in your project root and run:
35+
> [!TIP]
36+
> For **new projects**, we recommend starting with [Expo](https://expo.dev) for the best developer experience and similar remote caching capabilities. Rock is designed for teams who have outgrown the Community CLI.
37+
38+
To create a fresh React Native app with Rock, open a terminal and run:
4739

4840
```shell
4941
npm create rock
5042
```
5143

52-
### Creating a new project
44+
### Migrating an existing Community CLI project
5345

54-
To create a fresh React Native app with Rock, open a terminal and run:
46+
To migrate an existing project, open a terminal in your project root and run:
5547

5648
```shell
5749
npm create rock

packages/cli/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "rock",
3-
"version": "0.11.3",
3+
"version": "0.11.5",
4+
"description": "Command-line interface for Rock - a React Native development toolkit",
45
"type": "module",
56
"types": "./dist/src/index.d.ts",
67
"exports": {
@@ -24,8 +25,8 @@
2425
},
2526
"dependencies": {
2627
"@react-native-community/cli-config": "^20.0.0",
27-
"@rock-js/config": "^0.11.3",
28-
"@rock-js/tools": "^0.11.3",
28+
"@rock-js/config": "^0.11.5",
29+
"@rock-js/tools": "^0.11.5",
2930
"adm-zip": "^0.5.16",
3031
"commander": "^12.1.0",
3132
"tar": "^7.5.1",

packages/cli/src/lib/plugins/fingerprint.ts

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import { createHash } from 'node:crypto';
12
import { performance } from 'node:perf_hooks';
23
import type { PluginApi } from '@rock-js/config';
3-
import type { FingerprintSources } from '@rock-js/tools';
4+
import type { FingerprintInputHash, FingerprintSources } from '@rock-js/tools';
45
import {
56
color,
67
intro,
@@ -12,6 +13,25 @@ import {
1213
spinner,
1314
} from '@rock-js/tools';
1415

16+
const hashValue = (value: string) =>
17+
`[HASHED:${createHash('sha256').update(value).digest('hex').substring(0, 8)}]`;
18+
19+
/**
20+
* Redacts sensitive environment variables from fingerprint sources by hashing their values
21+
*/
22+
function redactSensitiveSources(sources: FingerprintInputHash[]) {
23+
return sources.map((source) => {
24+
if (source.key === 'json:env' && 'json' in source) {
25+
const env = source.json as Record<string, string>;
26+
const redactedEnv = Object.fromEntries(
27+
Object.entries(env).map(([key, value]) => [key, hashValue(value)]),
28+
);
29+
return { ...source, json: redactedEnv };
30+
}
31+
return source;
32+
});
33+
}
34+
1535
type NativeFingerprintCommandOptions = {
1636
platform: 'ios' | 'android';
1737
raw?: boolean;
@@ -39,7 +59,9 @@ export async function nativeFingerprintCommand(
3959
JSON.stringify(
4060
{
4161
hash: fingerprint.hash,
42-
sources: fingerprint.inputs.filter((source) => source.hash != null),
62+
sources: redactSensitiveSources(
63+
fingerprint.inputs.filter((source) => source.hash != null),
64+
),
4365
},
4466
null,
4567
2,
@@ -69,7 +91,9 @@ export async function nativeFingerprintCommand(
6991
logger.debug(
7092
'Sources:',
7193
JSON.stringify(
72-
fingerprint.inputs.filter((source) => source.hash != null),
94+
redactSensitiveSources(
95+
fingerprint.inputs.filter((source) => source.hash != null),
96+
),
7397
null,
7498
2,
7599
),

packages/config/CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
# @rnef/config
22

3+
## 0.11.5
4+
5+
### Patch Changes
6+
7+
- 94e2fba: chore: add missing description fields to package.jsons
8+
- Updated dependencies [3be5269]
9+
- Updated dependencies [94e2fba]
10+
- @rock-js/tools@0.11.5
11+
- @rock-js/provider-github@0.11.5
12+
13+
## 0.11.4
14+
15+
### Patch Changes
16+
17+
- Updated dependencies [c904ec9]
18+
- @rock-js/tools@0.11.4
19+
- @rock-js/provider-github@0.11.4
20+
321
## 0.11.3
422

523
### Patch Changes

packages/config/package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "@rock-js/config",
3-
"version": "0.11.3",
3+
"version": "0.11.5",
4+
"description": "Configuration management utilities for Rock projects",
45
"type": "module",
56
"types": "./dist/src/index.d.ts",
67
"exports": {
@@ -18,14 +19,14 @@
1819
},
1920
"dependencies": {
2021
"@babel/code-frame": "^7.26.2",
21-
"@rock-js/provider-github": "^0.11.3",
22-
"@rock-js/tools": "^0.11.3",
22+
"@rock-js/provider-github": "^0.11.5",
23+
"@rock-js/tools": "^0.11.5",
2324
"joi": "^17.13.3",
2425
"tslib": "^2.3.0"
2526
},
2627
"devDependencies": {
2728
"@types/babel__code-frame": "^7.0.6",
28-
"@rock-js/test-helpers": "^0.11.3"
29+
"@rock-js/test-helpers": "^0.11.5"
2930
},
3031
"publishConfig": {
3132
"access": "public"

packages/create-app/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# create-rock
22

3+
## 0.11.5
4+
5+
### Patch Changes
6+
7+
- 2788d2f: bump create-rock
8+
- 94e2fba: chore: add missing description fields to package.jsons
9+
310
## 0.11.3
411

512
### Patch Changes

packages/create-app/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "create-rock",
3-
"version": "0.11.3",
3+
"version": "0.11.5",
4+
"description": "Scaffolding tool for creating new React Native applications with Rock",
45
"type": "module",
56
"types": "./dist/src/index.d.ts",
67
"exports": {
@@ -21,8 +22,8 @@
2122
"create-rock": "./dist/src/bin.js"
2223
},
2324
"devDependencies": {
24-
"@rock-js/test-helpers": "^0.11.3",
25-
"@rock-js/tools": "^0.11.3",
25+
"@rock-js/test-helpers": "^0.11.5",
26+
"@rock-js/tools": "^0.11.5",
2627
"@rslib/core": "^0.13.0",
2728
"@types/gradient-string": "^1.1.6",
2829
"@types/minimist": "^1.2.5",

0 commit comments

Comments
 (0)