Developer changelog
This page lists SDK releases, API updates, and platform changes that affect Pushwoosh integrations.
November 2026
Anchor link to| Date | Component | Change | Details |
|---|---|---|---|
| Nov 02 | Web Push SDK v3.104.1 | Breaking | PW_SiteOpened sends path in the page’s letter case and page rules match it case-sensitively. Rules and path conditions saved in lowercase no longer match pages with capital letters. Learn more |
October 2026
Anchor link to| Date | Component | Change | Details |
|---|---|---|---|
| Oct 30 | Android SDK v6.17.2 | Breaking | Rich Media no longer substitutes single-brace placeholders like {Name|text|} inside <script>, so scripts relying on them get the raw text. Double-brace ones still work. Learn more |
| Oct 30 | Android SDK v6.17.2 | Fixed | Geozone entry and exit transitions reach the SDK, so geozone push notifications fire. Transitions after stopLocationTracking() are ignored. Learn more |
| Oct 30 | Android SDK v6.17.2 | Fixed | On Android 9 and below, taps outside a modal Rich Media window reach the app. Learn more |
| Oct 30 | Android SDK v6.17.2 | Fixed | registerExistingToken() reports success only after the server accepts the token. A saved token that wasn’t delivered is sent again. Learn more |
| Oct 30 | Customer Journey API | Breaking | With Existing and new users or Only new users, Audience-based entry also rejects segments that nest event-based or static segments when the journey is saved or started. Learn more |
| Oct 30 | Device API | Breaking | Email opens and clicks by mail scanners no longer send PW_EmailOpen or PW_EmailLinkClicked, set Last Email Open or Last Email Click tags, or advance journeys. Learn more |
| Oct 30 | Customer Journey API | Fixed | Reading a journey returns the event name, not the attribute, in dynamic_time.event_name of an event-relative Wait point. Learn more |
| Oct 29 | Statistics API | Breaking | Message statistics leave out email opens and clicks labelled as bots (link scanners) by default. include_bots: true counts them. Learn more |
| Oct 28 | Capacitor SDK v1.0.14 | Breaking | pushReceivedCallback and pushOpenedCallback receive an event object, so TypeScript that reads the first argument as message text no longer compiles (bundles Android SDK 6.17.1, iOS SDK 7.3.0). Learn more |
| Oct 28 | Unity SDK v6.3.0 | Breaking | iOS projects on CocoaPods or EDM4U switch to Swift Package Manager on update, except in the cases listed in Learn more. Xcode then needs github.com access. Learn more |
| Oct 28 | Unity SDK v6.3.0 | Fixed | On iOS, an empty Application Code leaves the SDK uninitialized instead of crashing the app. Learn more |
| Oct 27 | Cordova SDK v8.3.80 | Fixed | Android VoIP call events that arrive before onDeviceReady, during WebView recreation, or with no listener are delivered at the next onDeviceReady (bundles Android SDK 6.17.1, iOS SDK 7.3.0). Learn more |
| Oct 27 | Web Push SDK v3.103.0 | Added | Web campaigns can target visitors by push permission status, and Pushwoosh.getPushPermissionStatus() is public. Learn more |
| Oct 27 | Web Push SDK v3.102.0 | Changed | PW_SiteOpened carries a decoded, lowercased path, so web campaign page rules match case-insensitively, including non-Latin paths. Learn more |
| Oct 27 | iOS SDK v7.3.0 | Deprecated | Pushwoosh.sharedInstance(), initializeWithAppCode, all Pushwoosh instance members, PWInAppManager.shared(), PWInbox, and PWRichMediaManager.shared() are deprecated in favor of Pushwoosh.configure, Pushwoosh.inbox, and Pushwoosh.media.legacyRichMedia. Learn more |
| Oct 27 | iOS SDK v7.3.0 | Fixed | registerForPushNotifications(completion:) reports the server’s actual result instead of an early success, and tags passed with registration survive transient failures. Learn more |
| Oct 27 | iOS SDK v7.3.0 | Breaking | Rich Media no longer substitutes single-brace placeholders like {Name|text|} inside <script>, so scripts relying on them get the raw text. Double-brace ones still work. Learn more |
| Oct 27 | iOS SDK v7.3.0 | Fixed | The SDK no longer unregisters the device when iOS revokes the VoIP token, so regular push notifications keep arriving. Learn more |
| Oct 27 | iOS SDK v7.3.0 | Breaking | PWInboxMessageProtocol has a new required tabId property that custom implementations of the protocol must add. Learn more |
| Oct 23 | Android SDK v6.17.1 | Fixed | The push token rotated by Firebase reaches Pushwoosh, even if the device is offline at that moment. Learn more |
| Oct 23 | Messaging API v2 | Added | Added custom_data_raw: JSON-text custom data that keeps integers above 2^53 exact and can’t be combined with custom_data. REST requests fill it automatically. Learn more |
| Oct 21 | Messaging API v2 | Added | Added sms.rcs (content_sid, content_variables) to send RCS via a Twilio content template, for apps on Twilio with their own credentials and a Messaging Service. Learn more |
| Oct 20 | User-centric API | Breaking | postEvent no longer auto-creates events with names over 128 characters or with control characters and returns an invalid-field error. Existing events keep working. Learn more |
| Oct 19 | .NET SDK v2.1.0 | Added | Pushwoosh.DotNet and Pushwoosh.DotNet.Geozones include .NET 10 builds alongside .NET 8 (bundles Android SDK 6.17.0, iOS SDK 7.2.10). Learn more |
| Oct 19 | .NET SDK v2.1.0 | Breaking | Builds fail with PW0001 below iOS 15.0 and PW0002 on mismatched Pushwoosh.DotNet and Pushwoosh.DotNet.Geozones versions. iOS PWInlineInAppView is obsolete and shows nothing. Learn more |
| Oct 19 | Messaging API v2 | Breaking | Requests are rejected with 400 for Chrome button_urlN without button_textN, and for time_to_live over 2419200 seconds (28 days) on Android, Huawei, Baidu, and Chrome. Learn more |
| Oct 19 | Messaging API v2 | Fixed | iOS sound_enabled: false sends the notification without sound. Learn more |
| Oct 19 | Messaging API v2 | Breaking | Segment (non-transactional) messages fail with SandboxMaxDevices when the app uses the APNs Sandbox gateway and has more than 200 iOS push-enabled subscribers. Learn more |
| Oct 19 | Statistics API | Changed | getTagStats counts any tag per application when applications is passed, otherwise account-wide. Previously application-specific tags required applications and other tags rejected it. Learn more |
| Oct 16 | Messages API v1 | Breaking | createTargetedMessage enforces API token application restrictions: restricted tokens can’t send to other applications, and devices_filter without an application is rejected. Learn more |
| Oct 16 | React Native SDK v7.0.6 | Added | On React Native 0.75+, pushwoosh_spm_post_install in the Podfile installs the iOS SDK via Swift Package Manager (bundles Android SDK 6.17.0, iOS SDK 7.2.10 via Swift Package Manager). Learn more |
| Oct 16 | Web Push SDK v3.100.0 | Changed | New Safari 16+ subscribers register as device_type 11 (not 10) when the app has its own web VAPID keys, as on the unified web platform. Existing Website Push ID subscriptions keep 10, also on the unified web platform. Learn more |
| Oct 16 | Web Push SDK v3.99.0 | Added | Web campaign forms submit all their values to Pushwoosh in one request, attributed to the campaign that shows the form. Learn more |
| Oct 15 | Android SDK v6.17.0 | Added | Added up to three push action buttons through the pw_buttons payload field, with the tapped one returned by PushMessage.getTappedButtonId(). Learn more |
| Oct 15 | Android SDK v6.17.0 | Added | The SDK reports the device’s push permission status to Pushwoosh on registration and app open. Learn more |
| Oct 15 | Android SDK v6.17.0 | Deprecated | Action and PushMessage.getActions() (pw_actions) are deprecated in favor of pw_buttons and PushMessage.getButtons(). Learn more |
| Oct 15 | Android SDK v6.17.0 | Breaking | InboxMessage has a new abstract getTabId() method that custom implementations must add. Learn more |
| Oct 15 | Messaging API v2 | Added | Added geo_zone (lat, lng, range in meters) to target segment messages at devices last located inside that circle. Learn more |
| Oct 15 | Messaging API v2 | Changed | With follow_user_timezone: true, a past at is no longer moved to now. Later timezones get the message then, the rest follow past_timezones_behaviour. Learn more |
| Oct 15 | Messaging API v2 | Added | Added a per-platform silent flag for iOS, Android, Huawei, and Baidu content. Learn more |
| Oct 15 | iOS SDK v7.2.10 | Added | Added feature flags via Pushwoosh.configure.featureFlags (local cache, refresh(completion:), addUpdateListener(_:), logImpression(_:)). In beta. Learn more |
| Oct 15 | iOS SDK v7.2.10 | Added | The SDK reports push permission status (granted_explicit, provisional, ephemeral, denied, not_determined), also returned by getRemoteNotificationStatus() as push_permission_status. Learn more |
| Oct 15 | iOS SDK v7.2.10 | Fixed | startLiveActivityWithToken:activityId:completion: fails with an error on a missing or empty token instead of sending it. Learn more |
| Oct 13 | Messages API v1 | Fixed | createMessage with best time to send and timezone computes send dates in the requested timezone. Learn more |
| Oct 13 | Web Push SDK v3.97.0 | Added | Inline web campaigns render inside the first page element that matches their CSS selector instead of over the page. Learn more |
| Oct 12 | Event Streaming | Changed | An HTTP endpoint that fails every delivery for 24 hours gets its integration paused and undelivered events dropped, and the account owner is emailed. Learn more |
| Oct 12 | Messaging API v2 | Added | Added inbox.expires_in, a lifetime such as "604800s" from the send date, overridden by expiration_date when both are set. Learn more |
| Oct 11 | Messaging API v2 | Added | Added the Viber carousel of 2–5 cards, which requires body and can’t be combined with an image, button, or template. Learn more |
| Oct 11 | Web Push SDK v3.96.0 | Added | Added onsite product recommendations: trackProductView(), recommendations.fetch(), recommendations.trackClick(), and the [data-pw-recommendations] widget, once on-site recommendations are turned on in the Control Panel. Learn more |
| Oct 11 | Web Push SDK v3.95.0 | Added | applicationOpen and registerDevice send push_permission_status (not_determined, granted_explicit, denied, unsupported), and a refused permission is registered without a push token. Learn more |
| Oct 10 | Device API | Added | registerDevice and applicationOpen accept push_permission_status, stored in the Push Permission Status system tag. Learn more |
| Oct 09 | Android SDK v6.16.0 | Added | Added feature flags via Pushwoosh.getInstance().getFeatureFlags() (local cache, isEnabled(), refresh(), addUpdateListener(), logImpression()). In beta. Learn more |
| Oct 09 | Android SDK v6.16.0 | Added | Added PushwooshFcmRouterService in pushwoosh-firebase for apps with their own FCM handling: Pushwoosh messages and tokens go to the SDK, others to onAppMessageReceived(). Learn more |
| Oct 09 | Capacitor SDK v1.0.13 | Added | Added the Message Inbox API (loadMessages(), readMessage(), deleteMessage(), performAction(), counters) and typed InboxStyle for presentInboxUI() (bundles Android SDK 6.16.0, iOS SDK 7.2.9). Learn more |
| Oct 09 | Capacitor SDK v1.0.13 | Breaking | getTags() is typed as the flat tags object it always returned, so TypeScript code that destructures { tags } no longer compiles. Learn more |
| Oct 09 | Cordova SDK v8.3.79 | Fixed | Fixed an isRegisteredForPushNotifications compile error that broke Android builds of the plugin (bundles Android SDK 6.16.0, iOS SDK 7.2.9). Learn more |
| Oct 09 | Messaging API v2 | Added | Added schedule.best_time_to_send for segment messages, up to 30 days ahead. Learn more |
| Oct 09 | Messaging API v2 | Changed | Messages can be scheduled up to 30 days ahead, up from 14. Learn more |
| Oct 09 | Messaging API v2 | Breaking | A transactional message to users who have devices, but none on its channel, returns OK without sending instead of NoRecipientsFound, matching the v1 Messages API. Learn more |
| Oct 09 | Web Push SDK v3.94.1 | Added | Added feature flags via Pushwoosh.featureFlags (typed getters, isEnabled(), refresh(), update listeners, logImpression()), with no requests on sites not using them. In beta. Learn more |
| Oct 08 | Web Push SDK v3.93.1 | Fixed | An App Inbox message linked to a web popup shows that popup on tap. Learn more |
| Oct 08 | iOS SDK v7.2.9 | Fixed | A visible push with content-available arriving in the background counts as opened only when tapped and as received exactly once. Learn more |
| Oct 07 | Messaging API v2 | Fixed | A push with empty platforms goes to push platforms (silent-capable ones for silent pushes), not every enabled platform. Learn more |
| Oct 07 | Tags API | Breaking | Tags named PW_FF_* (any case) are reserved for feature flags: setTags, registerDevice, and bulk updates drop their values, and getTags omits them. Learn more |
| Oct 06 | React Native SDK v7.0.5 | Fixed | On iOS, every Linking.getInitialURL() call in a JS runtime returns the launching push’s link, even if another library reads it first. Learn more |
| Oct 06 | Web Push SDK v3.93.0 | Changed | With Web SDK settings managed in the Control Panel, webPopups.enable comes from the panel. On npm, enable: false also stops widgets created in code. Learn more |
| Oct 06 | Web Push SDK v3.92.0 | Changed | With Web SDK settings managed in the Control Panel, panel inboxWidget values override the snippet. Keys the panel doesn’t set, such as triggerId, keep snippet values. Learn more |
| Oct 05 | Capacitor SDK v1.0.12 | Breaking | The minimum iOS version rises to 15.0 for both CocoaPods and Swift Package Manager installs (bundles Android SDK 6.15.1, iOS SDK 7.2.8). Learn more |
| Oct 05 | Customer Journey API | Breaking | Journeys created from November 5, 2026 won’t launch while a push, SMS, Viber, WhatsApp, in-app, smart content, or inbox step after an event or API entry lacks message_type. API-created journeys only get a warning until December 5. Learn more |
| Oct 05 | Customer Journey API | Fixed | The v3 start, pause, finish, draft, and archive endpoints return 400 with the validation findings instead of 500. Learn more |
| Oct 02 | Event Streaming | Breaking | Webhook deliveries are sent in batches of up to 100 events or 768 KiB, and only a 2xx response counts as delivered. Learn more |
| Oct 02 | Flutter SDK v2.3.25 | Breaking | The minimum iOS deployment target rises to 15.0 for pushwoosh_flutter, pushwoosh_inbox, and pushwoosh_geozones (bundles Android SDK 6.15.1, iOS SDK 7.2.8). Learn more |
| Oct 02 | Flutter SDK v2.3.25 | Added | The iOS plugins also ship as Swift packages, which Flutter 3.44+ uses by default. Learn more |
| Oct 02 | Flutter SDK v2.3.25 | Fixed | On Android, addToApplicationIconBadgeNumber adds to the current badge number instead of replacing it. Learn more |
| Oct 02 | Messaging API v2 | Added | schedule.past_timezones_behaviour supports PAST_TIMEZONES_BEHAVIOUR_DO_NOT_SEND and PAST_TIMEZONES_BEHAVIOUR_NEXT_DAY. Learn more |
| Oct 02 | React Native SDK v7.0.4 | Fixed | On iOS, Linking.getInitialURL() returns the launching push’s Universal Link on cold start, even if link verification is slow (bundles Android SDK 6.15.1). Learn more |
| Oct 02 | Statistics API | Breaking | messages:list without date_range returns only the last 31 days (UTC) for message_type ALL (default) or TRANSACTIONAL, unless messages_ids or messages_codes is set. Learn more |
| Oct 01 | Android SDK v6.15.1 | Breaking | pushwoosh-inbox-ui marks messages read on display instead of on tap by default, and PushwooshInboxStyle.automaticReadOnDisplay = false keeps tap-only. Learn more |
| Oct 01 | Messaging API v2 | Breaking | An unknown enum value in a REST request body returns 400 naming the field instead of falling back to the default value. Learn more |
September 2026
Anchor link to| Date | Component | Change | Details |
|---|---|---|---|
| Sep 30 | iOS SDK v7.2.8 | Fixed | Fixed a crash on launch in apps where another SDK wraps the app delegate (for example Firebase with FirebaseAppDelegateProxyEnabled). Learn more |
| Sep 29 | Web Push SDK v3.91.1 | Breaking | Inbox widget config texts (title, emptyInboxTitle, emptyInboxText) are now rendered as text instead of being injected as HTML. Pages using markup in them need to adjust. Learn more |
| Sep 29 | Web Push SDK v3.90.0 | Breaking | subscriptionWidget now replaces enable with prompt.enabled and launcher.enabled (each switched on independently), and launcher.size with launcher.width/launcher.height. A snippet still passing enable falls back to the older subscribe widgets. Learn more |
| Sep 29 | Web Push SDK v3.89.1 | Added | Added the Subscription widget (subscriptionWidget init parameter or Control Panel): a prompt plus a launcher bell, replacing the push subscription button, custom subscription popup, and Subscription Prompt in one component so visitors never see two competing asks. Learn more |
| Sep 25 | iOS SDK v7.2.7 | Added | Added Pushwoosh.media.setRichMediaColorScheme(_:) and the Pushwoosh_RICH_MEDIA_COLOR_SCHEME Info.plist key, so Rich Media built with prefers-color-scheme follows the app or system theme. Native in-app messages now support a dark appearance. Learn more |
| Sep 25 | iOS SDK v7.2.7 | Added | Added PWInbox.reportActionForMessageWithCode(_:) to report an inbox message as opened without running its action. Learn more |
| Sep 25 | iOS SDK v7.2.7 | Changed | The SDK now fetches the APNs device token itself when the app doesn’t pass it to handlePushRegistration(_:), so devices register without that call. Turned off with Pushwoosh_AUTO_DEVICE_TOKEN_REGISTRATION = NO. Learn more |
| Sep 24 | Android SDK v6.15.0 | Added | Added PushwooshInbox.markMessageOpened() to report an inbox message as opened without running its action. Learn more |
| Sep 22 | Web Push SDK v3.86.0 | Changed | On a panel-managed application, a value saved in the Control Panel now overrides the same parameter in the site’s init snippet. Learn more |
| Sep 21 | Web Push SDK v3.85.0 | Added | Added panel-managed mode: Web SDK settings (autoSubscribe, defaultNotificationTitle, defaultNotificationImage, safariWebsitePushID, subscribeWidget) can now be managed from the Control Panel instead of the init snippet. Learn more |
| Sep 21 | Web Push SDK v3.85.0 | Fixed | Fixed an unnecessary /unregisterDevice request on the first visit of a visitor who has never subscribed. Learn more |
| Sep 17 | Android SDK v6.14.0 | Added | Live Update notifications now open the app and follow deep links on tap like regular pushes, with opens counted in statistics. Added PushwooshLiveUpdates.getLiveUpdateActivityId() to tell them apart from regular pushes. Learn more |
| Sep 16 | Web Push SDK v3.82.0 | Added | App Inbox messages can now open a web popup instead of a link. The popup code arrives in action_params.wp and is exposed as IInboxMessagePublic.webPopupCode. Learn more |
| Sep 15 | Web Push SDK v3.81.0 | Added | A subscribe-action button inside a web popup now requests the push permission and reports the resulting granted/denied/default status back to the popup. Learn more |
| Sep 14 | Web Push SDK v3.78.0 | Added | Widget styling (--pw-inbox-* on the App Inbox widget, --pw-popup-* on web popups) now uses real CSS custom properties on the widget root, a supported public API that a page can override from its own CSS. Learn more |
| Sep 12 | Web Push SDK v3.75.0 | Added | The App Inbox widget now renders the same four cell layouts as the Control Panel campaign preview (classic, banner, captioned, carousel), so web inbox messages look as designed. Learn more |
| Sep 12 | Web Push SDK v3.75.0 | Breaking | sendDate on a public inbox message is now a UTC instant instead of local wall-clock time labeled Z. Inbox message content is now HTML-escaped, and IInboxMessagePublic gains required fields layout, iconUrl, heroUrl, carousel, and customData. Learn more |
| Sep 11 | Android SDK v6.13.0 | Added | Added RichMediaManager.setRichMediaColorScheme() and the com.pushwoosh.rich_media_color_scheme manifest key, so Rich Media built with prefers-color-scheme follows the app or system theme. Native in-app messages now support a dark appearance. Learn more |
| Sep 11 | Android SDK v6.13.0 | Fixed | A deep link from an opened notification now reaches the activity that is already running instead of a new copy of it. Learn more |
| Sep 09 | iOS SDK v7.2.6 | Changed | postEvent(_:withAttributes:completion:) now calls its completion once the server accepts the event, instead of waiting for the account’s in-app resources to finish downloading. Learn more |
| Sep 08 | Flutter SDK v2.3.24 | Added | The push payload on iOS now carries the foreground and onStart keys, as it already did on Android. Learn more |
| Sep 08 | Flutter SDK v2.3.24 | Fixed | Pushwoosh.initialize() now throws ArgumentError for a non-string app_id instead of crashing the app. Learn more |
| Sep 04 | Android SDK v6.12.0 | Added | Added rich message cards to pushwoosh-inbox-ui (banner, captioned, classic, carousel, video), selected by the message’s displayType, plus PushwooshInboxUi.onButtonClickListener for inline button taps. Learn more |
| Sep 02 | Web Push SDK v3.73.0 | Added | Added the pushNotifications init parameter (default true) and isPushAvailable(). Push notifications are no longer a precondition for initialize() to complete, so popups, inbox, events, and tags work even with push turned off. Learn more |
| Sep 02 | Web Push SDK v3.73.0 | Breaking | TypeScript consumers of the npm package see Pushwoosh.driver typed as IPushService | undefined. Code with strictNullChecks reading pushwoosh.driver.* directly needs a guard, preferably isPushAvailable(). Runtime behavior is unchanged. Learn more |
August 2026
Anchor link to| Date | Component | Change | Details |
|---|---|---|---|
| Aug 31 | Web Push SDK v3.70.0 | Added | Added webPopups.colorScheme ('auto', 'light', or 'dark') to pick the palette a popup with dark mode configured renders in. Learn more |
| Aug 31 | Web Push SDK v3.70.0 | Added | Web popup Topic picker and Rating blocks now write through the SDK: picks append to the bound device tag, and ratings post as a custom event. Learn more |
| Aug 31 | Web Push SDK v3.70.0 | Changed | A web popup with an expired Countdown block is no longer shown, even when triggered manually via show(). Learn more |
| Aug 27 | iOS SDK v7.2.5 | Changed | Push links now open in-app only for domains listed in the app’s Associated Domains. All other links open in the browser. Learn more |
| Aug 27 | iOS SDK v7.2.5 | Added | PushwooshInboxKit cards now show the push attachment as the card image. Learn more |
| Aug 27 | iOS SDK v7.2.5 | Fixed | Fixed push links, external links, and in-app buttons that opened the wrong destination or nothing at all. Learn more |
| Aug 24 | Customer Journey API | Breaking | The send_email point’s email_type field now accepts only an empty string, marketing, or transactional (lowercase), validated when the journey is validated or started. Learn more |
| Aug 21 | Android SDK v6.11.0 | Added | Added a video in-app template to pushwoosh-inapp-ui. It shows a full-screen autoplay video with an overlaid title, message, and action button, plus mute and close controls. Learn more |
| Aug 21 | Android SDK v6.11.0 | Added | Added Pushwoosh.getBaseUrl() to return the Pushwoosh API endpoint the SDK currently sends requests to. Learn more |
| Aug 21 | Android SDK v6.11.0 | Changed | Push transport on Huawei/Honor HMS-only devices is now auto-detected in Cordova and React Native, matching native apps. With the full HMS setup in place, HMS Push Kit is used out of the box. Learn more |
| Aug 21 | Android SDK v6.11.0 | Deprecated | Pushwoosh.enableHuaweiPushNotifications() is deprecated and has no effect. Push transport is now auto-detected. Learn more |
| Aug 19 | Messaging API v2 | Added | Added use_latest_user_device to NotifySegment. When set, delivery goes only to each matched user’s most recently active device, not every device tied to that user ID. Learn more |
| Aug 14 | iOS SDK v7.2.4 | Fixed | Fixed native in-app messages flickering, disappearing, or getting stuck on screen when the app called the SDK from an in-app delegate callback. Learn more |
| Aug 14 | iOS SDK v7.2.4 | Fixed | Fixed a native in-app message not showing when its button link contained a space or non-Latin characters. Learn more |
| Aug 14 | iOS SDK v7.2.4 | Fixed | Fixed personalization placeholders in native in-app messages falling back to default text instead of the device’s tag values. Learn more |
| Aug 13 | Messaging API v2 | Added | Added mode and timezone to FrequencyCapping. The new calendar-day mode anchors the count-and-days window to local midnight in the given IANA timezone, instead of a rolling window from send time. Learn more |
| Aug 12 | React Native SDK v6.1.59 | Added | Added setEmails() and setUserEmails() to register a user’s email address(es) for the email channel, matching push and email deliveries to the same user. Learn more |
| Aug 11 | Flutter SDK v2.3.23 | Added | Added setAppCode()/getAppCode() for switching the Pushwoosh application, and optionally its API endpoint, at runtime; an optional base_url parameter in initialize(); and presentInApp() to render a native in-app message from a config object. Learn more |
| Aug 10 | iOS SDK v7.2.3 | Fixed | Fixed an issue that could prevent Rich Media from being displayed. Learn more |
| Aug 10 | iOS SDK v7.2.3 | Changed | Improved the accuracy of the startup integration check for apps that configure the SDK at runtime. Learn more |
| Aug 07 | iOS SDK v7.2.2 | Added | Native in-app messages now support dynamic content: personalization placeholders in campaign text are filled with the device’s tag values, the same as Rich Media. Learn more |
| Aug 07 | iOS SDK v7.2.2 | Fixed | Fixed a crash that could occur when the foreground push delegate was read, and a Rich Media rendering issue when campaign context or custom push data carried values that aren’t valid JSON. Learn more |
| Aug 07 | iOS SDK v7.2.2 | Changed | Hardened the SDK against malformed server and push payloads, improving the stability of Inbox actions, push handling, and registration. Learn more |
| Aug 07 | Android SDK v6.10.2 | Added | Native in-app messages now support dynamic content: personalization placeholders in campaign text are filled with the device’s tag values, the same as Rich Media. Learn more |
| Aug 06 | Messaging API v2 | Added | Added subject, file_urls, and message_at to the SMS payload block. subject and file_urls turn the message into an MMS on providers with an MMS endpoint; other providers ignore both and deliver the plain-text body. Learn more |
| Aug 03 | Android SDK v6.10.1 | Added | Added banner (compact bar with optional auto-dismiss), carousel (swipeable card deck), and sheet (bottom-pinned card with swipe-down dismissal) in-app templates to pushwoosh-inapp-ui. Learn more |
July 2026
Anchor link to| Date | Component | Change | Details |
|---|---|---|---|
| Jul 31 | iOS SDK v7.2.1 | Added | PushwooshInApp supports sheet (bottom card), carousel (swipeable slides), and banner (compact toast) in-app templates, in addition to modal, fullscreen, and stories. Learn more |
| Jul 31 | Statistics API | Changed | messages:list now errors when page × per_page exceeds 100,000. Narrow the date range or use smaller pages. Learn more |
| Jul 29 | Messaging API v2 | Fixed | Notify no longer drops deeplink URLs that contain Liquid personalization ({{ }} / {% %}). Learn more |
| Jul 28 | Messaging API v2 | Changed | Setting days: 0 and count: 0 together now disables frequency capping entirely, instead of returning an error. This makes it easier to turn off capping without extra logic on your end. Sending only one of days or count is still rejected. Learn more |
| Jul 27 | Web Push SDK v3.63.0 | Added | Web popups can now be controlled entirely from your own code, with a new API to show, hide, and check popup state, plus events to react to visibility changes in real time. Learn more |
| Jul 24 | iOS SDK v7.2.0 | Added | In-app messages can now render natively on device. Added PushwooshInApp, supporting modal, fullscreen, and stories templates via the Pushwoosh.inApp API. Learn more |
| Jul 24 | Android SDK v6.10.0 | Added | In-app messages can now render natively on device. Added pushwoosh-inapp-ui, supporting modal, fullscreen, and stories templates via the PushwooshInAppUi API. Learn more |
| Jul 24 | Android SDK v6.10.0 | Fixed | Fixed an issue that could prevent some in-app messages from being displayed. Learn more |
| Jul 23 | Tags API | Breaking | Tags are no longer split into application-specific and account-wide. listTags returns isApplicationSpecific: true for every tag, and addTag ignores application_specific. Learn more |
| Jul 21 | User-centric API | Added | postEvent now supports PW_Conversion for revenue tracking. Learn more |
| Jul 15 | iOS SDK v7.1.5 | Fixed | Fixed an issue with custom VoIP ringtone configuration, and made the SDK more resilient to malformed push payloads, tags, inbox data, and rich media content. Learn more |
| Jul 15 | iOS SDK v7.1.5 | Changed | Live Activity push tokens are now re-registered after an app relaunch, and duplicate token updates are skipped, for more reliable remote updates. Learn more |
| Jul 14 | Liquid Templates | Added | The connected_content tag can now send request headers, so you can pass an authorization token when pulling dynamic content from a URL. Learn more |
| Jul 09 | Android SDK v6.9.6 | Changed | Made the SDK more resilient to rare issues in in-app messages, Rich Media, and notification handling. Geolocation, geofencing, and Firebase push registration are also more reliable now on devices with an outdated or missing Google Play services library, along with tag updates and local notification storage handling. Learn more |
| Jul 03 | Android SDK v6.9.5 | Changed | Modal Rich Media animation duration can now be configured remotely via the in-app’s style settings, no app update required. Notifications, in-app messages, and Rich Media also got a stability pass this release. Learn more |
| Jul 03 | iOS SDK v7.1.4 | Added | Live Activities can now be scheduled to start at a future date and cancelled by activityId. Modal Rich Media now supports fade and no-animation transitions, with a configurable animation duration. Learn more |
| Jul 03 | iOS SDK v7.1.4 | Fixed | Fixed the modal Rich Media auto-close timer, which previously only worked on the first presentation, along with a resource cleanup issue after a modal Rich Media was dismissed. Learn more |
| Jul 01 | Messaging API v2 | Added | Notify now supports Viber as a channel via the viber payload block. Learn more |
June 2026
Anchor link to| Date | Component | Change | Details |
|---|---|---|---|
| Jun 26 | Messaging API v2 | Added | Send Android Live Updates by adding a live_update object (OPERATION_START/OPERATION_UPDATE/OPERATION_END, shared live_update.id) to the android block of a transactional Notify. Learn more |
| Jun 25 | iOS SDK v7.1.3 | Added | Added handleWillPresentNotification() and handleNotificationResponse() for apps that own the UNUserNotificationCenter delegate, plus a startup integration checker that prints config diagnostics. Learn more |
| Jun 25 | Android SDK v6.9.4 | Changed | Modal in-app messages can now be presented without a transition animation. Learn more |
| Jun 24 | Messaging API v2 | Added | Notify can now build SMS from a saved preset: set payload-level sms_preset instead of inlining sms.body per locale (an inline sms.body still overrides the preset for that locale). Learn more |
| Jun 24 | Android SDK v6.9.3 | Fixed | Fixed modal Rich Media crashes on background transitions and when opening external links. Core and WebKit now ship as transitive dependencies. Supersedes the withdrawn 6.9.2. Learn more |
| Jun 19 | Google Wallet API | Added | Issue and update Google Wallet passes from your backend. Changes sync to every device that saved the pass. Learn more |
| Jun 18 | iOS SDK v7.1.2 | Added | PushwooshInboxKit now supports rich card types (carousel, video, and Apple Wallet) selected per message via displayType, with delegate callbacks for wallet-pass actions. Learn more |
| Jun 18 | Customer Journey API | Added | New REST/JSON Customer Journey API to create, update, and manage journeys, trigger API entries, and read journey statistics (base https://journey.pushwoosh.com). Learn more |
| Jun 16 | Android SDK v6.9.1 | Added | Added getSubscriptionAccountId() for Google Play Billing subscription attribution. Firebase Messaging now ships as a transitive dependency. Live Updates progress bar can be hidden for status-only updates. Learn more |
| Jun 16 | Web Push SDK v3.59.0 | Added | Embed web popups from code: export WebPopupsWidget from the SDK package. Learn more |
| Jun 15 | Messaging API v2 | Added | Added the Cancel method (POST /messaging/v2/cancel) to cancel a pending, waiting, or processing message by message_code. Learn more |
| Jun 15 | iOS SDK v7.1.1 | Added | Added Pushwoosh.configure.pushPrimer, a customizable soft opt-in dialog shown before the iOS system permission prompt. Learn more |
| Jun 15 | iOS SDK v7.1.0 | Added | Added PushwooshNotificationServiceExtension, a drop-in base class for Notification Service Extensions. Learn more |
| Jun 15 | iOS SDK v7.1.0 | Deprecated | PWNotificationExtensionManager is deprecated in favor of subclassing PushwooshNotificationServiceExtension. Learn more |
| Jun 11 | Messaging API v2 | Added | Added use_latest_user_device to NotifyTransactional: when targeting users, deliver only to each user’s most recently active device. Learn more |
| Jun 11 | Customer Journey Statistics API | Added | GET /api/journey/{id}/statistics/external now returns in-app journey elements in points, with pointStat metrics shows, interactions, and skipped. Previously in-app-only journeys returned points: []. Learn more |
| Jun 08 | iOS SDK v7.0.46 | Added | Added the PushwooshNotificationUI module: a drop-in full-screen “stories” experience for expanded push notifications, rendered by subclassing PushwooshStoriesViewController in a Notification Content Extension. Learn more |
| Jun 08 | iOS SDK v7.0.46 | Fixed | Fixed App Store upload rejections (error 409), a notification service extension hang with App Groups, and a crash on malformed badge values. Learn more |
| Jun 02 | Android SDK v6.9.0 | Added | Added the pushwoosh-liveupdates module for ongoing, progress-style notifications on Android 16 (API 36+), for use cases like orders, rides, and deliveries. Learn more |
| Jun 02 | Apple Wallet PassKit API | Added | Added Apple Wallet passes as a channel, with a PassKit API to issue and update passes. Updates sync to every device that added the pass. Learn more |
| Jun 01 | Tags API | Added | Added email system tags for email segmentation: Last Email Open Message Code, Last Email Click Message Code, Last Email Confirm, Bounced Email, and Unsubscribed Emails. Learn more |
May 2026
Anchor link to| Date | Component | Change | Details |
|---|---|---|---|
| May 26 | Messaging API v2 | Added | Notify now supports SMS as a first-class channel. Learn more |
| May 22 | Web Push SDK v3.57.0 | Added | Added api.setLanguage(...) to override device locale. It takes priority over initParams and navigator.language. Learn more |
| May 22 | Web Push SDK v3.57.0 | Added | Added support for the webPopups widget option in the SDK init params. Learn more |
| May 22 | SMTP gateway | Added | Added SMTP submission endpoint smtp.pushwoosh.com:587 (STARTTLS + AUTH PLAIN). Messages are forwarded to Messaging API v2 as transactional email. Learn more |
| May 21 | Android SDK v6.8.1 | Changed | Improved session, idle, and exit-intent tracking accuracy. setLogLevel() now keeps the previous level and logs an error instead of throwing on an unrecognized value. Learn more |
| May 18 | iOS SDK v7.0.43 | Removed | Legacy PushwooshInboxUI was removed from build and release pipelines. Migrate to PushwooshInboxKit. Learn more |
| May 18 | iOS SDK v7.0.43 | Breaking | Application codes containing . are now explicitly rejected. This format has long been deprecated. Contact Pushwoosh Support if you still use one. Learn more |
| May 18 | iOS SDK v7.0.43 | Fixed | InboxKit refresh now runs only on real background transitions to prevent extra POST requests |
| May 14 | Android SDK v6.8.0 | Added | Added setAdvertisingId() for passing GAID to Pushwoosh for Meta Ads MADID matching. Requires user consent and manual integration in your app. Learn more |
| May 13 | iOS SDK v7.0.41 | Added | Added setAdvertisingId() for passing IDFA to Pushwoosh for Meta Ads MADID matching. Requires ATT consent and manual integration in your app. Learn more |
| May 07 | iOS SDK v7.0.40 | Added | Added PushwooshInboxKit with banner, captioned, and classic card layouts, inline CTA buttons, and swipe-to-delete. Learn more |