@poolse/react-native 2.12.1 → 2.13.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.
- package/CHANGELOG.md +146 -89
- package/README.md +238 -238
- package/dist/index.cjs +1204 -400
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +469 -63
- package/dist/index.d.ts +469 -63
- package/dist/index.js +1196 -401
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,89 +1,146 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to `@poolse/react-native` are documented here.
|
|
4
|
-
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
|
|
5
|
-
versions follow [semver](https://semver.org).
|
|
6
|
-
|
|
7
|
-
## [
|
|
8
|
-
|
|
9
|
-
###
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
###
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
- **
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
- **
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
`
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@poolse/react-native` are documented here.
|
|
4
|
+
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
|
|
5
|
+
versions follow [semver](https://semver.org).
|
|
6
|
+
|
|
7
|
+
## [2.13.1] — 2026-08-23
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Controls no longer vanish mid-tap on a video call: pressing one now
|
|
12
|
+
restarts the idle countdown, which a screen-wide handler never saw
|
|
13
|
+
because a child `Pressable` wins the touch outright.
|
|
14
|
+
- The iOS audio policy is released when a call ends while its session is
|
|
15
|
+
still starting, instead of being left installed.
|
|
16
|
+
- The floating self-preview follows the stage across a rotation rather
|
|
17
|
+
than keeping a pixel position from the old bounds.
|
|
18
|
+
- The auto-hang-up on an emptied call fires once rather than on every
|
|
19
|
+
render in the window before the phase flips.
|
|
20
|
+
|
|
21
|
+
## [2.13.0] — 2026-08-23
|
|
22
|
+
|
|
23
|
+
A near-total rebuild of the calling surface.
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- **Audio output routing — `useCallAudio`.** Speaker, earpiece, wired
|
|
28
|
+
headset and Bluetooth, driven through LiveKit's `AudioSession`. Audio
|
|
29
|
+
calls start at the earpiece and video calls on the speaker, but a
|
|
30
|
+
connected headset outranks both, so plugging in AirPods mid-call does
|
|
31
|
+
the obvious thing. Android enumerates real devices and gets a picker
|
|
32
|
+
(`AudioRouteSheet`); iOS exposes only default/force-speaker, so the
|
|
33
|
+
system route picker is opened instead. This moves the audio session
|
|
34
|
+
out of host apps — `CallScreen` now owns it on the SFU path.
|
|
35
|
+
- **Camera flip.** A control in the bar, and tapping your own preview.
|
|
36
|
+
- **Draggable local preview (`LocalVideoPip`)** that snaps to the
|
|
37
|
+
nearest corner.
|
|
38
|
+
- **Call duration timer**, anchored to a timestamp so a throttled or
|
|
39
|
+
sleeping phone cannot make it drift.
|
|
40
|
+
- Exported building blocks: `CallControlButton`, `CallParticipantTile`,
|
|
41
|
+
`CallAvatar`, `LocalVideoPip`, `AudioRouteSheet`, `callColors`,
|
|
42
|
+
`useCallDuration`, `useCallAudio`.
|
|
43
|
+
- Call icons: `phone`, `phone-off`, `mic-off`, `video`, `video-off`,
|
|
44
|
+
`speaker`, `speaker-off`, `camera-flip`, `bluetooth`, `headphones`,
|
|
45
|
+
`chevron-up`.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
|
|
49
|
+
- **`CallScreen` rebuilt.** Round icon controls with captions, engaged
|
|
50
|
+
controls inverted so they read at a glance, full-bleed video, a
|
|
51
|
+
header carrying the name and call duration, and controls that fade
|
|
52
|
+
out on a connected video call and return on tap. The call surface is
|
|
53
|
+
deliberately dark regardless of the app theme, as every serious
|
|
54
|
+
calling app renders one.
|
|
55
|
+
- **`CallVideoGrid` is layout-aware**: spotlight plus floating preview
|
|
56
|
+
for a 1:1 call, a scrolling grid for three or more.
|
|
57
|
+
- **A call ends when everyone else leaves**, including when they never
|
|
58
|
+
sent a hang-up.
|
|
59
|
+
|
|
60
|
+
### Fixed
|
|
61
|
+
|
|
62
|
+
- **Video calls open with the camera on.** See `@poolse/react@2.13.0`.
|
|
63
|
+
|
|
64
|
+
## [0.1.5] — 2026-06-03
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
|
|
68
|
+
- **`<ImageMosaic>`** — WhatsApp-style multi-image grid (n1 / n2 /
|
|
69
|
+
n3 / n4+ with `+N more` overlay) used inside `<MessageBubble>`
|
|
70
|
+
whenever a message has more than one image attachment. Tapping a
|
|
71
|
+
tile opens a full-screen modal viewer with tap-anywhere-to-close.
|
|
72
|
+
Exported standalone so you can use the layout outside the bubble
|
|
73
|
+
if you want.
|
|
74
|
+
- **Haptic feedback on long-press** in `<MessageRow>` —
|
|
75
|
+
`Haptics.impactAsync(ImpactFeedbackStyle.Medium)` fires when the
|
|
76
|
+
action sheet opens. `expo-haptics` is loaded via a cached lazy
|
|
77
|
+
`require()` — falls back to a silent no-op if you haven't
|
|
78
|
+
installed it, so no peer dep is forced on consumers that don't
|
|
79
|
+
want haptics.
|
|
80
|
+
|
|
81
|
+
### Changed
|
|
82
|
+
|
|
83
|
+
- **Cleaner bubble meta row**: relative timestamp formatting
|
|
84
|
+
(`HH:MM`, `Yesterday HH:MM`, `Mon HH:MM`, `MMM D`), tabular-num
|
|
85
|
+
font variant so the time width stays stable, the read tick sits
|
|
86
|
+
flush with the timestamp, and `edited` is its own italic pill
|
|
87
|
+
rather than inline text.
|
|
88
|
+
|
|
89
|
+
### Notes
|
|
90
|
+
|
|
91
|
+
- `expo-image-picker`, `expo-document-picker`, and `expo-haptics`
|
|
92
|
+
remain OPTIONAL peer dependencies. (0.1.4 briefly promoted them
|
|
93
|
+
to required — that caused npm to reorganize the dep tree on
|
|
94
|
+
consumer installs, ended up with two copies of `@poolse/react` in
|
|
95
|
+
Metro's bundle, and broke `PoolseProvider` context resolution.
|
|
96
|
+
0.1.5 reverts that. 0.1.3 and 0.1.4 were both burned slots and
|
|
97
|
+
should not be used.)
|
|
98
|
+
|
|
99
|
+
## [0.1.0] — 2026-06-03
|
|
100
|
+
|
|
101
|
+
First release. Plug-and-play React Native UI for poolse, mirroring
|
|
102
|
+
the `@poolse/react-ui` component surface for native targets.
|
|
103
|
+
|
|
104
|
+
### Added
|
|
105
|
+
|
|
106
|
+
- **Composed surface**: `<ConversationView>` with feature flags
|
|
107
|
+
(`reactions`, `mentions`, `attachments`, `actions`, `threads`,
|
|
108
|
+
`quotations`, `readReceipts`) — same defaults as web.
|
|
109
|
+
- **Message components**: `<MessageBubble>`, `<EditableMessageBubble>`,
|
|
110
|
+
`<MessageRow>`, `<MessageComposer>`, `<MessageActions>`,
|
|
111
|
+
`<MessageList>` (inverted FlatList with stick-to-bottom +
|
|
112
|
+
hold-position).
|
|
113
|
+
- **Realtime feedback**: `<TypingIndicator>` (animated dots).
|
|
114
|
+
- **Conversation + member panels**: `<ConversationList>` (FlatList +
|
|
115
|
+
unread badges), `<MemberList>`.
|
|
116
|
+
- **Rich content**: `<AttachmentPreview>` (image + file card),
|
|
117
|
+
`<UploadQueueStrip>`, `<ReactionStrip>`, `<ReactionPicker>` (modal
|
|
118
|
+
sheet), `<MentionInput>` (autocomplete popover),
|
|
119
|
+
`<AttachmentPicker>` (wraps `expo-image-picker` and
|
|
120
|
+
`expo-document-picker` when present).
|
|
121
|
+
- **Threads**: `<ThreadView>` (modal screen).
|
|
122
|
+
- **User display**: `<UserName>`, `useDisplayName` — both keyed by
|
|
123
|
+
`externalId` to match SDK 2.0.
|
|
124
|
+
- **Brand chrome**: `<PoolseIcon>` (SVG via `react-native-svg`),
|
|
125
|
+
`<PoolseLogo>` (mark/lockup/wordmark/mono), `<Avatar>` (initials
|
|
126
|
+
- URL fallback + stable userColor hashing).
|
|
127
|
+
- **Theme system**: `<PoolseTheme>` provider + `usePoolseTheme()`
|
|
128
|
+
hook. JS theme object with the same token groups as the web
|
|
129
|
+
`--poolse-*` CSS variables (colors, type, radii, shadows,
|
|
130
|
+
spacing). Light + dark defaults ship in.
|
|
131
|
+
- **AppState lifecycle**: `useAppStateLifecycle()` hook — closes
|
|
132
|
+
the SDK WebSocket on background, reopens + refetches the active
|
|
133
|
+
conversation tail on foreground. Designed to pair with
|
|
134
|
+
push-notification delivery on the dev's backend (no in-app
|
|
135
|
+
background socket maintenance).
|
|
136
|
+
|
|
137
|
+
### Notes
|
|
138
|
+
|
|
139
|
+
- Peer dependencies: `react >=18`, `react-native >=0.73`,
|
|
140
|
+
`react-native-svg >=14`. `expo-image-picker` and
|
|
141
|
+
`expo-document-picker` are optional peer deps — `<AttachmentPicker>`
|
|
142
|
+
only requires them if you mount it.
|
|
143
|
+
- Theming via JS object (no CSS variables). Override any token:
|
|
144
|
+
`<PoolseTheme theme={{ colors: { brand: '#ff5733' } }}>`.
|
|
145
|
+
- Shares the same `<PoolseProvider config={...}>` from
|
|
146
|
+
`@poolse/react` — one provider for both web and RN.
|