---
title: Troubleshooting - Flutter (classic)
description: Need help? We share probable causes and recommended fixes
lastUpdated: 14 April 2026
source_url:
  html: https://docs.contentsquare.com/en/flutter/troubleshooting/
  md: https://docs.contentsquare.com/en/flutter/troubleshooting/index.md
---

> Documentation index: https://docs.contentsquare.com/llms.txt
> Use this file to discover all available pages before exploring further.

The latest CSQ SDK is here! Learn how to [upgrade your app](https://docs.contentsquare.com/en/csq-sdk-flutter/experience-analytics/upgrade-from-cs-sdk/).

When the SDK is not sending data as expected, use this page to identify probable causes and apply recommended fixes.

Start by upgrading

To narrow down the root cause and eliminate potential issues, upgrade to the [latest version of the SDK](https://docs.contentsquare.com/en/flutter/). If your issue persists after the upgrade and using this section, contact us.

## Sessions are not tracked

For sessions to be tracked:

* [A first screenview has to be sent](../track-screens/)
* [The current user has to opt-in to have their actions tracked](../privacy/#handling-user-consent)

## SDK is not working on my hybrid app

Contentsquare SDK [is not compatible](https://docs.contentsquare.com/en/flutter/compatibility/#compatibility-matrix) with hybrid applications.

## Cannot see in-app features on iOS

In-app features requires a [specific configuration](https://docs.contentsquare.com/en/flutter/in-app-features/#implement-in-app-features-ios-only) on iOS.

## I lost some zoning data after changing my widget tree

Contentsquare SDK uses zoning identifier that relies heavily on the structure of the widget tree. Changes to the widget tree such as moving, nesting, or removing a widget may result in the loss of tracking data.

The Contentsquare Flutter SDK provides the [`ReliableTarget` widget](https://docs.contentsquare.com/en/flutter/reliable-targets/), designed to encapsulate the widget intended for reliable tracking.

## Transactions are sent multiple times

A common mistake is to trigger the sending when the confirmation screen is displayed. This leads to triggering the transaction each time the user puts the app in background and then in foreground on the confirmation screen.

## Cannot see images and texts are incomprehensible in Session Replay

By default, `Contentsquare` masks all types of content (texts, text fields, and images) except the SVG images and CustomPaints during Session Replays. It achieves this by providing a default `MaskingConfig` object if none is specified. The default configuration masks everything, ensuring that sensitive information is protected. However, you can override the default masking behavior by providing your own `MaskingConfig` object when starting the SDK via the `start` method. This allows you to customize the masking rules for your app according to your requirements. This allows you to customize the masking rules for your app according to your requirements. See [MaskingConfig](https://docs.contentsquare.com/en/flutter/session-replay/#how-to-use-maskingconfig) for more information.

## Masking / Unmasking Session Replay using in-app features settings is not reflected in the player

The masking / unmasking of Session Replay through the in-app features settings is not yet supported by the Flutter SDK.

This setting is intended for debugging purposes only. See [MaskingConfig](https://docs.contentsquare.com/en/flutter/session-replay/#how-to-use-maskingconfig) for more information.

## Session Replay is enabled but I see nothing when connecting to the URL

Put your app in background to trigger the sending of the session to the server. Session Replay is not instantaneous and takes from 5 minutes to 30 minutes to be available.

For Session Replay to work, sessions must be tracked:

* [A first screenview has to be sent](../track-screens/)
* [The current user has to opt-in to have their actions tracked](../privacy/#handling-user-consent)

## My replays not an exact rendering of my app

There is no collection of the user's screen, but rather a reconstruction interactions based on the data collected by the SDK. The rendering may not be pixel-perfect, but it should give you a good idea of how users interact with your app. There are some [known limitations](https://docs.contentsquare.com/en/flutter/session-replay/#known-limitations) to the Session Replay feature.

If you notice a limitation that is not referenced in our documentation, contact us.

## Session Replay requests are not sent from an Android emulator / iOS simulator

If you struggle to watch a replay collected on an emulator/simulator, it may be due to some network constraints applied on your computer (VPN, company network restrictions, etc.). Check your configuration and/or use a real device.

For more information about our endpoints and requests, see:

* [Android - Requests are failing](https://docs.contentsquare.com/en/android/troubleshooting/#requests-are-failing)
* [iOS - Requests are failing](https://docs.contentsquare.com/en/ios/troubleshooting/#requests-are-failing)

## Replays are extremely long

It is important to remember that **an app kill does not end a session**. See [Session definition](https://docs.contentsquare.com/en/ios/how-the-sdk-works/#session-definition) for more information.

If you leave the simulator/emulator running with the app in foreground, the session will not end, even if you are inactive. To better reflect actual end user behavior and avoid unusually long sessions (last hours), put the app in background or kill it.

## I use an HttpOverrides.global does not work

During the initialization, the Contentsquare SDK overrides the `HttpOverrides.global` property.

If you have to override `HttpOverrides.global` in your app - [use a custom HttpOverrides](https://docs.contentsquare.com/en/flutter/error-analysis/#use-a-custom-httpoverrides).

## SwiftContentsquarePlugin was registered twice

There is a known issue with the [`background_locator` ↗](https://pub.dev/packages/background_locator) plugin which causes Contentsquare plugin to be registered twice. This issue has been mitigated and you can ignore this warning.

If you are not using the `background_locator` plugin and encounter this warning, contact us.

## Requests are failing

In order for Contentsquare to work, you need to make sure the following endpoints are not blocked by your network (VPN):

| Request | Endpoint | Detail |
| - | - | - |
| Config file | `https://mobile-production.content-square.net` | See [Configuration](../how-the-sdk-works/#configuration) |
| Analytics data (EU) | `https://m.csqtrk.net` `https://m.ba.contentsquare.net` `https://m.aa.contentsquare.net` | See [Sending data](../how-the-sdk-works/#sending-data) |
| Analytics data (US) | `https://m-aus1.contentsquare.net` `https://m.bf.contentsquare.net` `https://m.af.contentsquare.net` | See [Sending data](../how-the-sdk-works/#sending-data) |
| Monitoring | `https://l.contentsquare.net` | Used by the SDK to send SDK monitoring analysis in JSON format over HTTPS. |
| Session Replay data (EU) | `https://ka-aeu1.contentsquare.net` `https://ka.ba.contentsquare.net` `https://ka.aa.contentsquare.net` | See [Session Replay requests](../session-replay/#requests) |
| Session Replay data (US) | `https://ka-aus1.contentsquare.net` `https://ka.bf.contentsquare.net` `https://ka.af.contentsquare.net` | See [Session Replay requests](../session-replay/#requests) |
| Screenshot (EU) | `https://s.contentsquare.net` `https://b.ba.contentsquare.net` `https://b.aa.contentsquare.net` | See [Screenshot capture](../in-app-features/#screenshot-capture) |
| Screenshot (US) | `https://s-aus1.contentsquare.net` `https://b.bf.contentsquare.net` `https://b.af.contentsquare.net` | See [Screenshot capture](../in-app-features/#screenshot-capture) |
| Resources manager (EU) | `https://srm.ba.contentsquare.net` `https://srm.aa.contentsquare.net` | See [Session Replay requests](../session-replay/#requests) |
| Resources manager (US) | `https://srm.bf.contentsquare.net` `https://srm.af.contentsquare.net` | See [Session Replay requests](../session-replay/#requests) |

## App with multiple `RenderView`s

Currently, the Contentsquare SDK does not support the use of multiple `RenderViews` within the same application. Using multiple RenderViews may cause the SDK to behave incorrectly.

## Webview heatmap support

Currently, the Contentsquare SDK does not support `Heatmap` for webviews.

### Long Screenshot: Large Capture Limitation

**Symptom:** The Long Screenshot capture completes the creation process, but then fails at the very end without a clear error message.

**Explanation:** Long Screenshots can produce a very large amount of data. For reliability and performance reasons, the server enforces a maximum payload size (\~75 MB). Very long or content-heavy screens may exceed this limit, causing the screenshot to be rejected.

**Workaround:** Capture a shorter area (reduce the scroll length) and/or reduce the amount of on-screen content (for example fewer or lighter elements), then retry the Long Screenshot.

## Screenshots fidelity

### Horizontal scrollviews

Horizontal scrollviews are not supported during *Long Screenshot* and will be captured as if they were static. This may lead to screenshots that are not fully representative of what the user sees.

### Multiple vertical scrollviews

When multiple vertical scrollviews are present on the same screen during *Long Screenshot*, the SDK will handle only the first one and ignore the others. This may lead to screenshots that are not fully representative of what the user sees. If the scrollviews are nested, the SDK will handle the outer scrollview and ignore the inner ones.

### Webviews

The SDK does not capture the webviews inside the scrollviews currently during *Long Screenshot*.

### Dynamic content

The SDK captures a screenshot of the screen at a given time. If the content of the screen changes dynamically (for example, due to animations or loading content) during the capture process, the resulting screenshot may not be fully representative of what the user sees. This could be the case when using widgets like `FlexibleSpaceBar` that can change size during the capture process or any other widgets handling animations.
