Skip to content

Commit 5de79cf

Browse files
chore: 🔄 synced file(s) with latest changes (#23)
synced local file(s) with latest changes. <details> <summary>Changed files</summary> <ul> <li>synced local directory <code>./</code> with remote directory <code>./</code></li> </ul> </details> --- This PR was created automatically by the [repo-file-sync-action](https://github.com/BetaHuhn/repo-file-sync-action) workflow run [#24381100279]
1 parent d238d7a commit 5de79cf

34 files changed

Lines changed: 1224 additions & 1097 deletions

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,45 @@
22

33
> This changelog keeps track of all updates and improvements made to `W3sSampleWallet`.
44
5+
## v2.1.0 - _(2026-04-13)_
6+
7+
### 🚀 What's New
8+
9+
- Bumped `@circle-fin/w3s-pw-react-native-sdk` to **v2.2.1** [(npm)](https://www.npmjs.com/package/@circle-fin/w3s-pw-react-native-sdk); bumped app metadata to **2.1.0**.
10+
- Updated README for **iOS/Android** requirements aligned with SDK **2.2.1** (including **Android SDK Platform 36** where applicable).
11+
- Fixed **iOS tab switching** when using `react-native-collapsible-tab-view` v8 with React Native **0.81**.
12+
- Added **AGENTS.md** with local verification steps for contributors and agents.
13+
- CI: **ESLint**, **Prettier**, and **TypeScript** (`tsc --noEmit`) on pull requests; **AI PR** optional review workflow; internal **quality-checks** wired for **Cloudsmith** auth during `npm ci`.
14+
- Dependency and security-related upgrades, including **tar**, **minimatch**, **picomatch**, **undici**, **node-forge**, **flatted**, and **brace-expansion** (addressing reported advisories).
15+
516
## v2.0.0 - _(2026-03-10)_
17+
618
### 🚀 What's New
19+
720
- Migrated from **bare React Native** to **Expo 54**
821
- Upgraded `@circle-fin/w3s-pw-react-native-sdk` from v1 to v2
922
- Updated README with configuration details
1023
- Added MIGRATION_GUIDE
1124

1225
## v1.1.6 - _(2026-03-06)_
26+
1327
### 🚀 What's New
28+
1429
- Bumped `@circle-fin/w3s-pw-react-native-sdk` to v1.1.7 [(npm)](https://www.npmjs.com/package/@circle-fin/w3s-pw-react-native-sdk)
1530
- Upgraded dependencies and improved SDK integration.
1631

1732
## v1.1.2 - _(2025-03-19)_
33+
1834
### 🚀 What's New
35+
1936
- Upgrade React Native version from _0.73.6_ to _0.75.5_.
2037
- Recommended upgrade to `w3s-react-native-sdk` v1.1.2 [(npm)](https://www.npmjs.com/package/@circle-fin/w3s-pw-react-native-sdk)
2138
- Upgraded dependencies and improved SDK integration.
2239

2340
## v1.0.1 - _(2024-09-04)_
41+
2442
### 🚀 Initial Release
43+
2544
- First official release of `W3sSampleWallet`.
2645
- Example project included to demonstrate SDK integration.
2746
- Integrated with `w3s-react-native-sdk` v1.1.1 [(npm)](https://www.npmjs.com/package/@circle-fin/w3s-pw-react-native-sdk).

MIGRATION_GUIDE.md

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,18 @@ If you have an existing bare React Native project using SDK v1 and want to upgra
1212
- [Path 2: Migrate to Expo-Managed Workflow](#path-2-migrate-to-expo-managed-workflow)
1313
- [API Changes](#api-changes)
1414

15-
1615
---
1716

1817
### Understanding the Architecture Change
1918

2019
**SDK v1**: Traditional bare React Native architecture
20+
2121
- Package: `"@circle-fin/w3s-pw-react-native-sdk": "^1.0.0"`
2222
- Architecture: Bare React Native
2323
- Build: Manual native project setup
2424

2525
**SDK v2**: Expo Modules architecture
26+
2627
- Package: `"@circle-fin/w3s-pw-react-native-sdk": "^2.0.0"`
2728
- Architecture: Expo Modules
2829
- Build: Expo Prebuild
@@ -43,11 +44,13 @@ Choose the migration path based on your project's native code customizations:
4344
This approach preserves your existing native projects and adds Expo Modules support to them.
4445

4546
**Best for:**
47+
4648
- Projects with **custom native code** (native modules, custom configurations, etc.)
4749
- Teams that want to **continue managing** `ios/` and `android/` directories manually
4850
- Minimal changes to existing workflow
4951

5052
**How it works:**
53+
5154
- Uses `npx install-expo-modules@latest` to automatically configure native projects
5255
- Keeps your existing `ios/` and `android/` directories
5356
- Adds necessary Expo Modules configuration without removing customizations
@@ -76,11 +79,13 @@ npm install @circle-fin/w3s-pw-react-native-sdk@^2.0.0
7679
4. **Build and test:**
7780

7881
For iOS:
82+
7983
```bash
8084
npm run ios
8185
```
8286

8387
For Android:
88+
8489
```bash
8590
npm run android
8691
```
@@ -92,11 +97,13 @@ npm run android
9297
This approach converts your project to use Expo's managed workflow where `expo prebuild` generates and manages native code.
9398

9499
**Best for:**
100+
95101
- Projects with **minimal or no custom native code**
96102
- Teams that want **Expo to manage** native configurations
97103
- Simpler maintenance through declarative `app.json` configuration
98104

99105
**How it works:**
106+
100107
- Deletes and regenerates `ios/` and `android/` directories from `app.json`
101108
- Native code is managed by Expo (don't edit directly)
102109
- Run `expo prebuild` whenever you change native configuration
@@ -146,11 +153,13 @@ The `--clean` flag will delete and regenerate the native directories.
146153
5. **Build and test:**
147154

148155
For iOS:
156+
149157
```bash
150158
npx expo run:ios
151159
```
152160

153161
For Android:
162+
154163
```bash
155164
npx expo run:android
156165
```
@@ -167,31 +176,34 @@ npx expo run:android
167176
**Add listener:**
168177

169178
SDK v1:
179+
170180
```typescript
171181
WalletSdk.addListener((event) => {
172182
// Handle event
173-
})
183+
});
174184
```
175185

176186
SDK v2:
187+
177188
```typescript
178189
const eventListener = ProgrammablewalletRnSdk.addListener(
179-
'CirclePwOnEvent',
190+
"CirclePwOnEvent",
180191
(event) => {
181192
// Handle event
182-
}
183-
)
193+
},
194+
);
184195
```
185196

186197
**Remove listener:**
187198

188199
SDK v1:
200+
189201
```typescript
190-
WalletSdk.removeAllListeners()
202+
WalletSdk.removeAllListeners();
191203
```
192204

193205
SDK v2:
206+
194207
```typescript
195-
eventListener.remove()
208+
eventListener.remove();
196209
```
197-

README.md

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@ This sample app supports three authentication methods:
77
<img src="readme_images/running_app_pin.png" alt="PIN Authentication" width="200"/>&nbsp;&nbsp;<img src="readme_images/running_app_email.png" alt="Email OTP Authentication" width="200"/>&nbsp;&nbsp;<img src="readme_images/running_app_social.png" alt="Social Login Authentication" width="200"/>
88

99
### 1. PIN Code (Recommended for quick start)
10+
1011
- **Simplest setup** - Only requires Circle App ID
1112

1213
### 2. Email OTP
14+
1315
- **Backend configuration** - Requires email service setup on Circle developer console
1416
- No additional client-side configuration needed
1517

1618
### 3. Social Login (Google, Facebook, Apple)
19+
1720
- **Advanced setup** - Requires OAuth provider accounts and platform-specific configuration
1821
- Additional setup for iOS and Android
1922

@@ -33,29 +36,33 @@ This sample app supports three authentication methods:
3336
## Requirements
3437

3538
### Development Environment
39+
3640
- Node.js 20.19.4 or higher
3741
- npm
3842
- Expo CLI
3943

4044
### Android
45+
4146
- Java 17 (JDK 17 recommended)
4247
- Android Studio and Android SDK
43-
- Android SDK Platform 35 (Android 15 VanillaIceCream)
48+
- Android SDK Platform 36 (Android 16 Baklava)
4449
- Android SDK Build-Tools 36.0.0
45-
- Android device or emulator (API level 35+)
50+
- Android device or emulator (API level 36+)
4651

4752
### iOS
48-
- macOS with Xcode 16.1+ (Xcode 26 is recommended)
53+
54+
- macOS with Xcode 16.3+ (Xcode 26 is recommended)
4955
- Xcode Command Line Tools
5056
- CocoaPods
51-
- iOS device (iOS 15.0+) or Simulator
57+
- iOS device (iOS 15.1+) or Simulator
5258
- Apple Developer account (for physical device testing)
5359

5460
---
5561

5662
## Quick Start (PIN Mode)
5763

5864
### Prerequisites
65+
5966
1. **Circle Developer Console Account** - [Sign up here](https://console.circle.com)
6067
2. **App ID** - Get from [Circle Developer Console](https://console.circle.com/wallets/user/configurator) → Wallets → User Controlled → Configurator
6168
3. **GitHub PAT** (Android only) - [Create token](https://github.com/settings/tokens) with `read:packages` permission
@@ -95,11 +102,13 @@ npx expo prebuild
95102
**Step 5: Run the app**
96103

97104
For iOS:
105+
98106
```bash
99107
npm run ios
100108
```
101109

102110
For Android:
111+
103112
```bash
104113
npm run android
105114
```
@@ -123,6 +132,7 @@ Email OTP authentication requires an SMTP email service configured on your backe
123132
Follow [our tutorial](https://developers.circle.com/wallets/user-controlled/create-user-wallets-with-email#step-1-get-mailtrap-smtp-credentials) to configure your SMTP credentials. The tutorial uses [Mailtrap](https://mailtrap.io/) for testing.
124133

125134
The tutorial covers:
135+
126136
- **Step 1:** Getting SMTP credentials from your email provider
127137
- **Step 2:** Configuring SMTP settings in Circle Developer Console
128138

@@ -146,6 +156,7 @@ Before configuring your app, you need to obtain IDs from each social provider.
146156
<summary><b>Google</b></summary>
147157

148158
**What you need:**
159+
149160
- Web Client ID
150161
- `google-services.json` file from Firebase (for Android)
151162
- iOS Client ID (extracted from `GoogleService-Info.plist`)
@@ -159,9 +170,9 @@ Before configuring your app, you need to obtain IDs from each social provider.
159170
- Click "Add app" → Select Android
160171
- Package name: `com.circle.w3s.rn.sample.wallet`
161172
- Download the `google-services.json` file
162-
163-
For detailed Android setup steps, see [Firebase Android setup guide](https://firebase.google.com/docs/android/setup#create-firebase-project)
164-
173+
174+
For detailed Android setup steps, see [Firebase Android setup guide](https://firebase.google.com/docs/android/setup#create-firebase-project)
175+
165176
3. Add an **iOS app** to your project:
166177
- Go to Project Settings → Your apps
167178
- Click "Add app" → Select iOS
@@ -178,6 +189,7 @@ Before configuring your app, you need to obtain IDs from each social provider.
178189
- In the **Web SDK configuration** panel, copy the **Web client ID**
179190

180191
**Save these values:**
192+
181193
```
182194
✓ Web Client ID: xxxxx.apps.googleusercontent.com
183195
✓ google-services.json: Downloaded
@@ -190,6 +202,7 @@ Before configuring your app, you need to obtain IDs from each social provider.
190202
<summary><b>Facebook</b></summary>
191203

192204
**What you need:**
205+
193206
- Facebook App ID
194207
- Facebook Client Token
195208
- Facebook Display Name
@@ -205,6 +218,7 @@ Before configuring your app, you need to obtain IDs from each social provider.
205218
- **Facebook Display Name** (your app name)
206219

207220
**Save these values:**
221+
208222
```
209223
✓ Facebook App ID: xxxxxxxxxxxx
210224
✓ Facebook Client Token: xxxxxxxxxxxxxxxx
@@ -217,6 +231,7 @@ Before configuring your app, you need to obtain IDs from each social provider.
217231
<summary><b>Apple</b></summary>
218232

219233
**What you need:**
234+
220235
- Service ID (for Sign in with Apple on Android)
221236

222237
**Steps:**
@@ -225,6 +240,7 @@ Before configuring your app, you need to obtain IDs from each social provider.
225240
2. Note down your **Service ID**
226241

227242
**Save this value:**
243+
228244
```
229245
✓ Apple Service ID: com.yourcompany.yourapp
230246
```
@@ -311,6 +327,7 @@ Edit `prebuild-sync-src/android/app/src/main/res/values/strings.xml`:
311327
```
312328

313329
Replace:
330+
314331
- `YOUR_FACEBOOK_APP_ID` with your Facebook App ID
315332
- `YOUR_FACEBOOK_CLIENT_TOKEN` with your Facebook Client Token
316333

@@ -340,13 +357,15 @@ Replace `YOUR_APPLE_SERVICE_ID` with your Apple Service ID (e.g., `com.yourcompa
340357
If you encounter build or Metro bundler errors:
341358

342359
1. **Clean install and rebuild:**
360+
343361
```sh
344362
rm -rf node_modules package-lock.json android ios .expo
345363
npm install
346364
npx expo prebuild --clean
347365
```
348366

349367
2. **Clear Metro bundler cache:**
368+
350369
```sh
351370
npx expo start --clear
352371
```

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
## Reporting a Vulnerability
44

5-
Please do not file public issues on Github for security vulnerabilities. All security vulnerabilities should be reported to Circle privately, through Circle's [Vulnerability Disclosure Program](https://hackerone.com/circle). Please read through the program policy before submitting a report.
5+
Please do not file public issues on GitHub for security vulnerabilities. All security vulnerabilities should be reported to Circle privately, through Circle's [Vulnerability Disclosure Program](https://hackerone.com/circle). Please read through the program policy before submitting a report.

0 commit comments

Comments
 (0)