diff --git a/content/docs/expo/changelog.mdx b/content/docs/expo/changelog.mdx
index 28a69c67..62e92d5f 100644
--- a/content/docs/expo/changelog.mdx
+++ b/content/docs/expo/changelog.mdx
@@ -5,6 +5,16 @@ description: "Release notes for the Superwall Expo SDK"
# Changelog
+## 1.0.5
+
+### Patch Changes
+
+- 49ef4ff: Add `appstackId` integration attribute to `setIntegrationAttributes()` for Appstack integration support.
+- 49ef4ff: Fix `setUserAttributes` silently failing when JavaScript attribute values are
+ `null` by making the bridge value types nullable on iOS and Android, and update
+ TypeScript signatures to explicitly allow nullable user attribute values.
+- 7c53e77: Update Android, add appstack integration id
+
## 1.0.4
### Patch Changes
diff --git a/content/docs/expo/index.mdx b/content/docs/expo/index.mdx
index dc352f72..06e97329 100644
--- a/content/docs/expo/index.mdx
+++ b/content/docs/expo/index.mdx
@@ -47,4 +47,4 @@ If you have feedback on any of our docs, please leave a rating and message at th
If you have any issues please [open an issue on GitHub](https://github.com/superwall/expo-superwall/issues).
-
+
diff --git a/content/docs/expo/sdk-reference/hooks/useSuperwall.mdx b/content/docs/expo/sdk-reference/hooks/useSuperwall.mdx
index e7fba890..c88ad968 100644
--- a/content/docs/expo/sdk-reference/hooks/useSuperwall.mdx
+++ b/content/docs/expo/sdk-reference/hooks/useSuperwall.mdx
@@ -79,8 +79,8 @@ The hook returns an object representing the Superwall store. If a `selector` fun
description: "Preloads paywalls for the specified placements.",
},
setUserAttributes: {
- type: "(attrs: Record) => Promise",
- description: "Sets custom attributes for the current user.",
+ type: "(attrs: Record) => Promise",
+ description: "Sets custom attributes for the current user. Attribute values can be null.",
},
getUserAttributes: {
type: "() => Promise>",
@@ -92,7 +92,7 @@ The hook returns an object representing the Superwall store. If a `selector` fun
},
setIntegrationAttributes: {
type: "(attributes: IntegrationAttributes) => Promise",
- description: "Sets third-party integration identifiers.",
+ description: "Sets third-party integration identifiers, including `appstackId` for Appstack.",
},
getIntegrationAttributes: {
type: "() => Promise>",
@@ -145,8 +145,8 @@ The hook returns an object representing the Superwall store. If a `selector` fun
description: "Seed used for experiment assignment.",
},
"[key: string]": {
- type: "any",
- description: "Other custom user attributes.",
+ type: "any | null",
+ description: "Other custom user attributes. Values may be null.",
},
}}
/>
diff --git a/content/docs/expo/sdk-reference/hooks/useSuperwallEvents.mdx b/content/docs/expo/sdk-reference/hooks/useSuperwallEvents.mdx
index 77860983..3e15d0da 100644
--- a/content/docs/expo/sdk-reference/hooks/useSuperwallEvents.mdx
+++ b/content/docs/expo/sdk-reference/hooks/useSuperwallEvents.mdx
@@ -42,7 +42,7 @@ The `useSuperwallEvents` hook provides a low-level way to subscribe to _any_ nat
description: "Called when the user's subscription status changes.",
},
onUserAttributesChange: {
- type: "(newAttributes: Record) => void",
+ type: "(newAttributes: Record) => void",
description:
"Called when user attributes change outside your app (for example via the `Set Attribute` paywall action).",
},
diff --git a/content/docs/expo/sdk-reference/hooks/useUser.mdx b/content/docs/expo/sdk-reference/hooks/useUser.mdx
index 9c45a740..dc8987fa 100644
--- a/content/docs/expo/sdk-reference/hooks/useUser.mdx
+++ b/content/docs/expo/sdk-reference/hooks/useUser.mdx
@@ -15,7 +15,7 @@ The `useUser` hook provides a convenient way to manage user identity and attribu
description: "Identifies the user with Superwall.",
},
update: {
- type: "(attributes: Record | ((old: Record) => Record)) => Promise",
+ type: "(attributes: Record | ((old: Record) => Record)) => Promise",
description: "Updates the current user's attributes.",
},
signOut: {
@@ -28,7 +28,7 @@ The `useUser` hook provides a convenient way to manage user identity and attribu
},
setIntegrationAttributes: {
type: "(attributes: IntegrationAttributes) => Promise",
- description: "Sets third-party integration identifiers (Adjust, Amplitude, AppsFlyer, etc.).",
+ description: "Sets third-party integration identifiers (Adjust, Amplitude, AppsFlyer, Appstack, etc.).",
},
getIntegrationAttributes: {
type: "() => Promise>",
@@ -102,8 +102,8 @@ The `useUser` hook provides a convenient way to manage user identity and attribu
description: "Seed used for experiment assignment.",
},
"[key: string]": {
- type: "any",
- description: "Other custom user attributes.",
+ type: "any | null",
+ description: "Other custom user attributes. Values may be null.",
},
}}
/>
diff --git a/content/docs/expo/sdk-reference/index.mdx b/content/docs/expo/sdk-reference/index.mdx
index 78414d89..c21aa964 100644
--- a/content/docs/expo/sdk-reference/index.mdx
+++ b/content/docs/expo/sdk-reference/index.mdx
@@ -15,4 +15,4 @@ If you have feedback on any of our docs, please leave a rating and message at th
If you have any issues with the SDK, please [open an issue on GitHub](https://github.com/superwall/expo-superwall/issues).
-
+