You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add an opt-in Swift Package Manager resolution path for posthog-ios so consumers can sidestep CocoaPods ahead of trunk freezing on 2026-12-02 and posthog-ios dropping its podspec. Unblocks PostHog/posthog-ios#472 from the React Native side.
Set "posthog.useSpm": "true" in your app's ios/Podfile.properties.json (and use_frameworks! :linkage => :dynamic) to engage the SPM path. Default behavior is unchanged: without the property, posthog-ios continues to resolve through CocoaPods trunk via `s.dependency 'PostHog', '~> 3.58.1'`.
Example app upgraded to RN 0.79.6 and pnpm switched to node-linker=hoisted so both CI cells (build-ios-static-lib and build-ios-spm) build cleanly on Xcode 26.
Add an opt-in Swift Package Manager resolution path for `posthog-ios`. Set `"posthog.useSpm": "true"` in your app's `ios/Podfile.properties.json` and (on RN >= 0.75) `pod install` will resolve `posthog-ios` from `https://github.com/PostHog/posthog-ios.git` via the RN `spm_dependency` helper instead of CocoaPods trunk.
6
+
7
+
Default behavior is unchanged: without the property, `posthog-ios` resolves through CocoaPods. This makes the SPM path available ahead of [PostHog/posthog-ios#472](https://github.com/PostHog/posthog-ios/issues/472) and the CocoaPods trunk read-only date (2026-12-02) without forcing consumers to migrate yet.
8
+
9
+
The SPM path uses `upToNextMinorVersion: 3.58.1` to match the existing CocoaPods `~> 3.58.1` constraint and requires `use_frameworks! :linkage => :dynamic` in the consumer's `Podfile` ([known RN limitation](https://github.com/facebook/react-native/pull/44627#issuecomment-2123119711)).
Copy file name to clipboardExpand all lines: README.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,3 +7,17 @@ Session Replay for React Native (Android and iOS)
7
7
```sh
8
8
npm install posthog-react-native-session-replay
9
9
```
10
+
11
+
## iOS dependency resolution
12
+
13
+
By default, `posthog-ios` is resolved through CocoaPods trunk via `pod install`.
14
+
15
+
[CocoaPods trunk goes read-only on 2026-12-02](https://blog.cocoapods.org/CocoaPods-Specs-Repo/) and `posthog-ios` is moving to Swift Package Manager (see [PostHog/posthog-ios#472](https://github.com/PostHog/posthog-ios/issues/472)). To opt this package into the SPM resolution path early, add the following to your app's `ios/Podfile.properties.json`:
16
+
17
+
```json
18
+
{
19
+
"posthog.useSpm": "true"
20
+
}
21
+
```
22
+
23
+
When that property is set and React Native >= 0.75 is in use, `pod install` resolves `posthog-ios` from `https://github.com/PostHog/posthog-ios.git` via the RN `spm_dependency` helper. The SPM path requires `use_frameworks! :linkage => :dynamic` in your `Podfile` ([known limitation](https://github.com/facebook/react-native/pull/44627#issuecomment-2123119711)).
Copy file name to clipboardExpand all lines: example/README.md
+49-29Lines changed: 49 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,56 +2,76 @@ This is a new [**React Native**](https://reactnative.dev) project, bootstrapped
2
2
3
3
# Getting Started
4
4
5
-
> **Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
5
+
> **Note**: Make sure you have completed the [Set Up Your Environment](https://reactnative.dev/docs/set-up-your-environment) guide before proceeding.
6
6
7
-
## Step 1: Start the Metro Server
7
+
## Step 1: Start Metro
8
8
9
-
First, you will need to start**Metro**, the JavaScript _bundler_ that ships _with_ React Native.
9
+
First, you will need to run**Metro**, the JavaScript build tool for React Native.
10
10
11
-
To start Metro, run the following command from the _root_ of your React Native project:
11
+
To start the Metro dev server, run the following command from the root of your React Native project:
12
12
13
-
```bash
14
-
pnpm start
13
+
```sh
14
+
# Using npm
15
+
npm start
15
16
16
-
# OR from the monorepo root (recommended)
17
-
pnpm example start
17
+
# OR using Yarn
18
+
yarn start
18
19
```
19
20
20
-
## Step 2: Start your Application
21
+
## Step 2: Build and run your app
21
22
22
-
Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
23
+
With Metro running, open a new terminal window/pane from the root of your React Native project, and use one of the following commands to build and run your Android or iOS app:
23
24
24
-
### For Android
25
+
### Android
25
26
26
-
```bash
27
-
pnpm android
27
+
```sh
28
+
# Using npm
29
+
npm run android
28
30
29
-
# OR from the monorepo root (recommended)
30
-
pnpm example android
31
+
# OR using Yarn
32
+
yarn android
31
33
```
32
34
33
-
### For iOS
35
+
### iOS
34
36
35
-
```bash
37
+
For iOS, remember to install CocoaPods dependencies (this only needs to be run on first clone or after updating native deps).
36
38
37
-
pnpm ios
39
+
The first time you create a new project, run the Ruby bundler to install CocoaPods itself:
38
40
39
-
# OR from the monorepo root (recommended)
40
-
pnpm example ios
41
+
```sh
42
+
bundle install
41
43
```
42
44
43
-
If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
45
+
Then, and every time you update your native dependencies, run:
44
46
45
-
This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
47
+
```sh
48
+
bundle exec pod install
49
+
```
50
+
51
+
For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html).
52
+
53
+
```sh
54
+
# Using npm
55
+
npm run ios
56
+
57
+
# OR using Yarn
58
+
yarn ios
59
+
```
60
+
61
+
If everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device.
62
+
63
+
This is one way to run your app — you can also build it directly from Android Studio or Xcode.
64
+
65
+
## Step 3: Modify your app
46
66
47
-
## Step 3: Modifying your App
67
+
Now that you have successfully run the app, let's make changes!
48
68
49
-
Now that you have successfully run the app, let's modify it.
69
+
Open `App.tsx` in your text editor of choice and make some changes. When you save, your app will automatically update and reflect these changes — this is powered by [Fast Refresh](https://reactnative.dev/docs/fast-refresh).
50
70
51
-
1. Open `App.tsx` in your text editor of choice and edit some lines.
52
-
2. For **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Developer Menu** (<kbd>Ctrl</kbd> + <kbd>M</kbd> (on Window and Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (on macOS)) to see your changes!
71
+
When you want to forcefully reload, for example to reset the state of your app, you can perform a full reload:
53
72
54
-
For **iOS**: Hit <kbd>Cmd ⌘</kbd> + <kbd>R</kbd> in your iOS Simulator to reload the app and see your changes!
73
+
-**Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Dev Menu**, accessed via <kbd>Ctrl</kbd> + <kbd>M</kbd> (Windows/Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (macOS).
74
+
-**iOS**: Press <kbd>R</kbd> in iOS Simulator.
55
75
56
76
## Congratulations! :tada:
57
77
@@ -60,11 +80,11 @@ You've successfully run and modified your React Native App. :partying_face:
60
80
### Now what?
61
81
62
82
- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
63
-
- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
83
+
- If you're curious to learn more about React Native, check out the [docs](https://reactnative.dev/docs/getting-started).
64
84
65
85
# Troubleshooting
66
86
67
-
If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
87
+
If you're having issues getting the above steps to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
0 commit comments