@tiledev/sdk-apptile-live-selling 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +36 -9
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -11,12 +11,33 @@ native). Your header, comments list, bid bar and sheets stay yours.
11
11
  supply, so there is no Shopify dependency.
12
12
 
13
13
  ```bash
14
- npm i @tiledev/sdk-apptile-live-selling
14
+ npm i @tiledev/sdk-apptile-live-selling @tiledev/sdk-apptile-live-selling-native
15
15
  ```
16
16
 
17
- **One install, two packages.** Everything native — the `LivePip` Expo module, the podspec, the Kotlin,
18
- the config plugin — lives in `@tiledev/sdk-apptile-live-selling-native`, which this package depends on
19
- and pulls in for you. This package is pure JavaScript. **You do not list the native one yourself.**
17
+ **Two packages, and an Expo app must list both.** Everything native — the `LivePip` Expo module, the
18
+ podspec, the Kotlin, the config plugin — lives in `@tiledev/sdk-apptile-live-selling-native`. This
19
+ package is pure JavaScript and depends on it.
20
+
21
+ Listing it separately is not redundant, and this is the one installation mistake worth spelling out.
22
+ **In a tree that contains `expo` and `react-native`, npm nests the native package** at
23
+ `node_modules/@tiledev/sdk-apptile-live-selling/node_modules/…` rather than hoisting it. Expo's
24
+ autolinking scans the whole tree and finds it there quite happily — but its **config-plugin resolver
25
+ resolves plugin names from the project root only**, so `expo prebuild` fails outright:
26
+
27
+ ```
28
+ PluginError: Failed to resolve plugin for module "@tiledev/sdk-apptile-live-selling-native"
29
+ ```
30
+
31
+ A direct entry is what hoists it. Reproduced in a bare project carrying nothing but `expo`,
32
+ `react-native`, `react` and this package.
33
+
34
+ **Pin it to exactly the version this package's `dependencies` names** — never a different one, or npm
35
+ keeps two copies of the same Expo module and the identical pod and module names collide at link time:
36
+
37
+ ```json
38
+ "@tiledev/sdk-apptile-live-selling": "^0.3.0",
39
+ "@tiledev/sdk-apptile-live-selling-native": "0.1.0"
40
+ ```
20
41
 
21
42
  That split is not tidiness. Expo autolinks any package carrying an `expo-module.config.json` and
22
43
  records its **`packageVersion`** in `expoAutolinkingConfig`, which is one of the content sources the
@@ -27,7 +48,8 @@ longer autolinked, so its version is not hashed and a release of it ships as a c
27
48
  ### What a version bump here means for you
28
49
 
29
50
  The native dependency is pinned **exactly**, so the native version can only move when this package's
30
- version moves. That makes this package's own version number the signal:
51
+ version moves. That makes this package's own version number the signal — and it is why the direct
52
+ entry above can be pinned and left alone until this package's minor changes:
31
53
 
32
54
  | bump | what it costs you |
33
55
  |---|---|
@@ -41,7 +63,8 @@ So take it with a caret and let patches arrive on their own:
41
63
  ```
42
64
 
43
65
  `^0.3.0` accepts every `0.3.x` and refuses `0.4.0` — free JS updates, and a deliberate edit on the day
44
- native code changes. **Check the fingerprint in CI anyway**: it is the only thing that catches a
66
+ native code changes. On a minor, move the native pin to whatever this package's new `dependencies`
67
+ names, in the same commit. **Check the fingerprint in CI anyway**: it is the only thing that catches a
45
68
  mistake here regardless of how the ranges are written.
46
69
 
47
70
  Peers: `react` and `react-native` are needed by the main entry, which re-exports the React layer;
@@ -63,9 +86,7 @@ beside the root is `./types` (types alone) and a wildcard for any module in `dis
63
86
  Every native entry live selling needs lives in a file `expo prebuild` regenerates, so it has to be a
64
87
  plugin — an edit by hand works on the machine that made it and silently stops working in CI.
65
88
 
66
- **The plugin ships in the native package**, so name that one in `app.json` even though you never
67
- installed it directly — it is in your `node_modules` as a dependency of this package, and both Expo's
68
- plugin resolution and its autolinking scan the whole tree:
89
+ **The plugin ships in the native package**, so name that one in `app.json`, not this one:
69
90
 
70
91
  ```json
71
92
  {
@@ -359,6 +380,12 @@ config plugin:
359
380
  4. `npm run build && npm publish`
360
381
  5. say in the release notes that a new binary is required
361
382
 
383
+ **A documentation-only release of the native package does NOT move the pin.** `0.1.1` was published
384
+ purely to correct its README; the pin here deliberately stays at `0.1.0`. Moving it would have made
385
+ this a native change — consumers on `^0.3.0` take a patch automatically, so their fingerprint would
386
+ have shifted, and every one of them would have needed a new binary to fix a paragraph of prose. The
387
+ version this package pins is a statement about the native *binary*, not about which README is newest.
388
+
362
389
  The minor bump is the whole safety mechanism. A native change released as a patch is the one mistake
363
390
  this layout cannot absorb: it moves every consumer's fingerprint without anyone editing anything, and
364
391
  the symptom is silent — over-the-air updates simply stop reaching devices.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tiledev/sdk-apptile-live-selling",
3
- "version": "0.3.0",
4
- "description": "Live selling, auctions and giveaways for React Native \u2014 the Apptile live-selling gateway as a typed singleton, a Zego room engine behind a platform boundary, an assembled session state machine, and system picture-in-picture with its own config plugin. Commerce comes from an adapter.",
3
+ "version": "0.3.1",
4
+ "description": "Live selling, auctions and giveaways for React Native — the Apptile live-selling gateway as a typed singleton, a Zego room engine behind a platform boundary, an assembled session state machine, and system picture-in-picture with its own config plugin. Commerce comes from an adapter.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
7
7
  "sideEffects": false,