Skip to content

🐛 Opening paywall built on revenuecat's platform increases RAM usage to 1GB #6018

@rubenspessoa

Description

@rubenspessoa

Describe the bug

I’m seeing a severe performance regression when presenting a paywall built with RevenueCat.
• The paywall takes a noticeable moment to appear (janky / laggy during the transition) and after presentation (toggle behaves specially laggy), and the UI remains sluggish after it’s on screen.
• Memory usage spikes from ~58 MB to 1 GB+ after opening the paywall twice (after first run, it goes up to ~350mb).
• CPU usage also spikes above 150%.
• I ran Instruments (Leaks) and didn’t find any obvious leaks.

I’ve attached a screenshot showing the memory/CPU jump. Any guidance on what might be retaining resources or triggering this load would be appreciated.

Image

Platform

iOS

SDK version

5.54.0

SDK integration method

Swift Package Manager

StoreKit version

StoreKit 2 (default on versions >=5.0.0)

OS version

iOS 26.1

Xcode version

26.2

Device and/or simulator

Device

Environment

Sandbox

How widespread is the issue

100%

Debug logs

hustlrr(916,0x2010de200) malloc: adding guard pages for large allocator blocks
hustlrr(916,0x2010de200) malloc: enabling scribbling to detect mods to free blocks
hustlrr(916) MallocStackLogging: could not tag MSL-related memory as no_footprint, so those pages will be included in process footprint - No such file or directory (2)
hustlrr(916) MallocStackLogging: recording malloc (and VM allocation) stacks using lite mode
DEBUG: ℹ️ Vending CustomerInfo from cache.
DEBUG: ℹ️ Observing StoreKit.PurchaseIntent.intents
[Sentry] [error] [1768058127.531011] [SentryCoreDataTracker:99] managedObjectContext:save:originalImp: saveSpan is nil
Loading Telemetry cache from: file:///var/mobile/Containers/Data/Application/F920542A-741B-4C93-B50B-EF37B611E1A6/Library/Caches/telemetrysignalcache
Loaded 0 signals
DEBUG: ℹ️ applicationWillEnterForeground
DEBUG: ℹ️ CustomerInfo cache is stale, updating from network in foreground.
DEBUG: ℹ️ Offerings cache is stale, updating from network in foreground
VERBOSE: Enqueing network operation 'GetOfferingsOperation' with cache key: 'GetOfferingsOperation $RCAnonymousID:89453b928242473883ef937ad4640504'
DEBUG: ℹ️ GetOfferingsOperation: Started
DEBUG: ℹ️ There are no requests currently running, starting request GET /v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings
VERBOSE: Using etag '42be614b934095e4' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings'. Validation time: 2026-01-10 15:04:39 +0000
DEBUG: ℹ️ API request started: GET '/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings'
VERBOSE: Enqueing network operation 'GetCustomerInfoOperation' with cache key: 'GetCustomerInfoOperation $RCAnonymousID:89453b928242473883ef937ad4640504'
VERBOSE: Creating intermediate key with expiration '2026-01-24 00:00:00 +0000': 57fc5dbd7eca45b3c0048a49cfbe74d11b3ebc8bd44c7b9035405bf8374ea720
VERBOSE: Signature passed verification
VERBOSE: Storing etag '42be614b934095e4' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings' (success)
DEBUG: ℹ️ API request completed: GET '/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings' (304)
Request-ID: 'fea35cce-0682-47ab-8938-36a29b0cbd2a'; Amzn-Trace-ID: 'Root=1-69626d0f-32da83b20cab1f2016ef9f50'
DEBUG: ℹ️ No existing products cached, starting store products request for: ["ag_19.99_1m_3d", "ag_99.99_1y_notrial", "ag_99.99_1y_3d", "ag_899_1w_notrial"]
DEBUG: ℹ️ GetOfferingsOperation: Finished
DEBUG: ℹ️ Serial request done: GET /v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings, 0 requests left in the queue
DEBUG: ℹ️ GetCustomerInfoOperation: Started
DEBUG: ℹ️ There are no requests currently running, starting request GET /v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504
VERBOSE: Using etag '71d0296ccec43194' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504'. Validation time: 2026-01-10 15:04:40 +0000
DEBUG: ℹ️ API request started: GET '/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504'
VERBOSE: Updating all caches
DEBUG: ℹ️ CustomerInfo cache is stale, updating from network in foreground.
DEBUG: ℹ️ Offerings cache is stale, updating from network in foreground
VERBOSE: Enqueing network operation 'GetOfferingsOperation' with cache key: 'GetOfferingsOperation $RCAnonymousID:89453b928242473883ef937ad4640504'
2026-01-10 16:15:34.146 [INFO][AppLifecycle] App delegate didFinishLaunching | Context: launchOptions: [], appVersion: 2.0
DEBUG: ℹ️ Network operation 'GetCustomerInfoOperation' found with the same cache key 'GetCustomerInfoOperation $RCAnonymousID:89453b928242473883ef937ad4640504'. Skipping request.
DEBUG: ℹ️ Network operation 'GetCustomerInfoOperation' found with the same cache key 'GetCustomerInfoOperation $RCAnonymousID:89453b928242473883ef937ad4640504'. Skipping request.
2026-01-10 16:15:34.155 [INFO][AppLifecycle] App launched | Context: appVersion: 2.0, environment: production
VERBOSE: Creating intermediate key with expiration '2026-01-24 00:00:00 +0000': 57fc5dbd7eca45b3c0048a49cfbe74d11b3ebc8bd44c7b9035405bf8374ea720
VERBOSE: Signature passed verification
VERBOSE: Storing etag '71d0296ccec43194' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504' (success)
DEBUG: ℹ️ API request completed: GET '/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504' (304)
Request-ID: '9561a4f7-af49-443f-8a80-1ef674455c9b'; Amzn-Trace-ID: 'Root=1-69626d16-6dfa48bb0a9af580720d2c57'
2026-01-10 16:15:34.237 [INFO][AppLifecycle] Scene phase changed | Context: timestamp: 2026-01-10T15:15:34Z, to: active, from: inactive
VERBOSE: Updating CustomerInfo '$RCAnonymousID:89453b928242473883ef937ad4640504' request date: 2026-01-10 15:15:34 +0000
2026-01-10 16:15:34.242 [INFO][AppLifecycle] App became active from inactive
[Sentry] [error] [1768058134.258174] [SentryCoreDataTracker:99] managedObjectContext:save:originalImp: saveSpan is nil
DEBUG: ℹ️ Sending latest CustomerInfo to delegate.
DEBUG: 😻 CustomerInfo updated from network.
DEBUG: 😻 CustomerInfo updated from network.
DEBUG: 😻 CustomerInfo updated from network.
DEBUG: ℹ️ GetCustomerInfoOperation: Finished
DEBUG: ℹ️ Serial request done: GET /v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504, 0 requests left in the queue
DEBUG: ℹ️ GetOfferingsOperation: Started
DEBUG: ℹ️ There are no requests currently running, starting request GET /v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings
VERBOSE: Using etag '42be614b934095e4' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings'. Validation time: 2026-01-10 15:15:30 +0000
DEBUG: ℹ️ API request started: GET '/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings'
[Sentry] [error] [1768058134.300825] [SentryCoreDataTracker:99] managedObjectContext:save:originalImp: saveSpan is nil
[Sentry] [error] [1768058134.3024259] [SentryCoreDataTracker:99] managedObjectContext:save:originalImp: saveSpan is nil
VERBOSE: Creating intermediate key with expiration '2026-01-24 00:00:00 +0000': 57fc5dbd7eca45b3c0048a49cfbe74d11b3ebc8bd44c7b9035405bf8374ea720
VERBOSE: Signature passed verification
VERBOSE: Storing etag '42be614b934095e4' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings' (success)
DEBUG: ℹ️ API request completed: GET '/v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings' (304)
Request-ID: 'b038ccf7-7a3f-4445-8c05-7a178840978c'; Amzn-Trace-ID: 'Root=1-69626d16-2f565aab5b424cd73aa17f19'
DEBUG: ℹ️ Found an existing request for products: ["ag_99.99_1y_notrial", "ag_19.99_1m_3d", "ag_99.99_1y_3d", "ag_899_1w_notrial"], appending to completion
DEBUG: ℹ️ GetOfferingsOperation: Finished
DEBUG: ℹ️ Serial request done: GET /v1/subscribers/$RCAnonymousID%3A89453b928242473883ef937ad4640504/offerings, 0 requests left in the queue
DEBUG: 😻 Store products request received response
DEBUG: ℹ️ Store products request finished
DEBUG: ℹ️ Package 'monthly_with_trial' in offering 'default' has a custom duration.
You can reference this package by its identifier ('monthly_with_trial') directly.
More information: https://rev.cat/displaying-products
DEBUG: ℹ️ Package 'annual_with_trial' in offering 'default' has a custom duration.
You can reference this package by its identifier ('annual_with_trial') directly.
More information: https://rev.cat/displaying-products
DEBUG: 😻 Offerings updated from network.
DEBUG: ℹ️ Package 'monthly_with_trial' in offering 'default' has a custom duration.
You can reference this package by its identifier ('monthly_with_trial') directly.
More information: https://rev.cat/displaying-products
DEBUG: ℹ️ Package 'annual_with_trial' in offering 'default' has a custom duration.
You can reference this package by its identifier ('annual_with_trial') directly.
More information: https://rev.cat/displaying-products
DEBUG: 😻 Offerings updated from network.
VERBOSE: Warming up paywall images cache: [https://icons.pawwalls.com/icons/x.heic, https://icons.pawwalls.com/icons/filled-circle-check.heic, https://assets.pawwalls.com/1243680_low_res_1767992064_7a38e766.heic, https://assets.pawwalls.com/1243680_low_res_1767992059_948150ec.heic, https://assets.pawwalls.com/1243680_low_res_1767978142_4e11e1e5.heic, https://assets.pawwalls.com/1243680_low_res_1767985414_bb210a6d.heic, https://assets.pawwalls.com/1243680_low_res_1768050932_7e25b0f2.heic, https://assets.pawwalls.com/1243680_low_res_1767992051_00daffde.heic]
VERBOSE: Warming up paywall fonts cache: []
VERBOSE: Warming up paywall fonts cache: []
[Sentry] [error] [1768058135.493284] [SentryCoreDataTracker:99] managedObjectContext:save:originalImp: saveSpan is nil
[Sentry] [error] [1768058135.496305] [SentryCoreDataTracker:99] managedObjectContext:save:originalImp: saveSpan is nil
[Sentry] [error] [1768058135.49929] [SentryCoreDataTracker:99] managedObjectContext:save:originalImp: saveSpan is nil
[Sentry] [error] [1768058135.502338] [SentryCoreDataTracker:99] managedObjectContext:save:originalImp: saveSpan is nil
DEBUG: ℹ️ Background task started: com.revenuecat.flushAllEvents
VERBOSE: Paywall event flushing requested with empty store.
VERBOSE: Ad event flush with empty store
Sending 2 signals leaving a cache of 0 signals
DEBUG: ℹ️ Vending Offerings from memory cache
WARN: Could not find default package for paywall. Using first package instead. This package will not show in the paywall. This could be caused by a package that doesn't have a product on this platform or the product might not be available for this region.
VERBOSE: PurchasesOrchestrator: caching presented paywall
VERBOSE: Storing event: "{\"impression\":{\"_0\":{\"id\":\"BE8C2B11-838E-4F23-A424-26A974BE38CD\",\"date\":\"2026-01-10T15:17:27Z\"},\"_1\":{\"offering_identifier\":\"default\",\"session_identifier\":\"95939573-AA19-4717-854B-C4B3CB48C2AA\",\"paywall_revision\":66,\"display_mode\":\"full_screen\",\"locale_identifier\":\"en_AT\",\"dark_mode\":true}}}"
DEBUG: ℹ️ No existing products cached, starting store products request for: ["ag_99.99_1y_notrial", "ag_19.99_1m_3d", "ag_99.99_1y_3d", "ag_899_1w_notrial"]
DEBUG: 😻 Store products request received response
DEBUG: ℹ️ Store products request finished
DEBUG: ℹ️ Caching trial or intro eligibility for products: ["ag_899_1w_notrial", "ag_99.99_1y_3d", "ag_19.99_1m_3d", "ag_99.99_1y_notrial"]
VERBOSE: PurchasesOrchestrator: clearing presented paywall
VERBOSE: Storing event: "{\"close\":{\"_0\":{\"id\":\"1E063667-1741-4CB6-B15D-1914602D53F1\",\"date\":\"2026-01-10T15:17:58Z\"},\"_1\":{\"dark_mode\":true,\"paywall_revision\":66,\"session_identifier\":\"95939573-AA19-4717-854B-C4B3CB48C2AA\",\"display_mode\":\"full_screen\",\"locale_identifier\":\"en_AT\",\"offering_identifier\":\"default\"}}}"
DEBUG: ℹ️ Vending Offerings from memory cache
WARN: Could not find default package for paywall. Using first package instead. This package will not show in the paywall. This could be caused by a package that doesn't have a product on this platform or the product might not be available for this region.
VERBOSE: PurchasesOrchestrator: caching presented paywall
VERBOSE: Storing event: "{\"impression\":{\"_0\":{\"id\":\"57243C07-416E-4C9F-BE93-147BE1DC3FF2\",\"date\":\"2026-01-10T15:18:01Z\"},\"_1\":{\"paywall_revision\":66,\"offering_identifier\":\"default\",\"session_identifier\":\"E38659BF-2F87-43B7-96A6-1F6CB7BA3177\",\"locale_identifier\":\"en_AT\",\"display_mode\":\"full_screen\",\"dark_mode\":true}}}"
DEBUG: ℹ️ Found cached trial or intro eligibility for products: ["ag_99.99_1y_notrial", "ag_19.99_1m_3d", "ag_899_1w_notrial", "ag_99.99_1y_3d"]

Steps to reproduce

I simply try opening the paywall I've built on my account at the revenuecat platform.

on the first time, it increases the memory usage to ~350mb.
on the second time, it increases the memory usage to 1gb+.

Other information

Additional context

The project is named Hustlrr.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions