diff --git a/docs/ff-concepts/file-handling/displaying-media.md b/docs/ff-concepts/file-handling/displaying-media.md
index 7adef3fb..68812be2 100644
--- a/docs/ff-concepts/file-handling/displaying-media.md
+++ b/docs/ff-concepts/file-handling/displaying-media.md
@@ -52,6 +52,17 @@ You can also access media files within your app that are stored temporarily in y

+:::info[Image Uploads via WebView May Fail on Real Devices]
+Image uploads inside a WebView may fail on physical devices even if they work in Run/Test mode. This happens because FlutterFlow doesn't auto-request Photo Library permissions at runtime.
+
+To fix this:
+ - Enable Photo Library in Settings > Permissions.
+ - Add a Get Permission action to request access before uploading.
+ - Reinstall the app on the device after adding the permission.
+
+If permissions aren’t granted, the upload will silently fail. Users may have to manually allow access via their device’s app settings.
+:::
+
## AudioPlayer
The **AudioPlayer** widget allows you to integrate audio playback into your apps. You can play audio from both uploaded assets and external URLs. Refer to the [**Displaying Media**](#media-types) section for more details on accessing media.
diff --git a/docs/ff-concepts/navigation-routing/create-a-submenu-using-local-state.md b/docs/ff-concepts/navigation-routing/create-a-submenu-using-local-state.md
new file mode 100644
index 00000000..da8df22c
--- /dev/null
+++ b/docs/ff-concepts/navigation-routing/create-a-submenu-using-local-state.md
@@ -0,0 +1,46 @@
+---
+keywords: ['menu', 'submenu', 'local state']
+slug: /resources/create-a-submenu-using-local-state
+title: Create a Submenu Using Local State
+---
+
+# Create a Submenu Using Local State
+
+This guide demonstrates how to implement a toggleable submenu in a FlutterFlow project using local state and conditional visibility logic.
+
+Follow the steps below to create a Submenu using Local State:
+
+ 1. **Create a Local State Variable**
+ - Add a boolean local state variable to your page.
+ - This variable will control the visibility of the submenu (`true` = open, `false` = closed).
+
+ 2. **Place the Submenu Inside a Stack**
+ - Use a `Stack` widget to layer the submenu on top of the page content.
+ - Position the submenu where you want it to appear.
+
+ 3. **Control Visibility with Local State**
+ - Apply a visibility condition on the submenu widget using the boolean state variable.
+ - When the value is `true`, the submenu will be shown; when `false`, it will be hidden.
+
+ 4. **Add Toggle Action to Menu Icon**
+ - On the `onTap` event of the menu icon button, add a conditional action:
+ - If the state variable is `false`, set it to `true`.
+ - If it is `true`, set it to `false`.
+
+ 5. **Close Menu When Item is Tapped**
+ - After triggering any submenu action, set the local state variable to `false` to close the menu.
+
+ 6. **Dismiss Menu When Tapping Page Background**
+ - Wrap the main page content in a `GestureDetector`.
+ - On tap, set the local state variable to `false` to close the menu when the user taps outside it.
+
+:::tip
+The `Stack` widget allows placing widgets on top of each other, which is essential for layering the submenu over other UI elements.
+:::
+
+:::info[Examples]
+- [Project Example](https://app.flutterflow.io/project/sub-menu-840l5q)
+- [Run Mode Preview](https://app.flutterflow.io/run/LfzBGTaef8WldndHa2x4)
+:::
+
+
\ No newline at end of file
diff --git a/docs/ff-concepts/navigation-routing/imgs/20250430121319778896.gif b/docs/ff-concepts/navigation-routing/imgs/20250430121319778896.gif
new file mode 100644
index 00000000..651b8f3f
Binary files /dev/null and b/docs/ff-concepts/navigation-routing/imgs/20250430121319778896.gif differ
diff --git a/docs/ff-integrations/authentication/firebase-auth/auth-actions.md b/docs/ff-integrations/authentication/firebase-auth/auth-actions.md
index 1dc7bc27..df681809 100644
--- a/docs/ff-integrations/authentication/firebase-auth/auth-actions.md
+++ b/docs/ff-integrations/authentication/firebase-auth/auth-actions.md
@@ -6,6 +6,7 @@ tags: [Auth Actions, Authentication, Firebase]
sidebar_position: 1
keywords: [FlutterFlow, Auth Actions, Authentication, Firebase]
---
+
# Common Auth Actions
Here's a list of common authentication actions:
@@ -22,6 +23,35 @@ Follow the steps below to add this action:

+## Login [Action]
+
+The Login action allows users to authenticate and gain access to your app. Login behavior can differ based on the provider you configure (e.g., email/password, Google, Apple, phone number). Each provider has its own setup, but they all share the same underlying action to sign in users.
+
+You typically add the login action to a button (e.g., "Login" or "Sign In") that collects user credentials via TextFields or third-party authentication triggers.
+
+## Handling Invalid Login Credentials
+
+When a user enters incorrect login credentials, FlutterFlow automatically displays a `SnackBar` with an error message. This helps users understand why their login attempt failed without needing custom logic.
+
+
+
+When the **Login Action** fails, a `SnackBar` is shown with the relevant error (e.g., “No user found” or “Wrong password”). This message appears automatically during runtime; no additional configuration is required.
+
+:::tip
+There is no need to manually add alert dialogs for failed login attempts. FlutterFlow handles `SnackBar` display automatically when authentication fails.
+:::
+
+**Customize the SnackBar (Optional)**
+
+1. Select the **Login Action** from your button or trigger.
+2. In the **Actions tab**, open the **Action Output** section.
+3. Use conditional logic to check the error message.
+4. Display a custom `SnackBar` or navigate based on the message content.
+
+:::note
+To customize the `SnackBar` further, use the **Action Output** and attach additional logic based on the error string.
+:::
+
## Reset Password
With Firebase Authentication, there are two ways you can allow users to reset their password in your FlutterFlow app:
diff --git a/docs/ff-integrations/authentication/imgs/20250430121519975010.gif b/docs/ff-integrations/authentication/imgs/20250430121519975010.gif
new file mode 100644
index 00000000..c5255355
Binary files /dev/null and b/docs/ff-integrations/authentication/imgs/20250430121519975010.gif differ
diff --git a/docs/ff-integrations/maps/convert-device-location-to-address.md b/docs/ff-integrations/maps/convert-device-location-to-address.md
new file mode 100644
index 00000000..185252c9
--- /dev/null
+++ b/docs/ff-integrations/maps/convert-device-location-to-address.md
@@ -0,0 +1,106 @@
+---
+keywords: ['device', 'address', 'current']
+slug: /integrations/maps/convert-device-location-to-address
+title: Convert Device Location to Address
+---
+
+# Convert Device Location to Address in FlutterFlow
+
+This guide is part of the **[Geocoding in FlutterFlow](/geocoding)** series.
+It focuses on **reverse geocoding**—turning a device’s latitude and longitude into a readable address (such as city or street name).
+
+You can achieve this in FlutterFlow using either:
+
+- **The Google Maps Geocoding API** (via API Calls)
+- **The `geocoding` Dart package** (via a Custom Action)
+
+Explore a live example in this **[FlutterFlow sample project](https://app.flutterflow.io/project/geo-track-rvndye)**.
+
+**Option 1: Using the Google Maps API**
+
+ 1. **Enable the Geocoding API**
+
+ 1. Go to the [Google Cloud Console](https://console.cloud.google.com/).
+ 2. Select your project.
+ 3. Search for and enable the **Geocoding API**.
+
+ 
+
+ 2. **Add API Key to App State**
+
+ 1. Go to **App State > Local State** in FlutterFlow.
+ 2. Add a new variable:
+ - `apiKey` → Type: `String`
+ 3. Paste your Geocoding API key as the default value.
+
+ 
+
+ 3. **Create the API Call**
+
+ 1. Navigate to **API Calls** in FlutterFlow.
+ 2. Create a new API call with the following configuration:
+
+ - **Base URL**:
+ ```js
+ https://maps.googleapis.com/maps/api/geocode/json
+ ```
+ - **Method**: `GET`
+
+ 3. Under **Variables**, add:
+ - `latlng` → Type: `String`
+ - `apiKey` → Type: `String`
+
+ 
+
+ 4. Create a Custom Function (LatLng → String)
+
+ Create a custom function that accepts a `LatLng` value (device location) and returns a string in `"latitude,longitude"` format.
+
+ This will be used to populate the `latlng` variable in your API call.
+
+ 
+
+ 5. **Run the API and Display the Result**
+
+ 1. Add a button or trigger to run the API call.
+ 2. Pass the following:
+ - `latlng`: From the custom function.
+ - `apiKey`: From local state.
+ 3. From the API response, extract the address using a **JSON Path**.
+
+ Example JSON Path for city name:
+ ```json
+ $.results[0].address_components[1].long_name
+ ```
+ 4. Bind the extracted value to a `Text` widget.
+
+**Option 2: Using the `geocoding` Dart Package**
+
+ If you prefer to use Flutter's native functionality, you can achieve the same result using the geocoding Dart package in a custom action.
+
+ 1. **Add the Package**
+ Add the dependency to your project’s pubspec.yaml file:
+
+ ```js
+ dependencies:
+ geocoding: ^2.1.0
+ ```
+
+ 2. **Create a Custom Action**
+ - Create a new custom action.
+ - Add a parameter: LatLng location.
+ 3. Use the geocoding package to convert the coordinates into a readable address.
+
+ Sample code:
+
+ ```js
+ import 'package:geocoding/geocoding.dart';
+
+ Future getAddressFromLocation(LatLng location) async {
+ final placemarks = await placemarkFromCoordinates(location.latitude, location.longitude);
+ final place = placemarks.first;
+ return '${place.locality}, ${place.country}';
+ }
+
+ ```
+ 4. Return the result and bind it to a Text widget.
\ No newline at end of file
diff --git a/docs/ff-integrations/maps/geocoding.md b/docs/ff-integrations/maps/geocoding.md
new file mode 100644
index 00000000..67f0ecc6
--- /dev/null
+++ b/docs/ff-integrations/maps/geocoding.md
@@ -0,0 +1,122 @@
+---
+slug: /integrations/maps/geocoding
+title: Geocoding in FlutterFlow
+keywords: ['geocoding', 'reverse geocoding', 'maps', 'location', 'address']
+---
+
+# Geocoding in FlutterFlow
+
+**Geocoding** is the process of converting between human-readable addresses (like “1600 Amphitheatre Parkway, Mountain View, CA”) and geographic coordinates (latitude and longitude).
+
+FlutterFlow supports geocoding through **custom API calls** and **custom code actions**, giving you flexibility to choose the approach that works best for your app.
+
+**Types of Geocoding**
+
+There are two common types of geocoding:
+
+1. **Forward Geocoding**
+ Converting an address into geographic coordinates.
+ *Example:* `"Paris, France"` → `(48.8566, 2.3522)`
+
+2. **Reverse Geocoding**
+ Converting geographic coordinates into an address.
+ *Example:* `(37.4221, -122.0841)` → `"1600 Amphitheatre Parkway, Mountain View, CA"`
+
+**Approaches in FlutterFlow**
+
+You can implement geocoding in FlutterFlow in two main ways:
+
+1. **Google Maps Geocoding API**
+
+ - Uses the official Google Maps API for reliable, global geocoding.
+ - Requires a Google Cloud project and API key.
+ - Works via a standard API Call in FlutterFlow.
+ - Best for:
+ - Apps with existing Google Maps integrations.
+ - Large-scale or high-accuracy location services.
+
+ See: **[Google Maps Geocoding API Documentation](https://developers.google.com/maps/documentation/geocoding)**
+
+ Example: Forward Geocoding API Call
+
+ **Endpoint:**
+ ```js
+ GET https://maps.googleapis.com/maps/api/geocode/json?address=Paris,France&key=YOUR_API_KEY
+ ```
+
+ **Sample Response**
+ ```json
+ {
+ "results": [
+ {
+ "formatted_address": "Paris, France",
+ "geometry": {
+ "location": {
+ "lat": 48.856614,
+ "lng": 2.3522219
+ }
+ }
+ }
+ ],
+ "status": "OK"
+ }
+
+ **FlutterFlow API Call Setup**
+
+ - Method: GET
+ - URL: `https://maps.googleapis.com/maps/api/geocode/json`
+ - Query Parameters:
+ - address → `Paris`,`France` (or variable)
+ - `key` → your Google Maps API key
+
+2. **`geocoding` Dart Package (Custom Code)**
+
+ - Uses Flutter’s [`geocoding`](https://pub.dev/packages/geocoding) package for native geocoding.
+ - Works entirely offline for some lookups (depending on platform and data availability).
+ - Implemented via a custom action in FlutterFlow.
+ - Best for:
+ - Apps that don’t want to rely on external APIs.
+ - Simpler geocoding needs.
+
+ **Example: Forward Geocoding with geocoding package**
+
+ ```dart
+ import 'package:geocoding/geocoding.dart';
+ Future getCoordinatesFromAddress(String address) async {
+ try {
+ List locations = await locationFromAddress(address);
+ if (locations.isNotEmpty) {
+ print('Latitude: ${locations.first.latitude}');
+ print('Longitude: ${locations.first.longitude}');
+ }
+ } catch (e) {
+ print('Error: $e');
+ }
+ }
+ ```
+ **Example: Reverse Geocoding with geocoding package**
+
+ ```dart
+ import 'package:geocoding/geocoding.dart';
+ Future getAddressFromCoordinates(double lat, double lng) async {
+ try {
+ List placemarks = await placemarkFromCoordinates(lat, lng);
+ if (placemarks.isNotEmpty) {
+ final place = placemarks.first;
+ print('${place.street}, ${place.locality}, ${place.country}');
+ }
+ } catch (e) {
+ print('Error: $e');
+ }
+ }
+ ```
+
+:::tip[Related Guides]
+- [Convert Device Location to Address](/convert-device-location-to-address) — Step-by-step guide for reverse geocoding a device’s coordinates.
+- (Coming soon) Forward Geocoding with FlutterFlow — Learn how to convert an address into coordinates.
+:::
+
+
+:::tip
+If your app already uses Google Maps for displaying locations, the Google API method will be the most seamless. If you want a code-based approach that avoids API calls, the `geocoding` package is a good alternative.
+:::
\ No newline at end of file
diff --git a/docs/ff-integrations/maps/imgs/20250430121231440026.gif b/docs/ff-integrations/maps/imgs/20250430121231440026.gif
new file mode 100644
index 00000000..f81963a6
Binary files /dev/null and b/docs/ff-integrations/maps/imgs/20250430121231440026.gif differ
diff --git a/docs/ff-integrations/maps/imgs/20250430121231812590.png b/docs/ff-integrations/maps/imgs/20250430121231812590.png
new file mode 100644
index 00000000..80be986f
Binary files /dev/null and b/docs/ff-integrations/maps/imgs/20250430121231812590.png differ
diff --git a/docs/ff-integrations/maps/imgs/20250430121232082585.png b/docs/ff-integrations/maps/imgs/20250430121232082585.png
new file mode 100644
index 00000000..8be0b2c4
Binary files /dev/null and b/docs/ff-integrations/maps/imgs/20250430121232082585.png differ
diff --git a/docs/ff-integrations/maps/imgs/20250430121232452872.png b/docs/ff-integrations/maps/imgs/20250430121232452872.png
new file mode 100644
index 00000000..dd0d0dff
Binary files /dev/null and b/docs/ff-integrations/maps/imgs/20250430121232452872.png differ
diff --git a/docs/generated-code/ff-app-state.md b/docs/generated-code/ff-app-state.md
index ab792043..96a05e5b 100644
--- a/docs/generated-code/ff-app-state.md
+++ b/docs/generated-code/ff-app-state.md
@@ -155,3 +155,28 @@ These functions are automatically generated to provide a convenient and consiste
:::info[How to create App State variables]
To learn more about creating and using App State variables in FlutterFlow's UI, check out the[ **App State**](../resources/data-representation/app-state.md) guide.
:::
+
+**Practical Example: Using Persisted App State for Onboarding**
+
+ You can use Persisted App State variables to control access to certain parts of your app until specific steps are completed.
+
+ For example, you might want to ensure users complete an onboarding flow before they can access the home screen or checkout page.
+
+ 1. **Create a Boolean Variable**
+
+ - Go to App Settings > State Management > Persisted Values.
+ - Add a boolean variable, e.g., `hasCompletedOnboarding`, and set its default value to false.
+
+ 2. **Update After Onboarding**
+
+ - On the final screen of the onboarding flow, add an Update Persisted Value action.
+ - Set `hasCompletedOnboarding` to `true` when the user finishes onboarding.
+
+ 3. **Add Conditional Navigation**
+
+ - On the target page (e.g., Home), add a Page Load action.
+ - Create a Conditional Action:
+ - If `hasCompletedOnboarding == false` → Navigate to the onboarding page.
+
+ Use Local State for checks that only apply during the current session.
+ Use Persisted App State for checks that should work across multiple sessions.
diff --git a/docs/generated-code/state-mgmt-gen-code.md b/docs/generated-code/state-mgmt-gen-code.md
index c8f20237..76fa36f8 100644
--- a/docs/generated-code/state-mgmt-gen-code.md
+++ b/docs/generated-code/state-mgmt-gen-code.md
@@ -73,7 +73,6 @@ For the **iOS** platform, it uses the [**KeyChain**](https://developer.apple.com
In the case of the **Web**, it uses the [**Web Cryptography**](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API) (Web Crypto) API.
:::
-
## Global State
Global state variables are pieces of information related to the device that are accessible throughout the FlutterFlow app.
diff --git a/docs/intro/ff-ui/builder.md b/docs/intro/ff-ui/builder.md
index ef411a38..8d9adb87 100644
--- a/docs/intro/ff-ui/builder.md
+++ b/docs/intro/ff-ui/builder.md
@@ -15,6 +15,23 @@ On opening the project, you'll see the App Builder, which consists of four main

+:::warning[Editor Performance Does Not Affect App Builds]
+Slow performance in the FlutterFlow editor, such as UI lag or long loading times, may occur in large projects or long sessions, but **this does not impact the performance of your final app build**.
+
+Editor slowness is typically caused by:
+- Large projects with many pages or custom functions.
+- Long text blocks typed directly into the editor.
+- Accumulated browser cache from extended sessions.
+
+To improve responsiveness:
+- Draft long content externally before pasting into the editor.
+- Restart your browser regularly.
+- Use the macOS app version for better UI performance.
+- Close unused pages or widgets to free up memory.
+
+The compiled app’s performance depends on your app logic, code efficiency, and device resources—not the speed of the editor environment.
+:::
+
## Navigation Menu
The Navigation Menu, located on the left side of the builder, allows you to switch between various FlutterFlow features. These include designing the UI, managing databases, setting up API, adjusting app settings, adding integrations, and more.
@@ -54,4 +71,5 @@ elements on the canvas. It allows you to add [Actions](../../resources/control-f
The Properties Panel will vary slightly depending on the entity you have selected. To explore the details of each Properties Panel, click on the following:
- **[Page Properties](../../resources/ui/pages/pages-properties.md)** (when you have selected a Page)
-- **[Widget Properties](../../resources/ui/widgets/widget-properties.md)** (when you have selected any widget, including built-in components)
\ No newline at end of file
+- **[Widget Properties](../../resources/ui/widgets/widget-properties.md)** (when you have selected any widget, including built-in components)
+
diff --git a/docs/intro/ff-ui/canvas.md b/docs/intro/ff-ui/canvas.md
index b7d171e5..91cc9533 100644
--- a/docs/intro/ff-ui/canvas.md
+++ b/docs/intro/ff-ui/canvas.md
@@ -144,3 +144,24 @@ Watch this video if you prefer watching a video tutorial.
---
+
+
+Why can’t I copy and paste widgets on the Canvas?
+
+If you're unable to copy and paste widgets on the Canvas, the issue may be due to clipboard permissions in your browser.
+
+**Follow these steps to enable clipboard access in Chrome:**
+
+1. Click the **lock icon** in the address bar next to `flutterflow.io`.
+2. In the permissions popup, locate **Clipboard**.
+3. Set clipboard access to **Allow**.
+4. Refresh the page and try again.
+
+
+
+:::tip
+If you're using Firefox, Safari, or Edge, check that browser’s permission settings to enable clipboard access.
+:::
+
+
+
diff --git a/docs/intro/ff-ui/imgs/20250430121511630414.png b/docs/intro/ff-ui/imgs/20250430121511630414.png
new file mode 100644
index 00000000..f1f7f9b0
Binary files /dev/null and b/docs/intro/ff-ui/imgs/20250430121511630414.png differ
diff --git a/docs/resources/control-flow/backend-logic/backend-query/update-user-record-from-email-input.md b/docs/resources/control-flow/backend-logic/backend-query/update-user-record-from-email-input.md
new file mode 100644
index 00000000..2680a0e9
--- /dev/null
+++ b/docs/resources/control-flow/backend-logic/backend-query/update-user-record-from-email-input.md
@@ -0,0 +1,56 @@
+---
+keywords: ['email', 'input', 'update']
+slug: /resources/backend-query/update-user-record-from-email-input
+title: Update a User Record Using Email Input
+---
+
+# Update a User Record Using Email Input
+
+This article explains how to update a user document in Firebase based on an email address entered in a `TextField`. This approach is useful when you want to locate a user record dynamically and update it based on real-time user input.
+
+
+
+You may need to update or associate a document with a user record based on an email typed by the current user. Since FlutterFlow does not support queries directly as an action, this setup allows you to use widget-level queries and UI logic instead.
+
+Follow the steps below to update User Record using Email input:
+
+ 1. **Add the Input Field**
+
+ - Place a `TextField` on the canvas to accept the email input.
+ - Enable **Update Page on Change** so the UI updates as the user types.
+
+ 
+
+ 2. **Add a Query-Linked Widget**
+
+ - Add a container or column widget below the `TextField`.
+ - Attach a **Single Document Query** to this widget, filtering by the entered email address.
+ - Enable **Hide widget if no match** to conditionally show the result and the action button only when a matching document is found.
+
+ 
+
+ 3. **Add an Update Action**
+
+ - Inside the visible widget, add a button.
+ - Set the **On Tap** action to `Update Document`.
+ - Select the user document from the query result as the source.
+ - Add a `SnackBar` action to confirm the update.
+
+ 
+
+ :::note
+ Backend Queries can be triggered automatically on page load and used to manage state across widget trees. However, the widget-level query approach you're using gives more control and is appropriate for your use case—especially since FlutterFlow doesn’t support asynchronous filters directly in actions yet.
+ :::
+
+:::tip
+Instead of using **Update Page on Change**, you can:
+- Store the text field value in a `localState` variable using a button action.
+- Filter your query using this `localState` value.
+:::
+
+:::info[Example Project]
+Explore this setup in the following FlutterFlow project:
+**[UpdateUser Page – FlutterFlow Project](https://app.flutterflow.io/project/flutterflow-adcdi2)**
+:::
+
+
diff --git a/docs/resources/control-flow/backend-logic/imgs/20250430121457209095.gif b/docs/resources/control-flow/backend-logic/imgs/20250430121457209095.gif
new file mode 100644
index 00000000..51f6c609
Binary files /dev/null and b/docs/resources/control-flow/backend-logic/imgs/20250430121457209095.gif differ
diff --git a/docs/resources/control-flow/backend-logic/imgs/20250430121457646837.png b/docs/resources/control-flow/backend-logic/imgs/20250430121457646837.png
new file mode 100644
index 00000000..4c69ff74
Binary files /dev/null and b/docs/resources/control-flow/backend-logic/imgs/20250430121457646837.png differ
diff --git a/docs/resources/control-flow/backend-logic/imgs/20250430121457985825.png b/docs/resources/control-flow/backend-logic/imgs/20250430121457985825.png
new file mode 100644
index 00000000..026125d6
Binary files /dev/null and b/docs/resources/control-flow/backend-logic/imgs/20250430121457985825.png differ
diff --git a/docs/resources/control-flow/backend-logic/imgs/20250430121458204938.png b/docs/resources/control-flow/backend-logic/imgs/20250430121458204938.png
new file mode 100644
index 00000000..4363e0ca
Binary files /dev/null and b/docs/resources/control-flow/backend-logic/imgs/20250430121458204938.png differ
diff --git a/docs/resources/control-flow/functions/img/20250430121319778896.gif b/docs/resources/control-flow/functions/img/20250430121319778896.gif
new file mode 100644
index 00000000..651b8f3f
Binary files /dev/null and b/docs/resources/control-flow/functions/img/20250430121319778896.gif differ
diff --git a/docs/resources/data-representation/app-state.md b/docs/resources/data-representation/app-state.md
index ccd0c6cd..1f763900 100644
--- a/docs/resources/data-representation/app-state.md
+++ b/docs/resources/data-representation/app-state.md
@@ -127,4 +127,23 @@ Storing large or complex data types like documents in App State could lead to **
If you need to work with such data types, it's recommended to store them in Page or Component state instead.
+
+
+Why is the data type list empty when creating an App State variable?
+
+
+If you don’t see any data types when trying to create an App State variable, it's likely because Deep Linking is disabled in your project settings.
+
+To fix this:
+
+1. Open your FlutterFlow project.
+2. Go to Settings > App Details.
+3. Scroll to the Deep Linking & Route section.
+4. Enable the Deep Linking toggle.
+
+
+
+Once Deep Linking is enabled, the list of available data types should appear when creating or editing an App State variable.
+
+
\ No newline at end of file
diff --git a/docs/resources/ui/widgets/basic-widgets/text.md b/docs/resources/ui/widgets/basic-widgets/text.md
index c4c71c52..dceb99b8 100644
--- a/docs/resources/ui/widgets/basic-widgets/text.md
+++ b/docs/resources/ui/widgets/basic-widgets/text.md
@@ -1,6 +1,7 @@
---
tags: [Base Elements]
slug: /resources/ui/widgets/text
+title: Text
---
# Text
@@ -120,6 +121,45 @@ value for **Max character** to limit the number of characters.

+### Wrapping Text Inside Containers
+
+When building responsive layouts, text may overflow its container if not properly configured. This section explains how to ensure your text wraps correctly within containers like Columns, Rows, or ListViews.
+
+1. **Select the Text Widget**
+ Choose the text element you want to wrap inside a container.
+
+2. **Enable Soft Wrap**
+ In the **Properties Panel**, enable **Soft Wrap** under the Text Styling section. This allows long text to break into multiple lines.
+
+3. **Set Max Lines (Optional)**
+ Use the **Max Lines** property to limit how many lines the text can wrap into before being truncated.
+
+4. **Use `Expanded` or `Flexible` in a Row**
+ If your Text widget is inside a `Row`, wrap it inside an `Expanded` or `Flexible` widget to allow it to take up available space and wrap correctly.
+
+5. **Ensure Container Has Constrained Width**
+ Wrapping only works if the parent widget or container has a limited width. Otherwise, the text may keep expanding instead of wrapping.
+
+6. **Optional: Handle Overflow Gracefully**
+ You can set the **Overflow** property to values like `ellipsis`, `clip`, or `fade` to determine how excess text is handled.
+
+ 
+
+ 
+
+ :::tip
+ Wrapping long text in a `Row` requires the Text widget to be inside an `Expanded` or `Flexible` widget.
+ :::
+
+ :::note
+ Soft wrap only works when the parent container has width constraints. Avoid wrapping long text directly in a Row with unbounded width.
+ :::
+
+ :::info[Additional Resources]
+ - [Flutter Text Class](https://api.flutter.dev/flutter/widgets/Text-class.html)
+ :::
+
+
### Adding Gradient color
diff --git a/docs/resources/ui/widgets/built-in-widgets/imgs/20250430121501151202.png b/docs/resources/ui/widgets/built-in-widgets/imgs/20250430121501151202.png
new file mode 100644
index 00000000..cfec3eef
Binary files /dev/null and b/docs/resources/ui/widgets/built-in-widgets/imgs/20250430121501151202.png differ
diff --git a/docs/resources/ui/widgets/built-in-widgets/imgs/20250430121501151203.png b/docs/resources/ui/widgets/built-in-widgets/imgs/20250430121501151203.png
new file mode 100644
index 00000000..82e6d20f
Binary files /dev/null and b/docs/resources/ui/widgets/built-in-widgets/imgs/20250430121501151203.png differ
diff --git a/docs/testing-deployment-publishing/publishing/apple-appstore-deployment.md b/docs/testing-deployment-publishing/publishing/apple-appstore-deployment.md
index 89a41f23..e1c02b80 100644
--- a/docs/testing-deployment-publishing/publishing/apple-appstore-deployment.md
+++ b/docs/testing-deployment-publishing/publishing/apple-appstore-deployment.md
@@ -1,5 +1,5 @@
---
-slug: /deployment/apple-app-store-deployment
+slug: /publishing/apple-app-store-deployment
title: Apple App Store Deployment
description: Learn how to seamlessly deploy your apps to the Apple App Store using FlutterFlow.
tags: [Apple App Store, Deployment, FlutterFlow, iOS]
diff --git a/docs/testing-deployment-publishing/publishing/deploy-for-environment.md b/docs/testing-deployment-publishing/publishing/deploy-for-environment.md
index 5b5e876a..dcded2f4 100644
--- a/docs/testing-deployment-publishing/publishing/deploy-for-environment.md
+++ b/docs/testing-deployment-publishing/publishing/deploy-for-environment.md
@@ -1,5 +1,5 @@
---
-slug: /deployment/deploy-for-environments
+slug: /publishing/deploy-for-environments
title: Deploy for Development Environments
description: Learn how to deploy your apps for development environments.
tags: [Apple App Store, Google Play Store, Deployment, Dev Environments]
diff --git a/docs/testing-deployment-publishing/publishing/deploy-from-github.md b/docs/testing-deployment-publishing/publishing/deploy-from-github.md
index 0565a58d..2e262b5f 100644
--- a/docs/testing-deployment-publishing/publishing/deploy-from-github.md
+++ b/docs/testing-deployment-publishing/publishing/deploy-from-github.md
@@ -1,5 +1,5 @@
---
-slug: /deployment/deploy-from-github
+slug: /publishing/deploy-from-github
title: Deploy from GitHub
description: Learn how to deploy your apps directly from GitHub branch.
tags: [Apple App Store, Google Play Store, Deployment, GitHub]
diff --git a/docs/testing-deployment-publishing/publishing/google-playstore-deployment.md b/docs/testing-deployment-publishing/publishing/google-playstore-deployment.md
index 23abf680..e95c7c23 100644
--- a/docs/testing-deployment-publishing/publishing/google-playstore-deployment.md
+++ b/docs/testing-deployment-publishing/publishing/google-playstore-deployment.md
@@ -1,5 +1,5 @@
---
-slug: /deployment/google-playstore-deployment
+slug: /publishing/google-playstore-deployment
title: Google Play Store Deployment
description: Learn how to seamlessly deploy your apps to the Google Play Store using FlutterFlow.
tags: [Google Play Store, Deployment, FlutterFlow, Android]
diff --git a/docs/testing-deployment-publishing/publishing/pre-checks-publishing.md b/docs/testing-deployment-publishing/publishing/pre-checks-publishing.md
index 063b6917..175fa41b 100644
--- a/docs/testing-deployment-publishing/publishing/pre-checks-publishing.md
+++ b/docs/testing-deployment-publishing/publishing/pre-checks-publishing.md
@@ -1,5 +1,5 @@
---
-slug: /deployment/pre-checks-before-publishing
+slug: /publishing/pre-checks-before-publishing
title: Pre-checks Before Publishing
description: Ensure your app is ready for launch with this detailed guide on essential pre-publishing checks.
tags: [Pre-checks, Publishing, Deployment]
diff --git a/docs/testing-deployment-publishing/publishing/web-publishing.md b/docs/testing-deployment-publishing/publishing/web-publishing.md
index 6b960048..a6efb376 100644
--- a/docs/testing-deployment-publishing/publishing/web-publishing.md
+++ b/docs/testing-deployment-publishing/publishing/web-publishing.md
@@ -165,8 +165,6 @@ To view the live version of your app, click the **eye icon** next to the 'Publis

----
-
## Adding custom domain
Adding a custom domain to your web app can give it a more professional look and feel and make it easier for your users to remember and find. FlutterFlow allows you to connect your own domain name to your web app and have it up and running in no time. This feature is perfect for those wanting to establish a strong online presence and increase brand awareness.
@@ -191,8 +189,6 @@ To add a custom domain:
4. Once the domain is connected, hit the **Publish** button again.

----
-
## Add custom headers
If you are familiar with HTML, you may set any additional headers (e.g., [style](https://www.w3schools.com/tags/tag_style.asp) and [script](https://www.w3schools.com/tags/tag_script.asp)) that you would like to be used in your published web app. For example, adding inline or external javascript. This will appear inside the head tag of your published app.
@@ -213,17 +209,12 @@ You can verify the added custom header by opening the inspect element window (**

----
-
-
## Changing Firebase dynamic link
If you do web deployment and utilize Firebase dynamic links in your app, it's recommended that you update your Firebase Dynamic Links URL scheme. This adjustment is necessary to ensure shared links open correctly on the web. By doing so, your dynamic links will function properly for users across all platforms.

----
-
## Adding subdomain as Authorized domain (Firebase)
If you are using *Firebase Authentication*, you must add your custom subdomain as an authorized domain in the [Firebase console](https://console.firebase.google.com/). Otherwise, social and phone sign-in will not work.
@@ -256,8 +247,6 @@ To enable your subdomain as an authorized domain:
----
-
## See deployment history
Deployment history is essential for maintaining transparency, accountability, and a clear understanding of how a web application has evolved over time. Each deployment entry in the history includes a timestamp indicating when the deployment occurred.
@@ -267,3 +256,31 @@ It also display the status of each deployment (e.g., successful, failed). This h
Click **View Full History** to review the previous successful version.

+
+## Embedding a FlutterFlow App in an Iframe
+
+You can embed a published FlutterFlow web app in an `iframe`, but this comes with limitations due to browser security policies and localStorage restrictions.
+
+:::warning
+Embedding may cause **limited functionality** if the browser blocks third-party cookies or `localStorage` access.
+:::
+
+Follow the steps below to embed:
+
+ 1. **Enable Third-Party Cookies**
+ Ensure the browser allows third-party cookies for your app's domain.
+
+ 2. **Use the Embed Code**
+
+ ```html
+
+ ```
+ Replace your-flutterflow-app.web.app with your actual hosted app URL:
+ - Embedding may break features that rely on session/local storage.
+ - Server headers like X-Frame-Options or Content-Security-Policy can prevent iframe usage.
+ - Major platforms like Google and LinkedIn block iframe embedding for security reasons.
diff --git a/docs/testing-deployment-publishing/running-your-app/run-your-app.md b/docs/testing-deployment-publishing/running-your-app/run-your-app.md
index 3a8c4817..f4b27a10 100644
--- a/docs/testing-deployment-publishing/running-your-app/run-your-app.md
+++ b/docs/testing-deployment-publishing/running-your-app/run-your-app.md
@@ -1,5 +1,5 @@
---
-slug: /testing/run-your-app
+slug: /running-your-app/run-your-app
title: Run your App
description: Discover the essentials of running and testing your FlutterFlow app with this comprehensive guide.
tags: [Run, Testing, FlutterFlow]
diff --git a/docs/troubleshooting/api/client-server_errors_during_the_api_call.md b/docs/troubleshooting/api/client-server_errors_during_the_api_call.md
index d13dd1cc..5927595e 100644
--- a/docs/troubleshooting/api/client-server_errors_during_the_api_call.md
+++ b/docs/troubleshooting/api/client-server_errors_during_the_api_call.md
@@ -42,11 +42,32 @@ These errors are usually caused by incorrect requests from the client side.
The 404 error indicates that the requested URL does not exist on the server. This could be due to a typo in the URL or changes in the API endpoints. Always verify the URL and check for any recent API updates.
- :::tip
- Always double-check your request URL before troubleshooting further.
- :::
+ **Common Reasons for 404 Errors:**
+
+ 1. **Incorrect Endpoint URL**
+ Double-check that the base URL and endpoint path are spelled correctly and match what’s defined in the API documentation.
+
+ 2. **Missing or Incorrect Parameters**
+ Some APIs require specific query or path parameters. Ensure that all required parameters are included and correctly formatted.
+
+ 3. **Trailing Slashes**
+ Some endpoints treat URLs with trailing slashes (e.g., `/users/`) differently than without (e.g., `/users`). Try removing or adding the trailing slash to see if it resolves the issue.
+
+ 4. **Authorization or Access Restrictions**
+ If the endpoint exists but is protected, ensure that the correct headers (e.g., `Authorization`) are added to the request.
+
+ Example Error Message:
+
+ 
+
+ The error message typically includes the requested URL and response code, which can help narrow down the issue.
+
+ :::tip
+ - Always compare the URL structure in your FlutterFlow API call to the official documentation of the API provider. Use tools like **[Postman](https://www.postman.com/)** to test endpoints independently before implementing them in FlutterFlow.
+ - Always double-check your request URL before troubleshooting further.
+ :::
- 
+ 
- **407 – Proxy Authentication Required**
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-app-store-bundle-version-error.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-app-store-bundle-version-error.md
new file mode 100644
index 00000000..11c07025
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-app-store-bundle-version-error.md
@@ -0,0 +1,43 @@
+---
+keywords: ['error', 'deployment', 'previously']
+slug: /troubleshooting/app-store-deployment/fix-app-store-bundle-version-error
+title: Fix App Bundle Version Error on App Store
+---
+
+# Fix App Bundle Version Error on App Store
+
+If you're seeing this error when deploying to the App Store, it's because the **version and build number** of your app match a previously uploaded version. Apple requires each build to have a **higher version or build number** than the last.
+
+The error message is found below:
+
+ - `NSLocalizedFailureReason=The bundle version must be higher than the previously uploaded version.`
+ - `"NSLocalizedDescription": "The provided entity includes an attribute with a value that has already been used"`
+
+:::info[Prerequisites]
+Make sure you have access to the previous version and build number submitted to the App Store. You can find this in App Store Connect under the build history for your app.
+:::
+
+Follow the steps below to resolve this error:
+
+1. **Check your last uploaded version/build number**
+ For example: version `1.0.1` with build number `12`.
+
+2. **In FlutterFlow, navigate to:**
+ `Settings > Deployment`
+
+3. You have two options:
+ - **Option 1: Let FlutterFlow increment automatically**
+ - Keep the version the same.
+ - Leave the build number **empty**.
+ - **Option 2: Manually increment the build number**
+ - Increase the previous build number by 1 (e.g., from 12 to 13).
+
+4. If the issue persists:
+ - Try incrementing both the **version number** (e.g., `1.0.2`) and **build number**, or just leave build number empty to auto-increment.
+
+ 
+
+Follow the steps below to prevent future errors:
+
+ - If using **manual updates**, always increase the build number before each new deployment.
+ - For **automatic handling**, leave the build number field empty to let FlutterFlow manage it for you.
\ No newline at end of file
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-app-store-deploy-button-not-working.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-app-store-deploy-button-not-working.md
new file mode 100644
index 00000000..9b5e1938
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-app-store-deploy-button-not-working.md
@@ -0,0 +1,33 @@
+---
+keywords: ['app store', 'deploy', 'codemagic', '503 error', 'large assets']
+slug: /troubleshooting/app-store-deployment/fix-app-store-deploy-button-not-working
+title: Fix App Store Deploy Button Not Working
+---
+
+# Fix App Store Deploy Button Not Working
+
+When deploying your application to the App Store, the **Deploy** button may become unresponsive. In such cases, inspecting your browser’s developer console may reveal the following error:
+
+ ```bash
+ POST https://api.flutterflow.io/v1/codemagicBuildRequest 503
+ ```
+
+This error usually occurs when your FlutterFlow project exceeds the maximum size limit allowed by Codemagic. Large assets such as videos or high-resolution images can cause the project to surpass this limit.
+
+ Recommended project size: 50 MB or less
+
+**Resolution Steps**
+
+Follow the steps below to fix the issue:
+
+ - Remove Large Assets:
+
+ - Identify and remove large media files (e.g., videos, high-resolution images) from your project.
+
+ - Consider hosting these assets externally using a CDN or cloud storage service, then use the network URLs in your project.
+
+ - Check and Reduce Project Size
+
+ - Ensure your total project size is under 50 MB before deploying.
+
+ Projects exceeding 50 MB are likely to fail during deployment. Always monitor your asset size.
\ No newline at end of file
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-ios-signing-error-for-imagenotification.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-ios-signing-error-for-imagenotification.md
new file mode 100644
index 00000000..da1413cf
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-ios-signing-error-for-imagenotification.md
@@ -0,0 +1,45 @@
+---
+keywords: ['signing', 'ios', 'error']
+slug: /troubleshooting/app-store-deployment/fix-ios-signing-error-for-imagenotification
+title: Fix iOS Signing Error for ImageNotification
+---
+
+# Fix iOS Signing Error for ImageNotification
+
+When building or deploying an iOS app, you may encounter the following error message:
+
+ ```text
+ Signing for "ImageNotification" requires a development team
+ ```
+
+This issue typically occurs when the signing configuration for the `ImageNotification` service extension is incomplete or misconfigured in Xcode or FlutterFlow.
+
+The error occurs when Xcode or FlutterFlow attempts to compile and sign the `ImageNotification` extension without a valid development team or properly configured provisioning profile. This step is necessary to ensure that all targets in your iOS app, including extensions, are signed correctly.
+
+Follow the steps below to resolve this issue:
+
+1. **Use a Valid Apple Developer Account**
+
+ Ensure you are signed in with an **active paid Apple Developer account**. Free accounts do not support all signing and deployment capabilities.
+
+2. **Select a Development Team in Xcode**
+
+ If working locally:
+
+ - Open your project in Xcode.
+ - Go to the **Signing & Capabilities** tab for the `ImageNotification` target.
+ - Select a valid **development team** from the dropdown.
+
+3. **Confirm Provisioning Profiles**
+
+ Make sure the provisioning profiles used:
+
+ - Match the selected development team
+ - Are correctly configured for all targets, including the service extension
+
+4. **Update iOS Deployment Settings in FlutterFlow**
+
+ If you're deploying via FlutterFlow:
+
+ - Go to **App Settings > Mobile Deployment > App Store**
+ - Set the correct **Development Team ID** in the iOS configuration
\ No newline at end of file
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-missing-purpose-strings-info-plist-for-ios-permission.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-missing-purpose-strings-info-plist-for-ios-permission.md
new file mode 100644
index 00000000..41b4fa94
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-missing-purpose-strings-info-plist-for-ios-permission.md
@@ -0,0 +1,89 @@
+---
+keywords: ['permissions', 'info.plist', 'app store', 'photo library', 'runner']
+slug: /troubleshooting/apple-store-deployment/fix-missing-purpose-strings-info-plist-for-ios-permission
+title: Fix Missing Purpose Strings in Info.plist for iOS Permissions
+---
+
+# Fix Missing Purpose Strings in Info.plist for iOS Permissions
+
+When uploading your iOS app to the App Store, you may encounter the following error:
+
+ ```
+ ITMS-90683: Missing purpose string in Info.plist - The Info.plist file for the “Runner.app” bundle should contain a NSPhotoLibraryUsageDescription key.
+ ```
+
+ This error occurs when your app (or any third-party SDKs it uses) accesses sensitive user data without providing a **purpose string** in the `Info.plist` file. Apple requires a **clear, user-facing explanation** for each type of data access to ensure transparency and protect user privacy.
+
+Any access to protected user resources—like the **camera**, **microphone**, **location**, **photo library**, or **contacts**—must be explained in the app’s `Info.plist` using a purpose string (e.g., `NSCameraUsageDescription`).
+
+Even if **you are not directly using these APIs**, third-party libraries might be, and Apple still requires that the purpose be declared.
+
+Follow the steps below to resolve this issue:
+
+1. **Identify Required Permissions**
+
+Review your app’s features and any integrated packages. Commonly required permissions include:
+
+- **NSCameraUsageDescription** — camera access
+- **NSMicrophoneUsageDescription** — microphone use
+- **NSLocationWhenInUseUsageDescription** — location access
+- **NSPhotoLibraryUsageDescription** — photo library access
+- **NSContactsUsageDescription** — contacts access
+
+2. **Add Purpose Strings in FlutterFlow**
+
+ FlutterFlow provides an easy way to manage iOS permissions.
+
+ - **Open Permissions Settings**
+ - Navigate to **Settings & Integrations > Project Setup > Permissions** in your FlutterFlow project.
+
+ 
+
+ - **Enable Required Permissions**
+
+ - Toggle on any permissions your app or SDKs require.
+
+ - **Add Clear Usage Descriptions**
+
+ - For each enabled permission, write a **clear, user-facing description**.
+
+ Example for Photo Library:
+
+ 
+
+ ```
+ This app requires access to your photo library to allow image uploads.
+ ```
+
+3. **Save Changes and Rebuild**
+
+ - After entering all required descriptions, **save your changes**.
+ - **Rebuild and re-upload** your app to the App Store.
+
+**Example Error: Photo Library**
+
+If you see this specific error:
+
+ ```
+ ITMS-90683: Missing purpose string in Info.plist - The Info.plist file for the “Runner.app” bundle should contain a NSPhotoLibraryUsageDescription key.
+ ```
+
+ Follow the same steps above, and be sure to:
+
+ - Enable the **Photo Library** permission in FlutterFlow.
+ - Provide a **specific and friendly message** (e.g., "We need access to your photo library so you can upload profile pictures.")
+
+**Best Practices**
+ - Use **clear, honest, and user-friendly** language.
+ - Avoid vague terms like “app functionality.”
+ - If your app supports multiple languages, make sure to **localize your descriptions** as required by Apple.
+
+**Test Before Submitting**
+
+ - Run your app on a **physical iOS device**.
+ - Trigger each permission prompt to verify that:
+ - The prompt appears correctly.
+ - The description matches your purpose string.
+ - The functionality works as expected.
+
+If the issue still persists after completing these steps, contact [FlutterFlow Support](mailto:support@flutterflow.io).
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning-profile-error-associated-domains.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning-profile-error-associated-domains.md
new file mode 100644
index 00000000..18fce0dd
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning-profile-error-associated-domains.md
@@ -0,0 +1,81 @@
+---
+keywords: ['associated domains', 'provisioning profile', 'apple developer', 'deployment error']
+slug: /troubleshooting/apple-store-deployment/provisioning-profile-error-associated-domains
+title: Provisioning Profile Error Associated Domains
+---
+
+# Provisioning Profile Error Associated Domains
+
+When deploying an iOS app to the App Store, the following error may occur:
+
+ ```text
+ Provisioning profile [App Store Project ID] doesn't support the Associated Domains capability
+ ```
+
+ This error is related to missing capabilities in your provisioning profile and must be fixed in the Apple Developer portal.
+
+:::info[Prerequisites]
+You need an active Apple Developer account with access to the **Certificates, Identifiers & Profiles** section.
+:::
+
+This error appears when the provisioning profile does not support the **Associated Domains** capability. This is required for:
+
+ - Universal Links
+ - Dynamic Links
+ - App Clips
+ - Website authentication
+
+Follow the steps below to resolve the error:
+
+1. **Open Apple Developer Portal**
+
+ Visit the **[Apple Developer Account](https://developer.apple.com/account/)** and go to:
+
+ **Certificates, Identifiers & Profiles > Identifiers**
+
+ 
+
+
+2. **Select App Identifier**
+
+ Click the **App ID** that matches your FlutterFlow project.
+
+
+3. **Enable Associated Domains**
+
+ In the capabilities section:
+
+ - Check the box for **Associated Domains**
+ - You do not need to create a new App ID
+
+ 
+
+
+4. **Save Changes**
+
+ Click **Save** to update your App ID.
+
+
+5. **Redeploy from FlutterFlow**
+
+ Return to FlutterFlow and deploy the app again.
+
+
+## Developer Account Limitations
+
+ The **Associated Domains** capability is only available with a paid Apple Developer Program membership.
+
+
+ - Check Subscription Status
+
+ In the Apple Developer portal:
+
+ - Look for **Subscription Status**
+ - It should say **Active**
+ - If not, an **Expiration Date** will be shown
+
+ 
+
+ :::warning
+ If you're using **Dynamic Links**, enabling this capability is required.
+ :::
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/sign-in-with-apple-provisioning-error.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/sign-in-with-apple-provisioning-error.md
new file mode 100644
index 00000000..f6e6dad4
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/sign-in-with-apple-provisioning-error.md
@@ -0,0 +1,46 @@
+---
+keywords: ['sign-in', 'apple', 'provisioning']
+slug: /troubleshooting/apple-store-deployment/sign-in-with-apple-provisioning-error
+title: Sign in with Apple Provisioning Profile Error
+---
+
+# Sign in with Apple Provisioning Profile Error
+
+When deploying to the App Store, you may encounter an error stating that the provisioning profile does not support the **Sign in with Apple** capability. This error occurs when the feature is used in the app but not enabled for the associated App ID in your Apple Developer account.
+
+:::info[Prerequisites]
+You must have a registered App ID in your Apple Developer account with a provisioning profile configured for App Store distribution.
+:::
+
+Follow the steps below to resolve the error:
+
+1. **Open the Apple Developer Portal**
+
+ - Go to **[Apple Developer](https://developer.apple.com)**
+ - Navigate to **Certificates, Identifiers & Profiles**
+ - Open the **Identifiers** tab
+
+ 
+
+2. **Select Your App Identifier**
+
+ - Find the **App ID** associated with your project
+ - Click on it to open its configuration page
+
+3. **Enable the Capability**
+
+ - Under **Capabilities**, check the box for **Sign in with Apple**
+ - No new App ID or keys are required for this update
+
+ 
+
+
+4. **Save Your Changes**
+
+ - Click **Save** to apply the updated capability to your App ID
+ - Ensure no additional changes are needed before proceeding
+
+5. **Redeploy the App**
+
+ - In FlutterFlow, go to **App Settings > Mobile Deployment > App Store**
+ - Confirm the capability is enabled, then start your deployment
\ No newline at end of file
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/update-version-to-fix-pre-release-train-error.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/update-version-to-fix-pre-release-train-error.md
new file mode 100644
index 00000000..7107879b
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/update-version-to-fix-pre-release-train-error.md
@@ -0,0 +1,56 @@
+---
+keywords: ['release', 'build', 'deployment']
+slug: /troubleshooting/apple-store-deployment/update-version-to-fix-pre-release-train-error
+title: Update Version to Fix Pre-Release Train Error
+---
+
+# Update Version to Fix Pre-Release Train Error
+
+When submitting your app to the App Store, you may encounter the following error:
+
+ ```text
+ Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions.
+ ```
+
+This occurs when the app version you're trying to submit is already closed for new builds. Even if the build number has changed, the App Store will reject submissions for the same version number.
+
+:::info[Prerequisites]
+You must have access to your FlutterFlow project’s deployment settings and an active Apple Developer account to complete the steps below.
+:::
+
+Follow the steps below to resolve the issue:
+
+1. **Open Deployment Settings**
+
+ - Press `Cmd/Ctrl + K`, type **"deployment"**, and hit Enter.
+ This will open the **Deployment** page.
+
+ 
+
+ - Alternatively, go to **Project Settings > Deployment**.
+
+ 
+
+2. **Update Version Number**
+
+ - Click the **Expand** icon next to the **Version** field.
+
+ 
+
+ - Update the version to the next increment (e.g., from `1.2.0` to `1.2.1`).
+
+ 
+
+3. **Redeploy Your App**
+
+ After incrementing the version number, reattempt the deployment. The new version will be accepted.
+
+## Versioning Guidelines
+
+ Use **Semantic Versioning** to manage your app versions effectively:
+
+ - **Major Version** (`1.x.x`): Introduces breaking changes.
+ - **Minor Version** (`x.1.x`): Adds features without breaking existing functionality.
+ - **Patch/Build Version** (`x.x.1`): Fixes bugs or applies minor changes.
+
+ Choose a versioning strategy that best suits your development workflow.
\ No newline at end of file
diff --git a/docs/troubleshooting/apple-store-deployment/publishing/custom_domain_connection_error.md b/docs/troubleshooting/apple-store-deployment/publishing/custom_domain_connection_error.md
deleted file mode 100644
index 32cec90c..00000000
--- a/docs/troubleshooting/apple-store-deployment/publishing/custom_domain_connection_error.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-keywords: ['configuration', 'connect', 'domain']
-slug: /troubleshooting/apple-store-deployment-issues/custom-domain-connection-error
-title: Custom Domain Connection Error
----
-
-# Custom Domain Connection Error
-
-If you encounter the error shown below after clicking **Connect**, follow these steps to resolve it:
-
-
-
-:::info[Prerequisites]
-- Access to your domain registrar or DNS provider dashboard.
-- DNS management permissions to add or modify DNS records.
-:::
-
-**Steps to Resolve the Error:**
-
-1. **Verify DNS Records**
-
- - Ensure that you have correctly configured the DNS records required for your custom domain connection.
- - Add the keys provided by FlutterFlow to your domain’s DNS settings.
-
- :::note
- For A records, if your DNS provider requires a name, you can use `"@"`. When you see an empty value, it typically refers to `"@"`.
- :::
-
- 
-
-2. **Check for Conflicting Records**
-
- - Review your DNS configuration to ensure there are no extra or unnecessary records that conflict with the FlutterFlow-provided keys.
- - For example, if you already have an A record using `"@"`, remove it to avoid conflicts.
-
- :::note
- Before removing any existing DNS records, take screenshots and save them for reference.
- :::
-
-
- Below are examples of correct configurations in FlutterFlow and your DNS provider:
-
- 
-
- 
-
- By following these steps, you can ensure your custom domain is connected correctly.
diff --git a/docs/troubleshooting/apple-store-deployment/publishing/custom_domain_connection_issues.md b/docs/troubleshooting/apple-store-deployment/publishing/custom_domain_connection_issues.md
deleted file mode 100644
index 5daf9c9f..00000000
--- a/docs/troubleshooting/apple-store-deployment/publishing/custom_domain_connection_issues.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-keywords: ['error', 'custom', 'domains']
-slug: /troubleshooting/apple-store-deployment-issues/custom-domain-connection-issues
-title: Custom Domain Connection Issues
----
-
-# Custom Domain Connection Issues
-
-This article provides solutions for common problems encountered when connecting custom domains.
-
-:::info[Prerequisites]
-- Access to your domain registrar or DNS provider dashboard.
-- DNS management permissions to add or modify DNS records.
-- Familiarity with DNS record types (A, CNAME, CAA).
-:::
-
-**Steps to Resolve DNS Record Errors:**
-
-1. **Verify DNS Records**
-
- - Use tools like **[nslookup.io](https://www.nslookup.io)** to verify that your DNS A and CNAME records match the configuration provided in FlutterFlow.
- - Ensure no conflicting A, AAAA, or CNAME records exist.
-
- 
-
-2. **Allow Time for DNS Propagation**
-
- - DNS updates may take up to 24 hours.
- - Wait at least one hour after making changes before attempting to reconnect your domain.
-
-3. **Retry Connection**
-
- - After verifying DNS settings and allowing propagation, attempt to reconnect your domain.
-
-4. **Contact Registrar Support If Necessary**
-
- - If settings are correct and the issue persists after 48 hours, contact your domain registrar to confirm DNS configuration.
-
-**Handling Difficulty Creating DNS Records:**
-
-- Different registrars require different formats for DNS record names:
- - For root domains (e.g., `example.com`), some require an empty name, others `"@"`, or the full domain name.
- - For subdomains (e.g., `test.example.com`), some require just `"test"`, others `"test.example.com"`.
-- Consult your registrar’s documentation for exact instructions.
-
-**Resolving 404 Errors After Domain Connection:**
-
- - Publish the project again after connecting the domain.
- - This usually resolves most 404 errors related to domain connections.
-
-**Fixing DNS Restrictions for SSL Certificates:**
-
-1. **Check for CAA Records**
-
- - Use **[nslookup.io](https://www.nslookup.io/domains/your-site-name/dns-records/caa/)** (replace `your-site-name` with your domain) to check CAA records.
-
-2. **Adjust CAA Records**
-
- - Add `"letsencrypt.org"` to your allowed certificate authorities.
- - Remove any conflicting CAA records.
-
- :::note
- Once CAA records allow `"letsencrypt.org"`, FlutterFlow will be able to generate SSL certificates and complete the domain connection.
- :::
-
-If issues persist after following these steps, contact FlutterFlow support via Live Chat or email at [support@flutterflow.io](mailto:support@flutterflow.io).
diff --git a/docs/troubleshooting/assets/20250430121110741307.png b/docs/troubleshooting/assets/20250430121110741307.png
new file mode 100644
index 00000000..e3401212
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121110741307.png differ
diff --git a/docs/troubleshooting/assets/20250430121158393454.png b/docs/troubleshooting/assets/20250430121158393454.png
new file mode 100644
index 00000000..cc5936a9
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121158393454.png differ
diff --git a/docs/troubleshooting/assets/20250430121201175857.png b/docs/troubleshooting/assets/20250430121201175857.png
new file mode 100644
index 00000000..a8be1d90
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121201175857.png differ
diff --git a/docs/troubleshooting/assets/20250430121201415199.png b/docs/troubleshooting/assets/20250430121201415199.png
new file mode 100644
index 00000000..bf472f35
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121201415199.png differ
diff --git a/docs/troubleshooting/assets/20250430121201673795.png b/docs/troubleshooting/assets/20250430121201673795.png
new file mode 100644
index 00000000..bf472f35
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121201673795.png differ
diff --git a/docs/troubleshooting/assets/20250430121201908772.png b/docs/troubleshooting/assets/20250430121201908772.png
new file mode 100644
index 00000000..846252e9
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121201908772.png differ
diff --git a/docs/troubleshooting/assets/20250430121202201523.png b/docs/troubleshooting/assets/20250430121202201523.png
new file mode 100644
index 00000000..17fbd37d
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121202201523.png differ
diff --git a/docs/troubleshooting/assets/20250430121202456192.png b/docs/troubleshooting/assets/20250430121202456192.png
new file mode 100644
index 00000000..33431ae6
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121202456192.png differ
diff --git a/docs/troubleshooting/assets/20250430121202663162.png b/docs/troubleshooting/assets/20250430121202663162.png
new file mode 100644
index 00000000..21e16122
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121202663162.png differ
diff --git a/docs/troubleshooting/assets/20250430121202861692.png b/docs/troubleshooting/assets/20250430121202861692.png
new file mode 100644
index 00000000..bdeefbcf
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121202861692.png differ
diff --git a/docs/troubleshooting/assets/20250430121204990541.png b/docs/troubleshooting/assets/20250430121204990541.png
new file mode 100644
index 00000000..e812f488
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121204990541.png differ
diff --git a/docs/troubleshooting/assets/20250430121205509269.png b/docs/troubleshooting/assets/20250430121205509269.png
new file mode 100644
index 00000000..c99e3a90
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121205509269.png differ
diff --git a/docs/troubleshooting/assets/20250430121205798445.png b/docs/troubleshooting/assets/20250430121205798445.png
new file mode 100644
index 00000000..1250a9ab
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121205798445.png differ
diff --git a/docs/troubleshooting/assets/20250430121206162085.png b/docs/troubleshooting/assets/20250430121206162085.png
new file mode 100644
index 00000000..698bcf4c
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121206162085.png differ
diff --git a/docs/troubleshooting/assets/20250430121225466053.png b/docs/troubleshooting/assets/20250430121225466053.png
new file mode 100644
index 00000000..1eb06dd7
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121225466053.png differ
diff --git a/docs/troubleshooting/assets/20250430121225764598.png b/docs/troubleshooting/assets/20250430121225764598.png
new file mode 100644
index 00000000..19fbaa50
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121225764598.png differ
diff --git a/docs/troubleshooting/assets/20250430121226481647.png b/docs/troubleshooting/assets/20250430121226481647.png
new file mode 100644
index 00000000..a225c27c
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121226481647.png differ
diff --git a/docs/troubleshooting/assets/20250430121226777130.png b/docs/troubleshooting/assets/20250430121226777130.png
new file mode 100644
index 00000000..0570f83e
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121226777130.png differ
diff --git a/docs/troubleshooting/assets/20250430121227109718.png b/docs/troubleshooting/assets/20250430121227109718.png
new file mode 100644
index 00000000..50d38f91
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121227109718.png differ
diff --git a/docs/troubleshooting/assets/20250430121227744579.png b/docs/troubleshooting/assets/20250430121227744579.png
new file mode 100644
index 00000000..c0805b1b
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121227744579.png differ
diff --git a/docs/troubleshooting/assets/20250430121227989568.png b/docs/troubleshooting/assets/20250430121227989568.png
new file mode 100644
index 00000000..d867215f
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121227989568.png differ
diff --git a/docs/troubleshooting/assets/20250430121235746050.png b/docs/troubleshooting/assets/20250430121235746050.png
new file mode 100644
index 00000000..a36f85d6
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121235746050.png differ
diff --git a/docs/troubleshooting/assets/20250430121235981602.png b/docs/troubleshooting/assets/20250430121235981602.png
new file mode 100644
index 00000000..4cad9ef1
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121235981602.png differ
diff --git a/docs/troubleshooting/assets/20250430121236782215.png b/docs/troubleshooting/assets/20250430121236782215.png
new file mode 100644
index 00000000..32687c0e
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121236782215.png differ
diff --git a/docs/troubleshooting/assets/20250430121236976235.png b/docs/troubleshooting/assets/20250430121236976235.png
new file mode 100644
index 00000000..c30f3a04
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121236976235.png differ
diff --git a/docs/troubleshooting/assets/20250430121237764753.png b/docs/troubleshooting/assets/20250430121237764753.png
new file mode 100644
index 00000000..d59a9b45
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121237764753.png differ
diff --git a/docs/troubleshooting/assets/20250430121238081846.png b/docs/troubleshooting/assets/20250430121238081846.png
new file mode 100644
index 00000000..fceb5cbb
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121238081846.png differ
diff --git a/docs/troubleshooting/assets/20250430121238384085.png b/docs/troubleshooting/assets/20250430121238384085.png
new file mode 100644
index 00000000..ce03d114
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121238384085.png differ
diff --git a/docs/troubleshooting/assets/20250430121238656194.png b/docs/troubleshooting/assets/20250430121238656194.png
new file mode 100644
index 00000000..8c5bda6c
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121238656194.png differ
diff --git a/docs/troubleshooting/assets/20250430121245553425.png b/docs/troubleshooting/assets/20250430121245553425.png
new file mode 100644
index 00000000..f044fb54
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121245553425.png differ
diff --git a/docs/troubleshooting/assets/20250430121246143405.png b/docs/troubleshooting/assets/20250430121246143405.png
new file mode 100644
index 00000000..491e241f
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121246143405.png differ
diff --git a/docs/troubleshooting/assets/20250430121246510364.png b/docs/troubleshooting/assets/20250430121246510364.png
new file mode 100644
index 00000000..f01af0c9
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121246510364.png differ
diff --git a/docs/troubleshooting/assets/20250430121247111572.png b/docs/troubleshooting/assets/20250430121247111572.png
new file mode 100644
index 00000000..301309a9
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121247111572.png differ
diff --git a/docs/troubleshooting/assets/20250430121247467739.png b/docs/troubleshooting/assets/20250430121247467739.png
new file mode 100644
index 00000000..6aad86bd
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121247467739.png differ
diff --git a/docs/troubleshooting/assets/20250430121251986970.png b/docs/troubleshooting/assets/20250430121251986970.png
new file mode 100644
index 00000000..30864a76
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121251986970.png differ
diff --git a/docs/troubleshooting/assets/20250430121253789974.png b/docs/troubleshooting/assets/20250430121253789974.png
new file mode 100644
index 00000000..79f871a9
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121253789974.png differ
diff --git a/docs/troubleshooting/assets/20250430121254079048.png b/docs/troubleshooting/assets/20250430121254079048.png
new file mode 100644
index 00000000..f4430bb8
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121254079048.png differ
diff --git a/docs/troubleshooting/assets/20250430121254348087.png b/docs/troubleshooting/assets/20250430121254348087.png
new file mode 100644
index 00000000..33addde8
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121254348087.png differ
diff --git a/docs/troubleshooting/assets/20250430121254635672.png b/docs/troubleshooting/assets/20250430121254635672.png
new file mode 100644
index 00000000..72119b34
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121254635672.png differ
diff --git a/docs/troubleshooting/assets/20250430121255479960.png b/docs/troubleshooting/assets/20250430121255479960.png
new file mode 100644
index 00000000..07f50a54
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121255479960.png differ
diff --git a/docs/troubleshooting/assets/20250430121255810538.png b/docs/troubleshooting/assets/20250430121255810538.png
new file mode 100644
index 00000000..a6f68163
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121255810538.png differ
diff --git a/docs/troubleshooting/assets/20250430121256121119.png b/docs/troubleshooting/assets/20250430121256121119.png
new file mode 100644
index 00000000..833c44ab
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121256121119.png differ
diff --git a/docs/troubleshooting/assets/20250430121258715184.png b/docs/troubleshooting/assets/20250430121258715184.png
new file mode 100644
index 00000000..6e4c9c09
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121258715184.png differ
diff --git a/docs/troubleshooting/assets/20250430121259325933.png b/docs/troubleshooting/assets/20250430121259325933.png
new file mode 100644
index 00000000..6a4d74de
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121259325933.png differ
diff --git a/docs/troubleshooting/assets/20250430121301671136.png b/docs/troubleshooting/assets/20250430121301671136.png
new file mode 100644
index 00000000..3ec4717f
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121301671136.png differ
diff --git a/docs/troubleshooting/assets/20250430121302032059.png b/docs/troubleshooting/assets/20250430121302032059.png
new file mode 100644
index 00000000..ef043508
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121302032059.png differ
diff --git a/docs/troubleshooting/assets/20250430121302300256.png b/docs/troubleshooting/assets/20250430121302300256.png
new file mode 100644
index 00000000..b97968ba
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121302300256.png differ
diff --git a/docs/troubleshooting/assets/20250430121307457486.png b/docs/troubleshooting/assets/20250430121307457486.png
new file mode 100644
index 00000000..33d22429
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121307457486.png differ
diff --git a/docs/troubleshooting/assets/20250430121311458158.png b/docs/troubleshooting/assets/20250430121311458158.png
new file mode 100644
index 00000000..4727fc17
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121311458158.png differ
diff --git a/docs/troubleshooting/assets/20250430121311730523.png b/docs/troubleshooting/assets/20250430121311730523.png
new file mode 100644
index 00000000..71d10043
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121311730523.png differ
diff --git a/docs/troubleshooting/assets/20250430121312243075.png b/docs/troubleshooting/assets/20250430121312243075.png
new file mode 100644
index 00000000..8aeb224c
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121312243075.png differ
diff --git a/docs/troubleshooting/assets/20250430121312626400.png b/docs/troubleshooting/assets/20250430121312626400.png
new file mode 100644
index 00000000..42d102d9
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121312626400.png differ
diff --git a/docs/troubleshooting/assets/20250430121312919242.png b/docs/troubleshooting/assets/20250430121312919242.png
new file mode 100644
index 00000000..c64a8ce1
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121312919242.png differ
diff --git a/docs/troubleshooting/assets/20250430121313117339.png b/docs/troubleshooting/assets/20250430121313117339.png
new file mode 100644
index 00000000..4340eaa8
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121313117339.png differ
diff --git a/docs/troubleshooting/assets/20250430121313453827.png b/docs/troubleshooting/assets/20250430121313453827.png
new file mode 100644
index 00000000..9bf36d3c
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121313453827.png differ
diff --git a/docs/troubleshooting/assets/20250430121329008679.png b/docs/troubleshooting/assets/20250430121329008679.png
new file mode 100644
index 00000000..77f0bc5e
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121329008679.png differ
diff --git a/docs/troubleshooting/assets/20250430121329460301.png b/docs/troubleshooting/assets/20250430121329460301.png
new file mode 100644
index 00000000..ec470a63
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121329460301.png differ
diff --git a/docs/troubleshooting/assets/20250430121344371643.png b/docs/troubleshooting/assets/20250430121344371643.png
new file mode 100644
index 00000000..32687c0e
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121344371643.png differ
diff --git a/docs/troubleshooting/assets/20250430121344599814.png b/docs/troubleshooting/assets/20250430121344599814.png
new file mode 100644
index 00000000..54eb82ea
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121344599814.png differ
diff --git a/docs/troubleshooting/assets/20250430121344826995.png b/docs/troubleshooting/assets/20250430121344826995.png
new file mode 100644
index 00000000..6a2ae44e
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121344826995.png differ
diff --git a/docs/troubleshooting/assets/20250430121345698106.png b/docs/troubleshooting/assets/20250430121345698106.png
new file mode 100644
index 00000000..32687c0e
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121345698106.png differ
diff --git a/docs/troubleshooting/assets/20250430121345966687.png b/docs/troubleshooting/assets/20250430121345966687.png
new file mode 100644
index 00000000..175639d8
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121345966687.png differ
diff --git a/docs/troubleshooting/assets/20250430121353111041.png b/docs/troubleshooting/assets/20250430121353111041.png
new file mode 100644
index 00000000..48705827
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121353111041.png differ
diff --git a/docs/troubleshooting/assets/20250430121353323352.png b/docs/troubleshooting/assets/20250430121353323352.png
new file mode 100644
index 00000000..b38450fc
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121353323352.png differ
diff --git a/docs/troubleshooting/assets/20250430121353635504.png b/docs/troubleshooting/assets/20250430121353635504.png
new file mode 100644
index 00000000..58555b33
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121353635504.png differ
diff --git a/docs/troubleshooting/assets/20250430121353926967.gif b/docs/troubleshooting/assets/20250430121353926967.gif
new file mode 100644
index 00000000..5c1cacd2
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121353926967.gif differ
diff --git a/docs/troubleshooting/assets/20250430121356207178.png b/docs/troubleshooting/assets/20250430121356207178.png
new file mode 100644
index 00000000..7437af2e
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121356207178.png differ
diff --git a/docs/troubleshooting/assets/20250430121356535681.png b/docs/troubleshooting/assets/20250430121356535681.png
new file mode 100644
index 00000000..f131dd9f
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121356535681.png differ
diff --git a/docs/troubleshooting/assets/20250430121358370953.png b/docs/troubleshooting/assets/20250430121358370953.png
new file mode 100644
index 00000000..df574029
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121358370953.png differ
diff --git a/docs/troubleshooting/assets/20250430121405271522.png b/docs/troubleshooting/assets/20250430121405271522.png
new file mode 100644
index 00000000..73e3a550
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121405271522.png differ
diff --git a/docs/troubleshooting/assets/20250430121405587477.png b/docs/troubleshooting/assets/20250430121405587477.png
new file mode 100644
index 00000000..e40d081c
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121405587477.png differ
diff --git a/docs/troubleshooting/assets/20250430121405921022.png b/docs/troubleshooting/assets/20250430121405921022.png
new file mode 100644
index 00000000..86a3dfcb
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121405921022.png differ
diff --git a/docs/troubleshooting/assets/20250430121454943811.png b/docs/troubleshooting/assets/20250430121454943811.png
new file mode 100644
index 00000000..6a4d74de
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121454943811.png differ
diff --git a/docs/troubleshooting/assets/20250430121520677214.gif b/docs/troubleshooting/assets/20250430121520677214.gif
new file mode 100644
index 00000000..bfcc8f80
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121520677214.gif differ
diff --git a/docs/troubleshooting/assets/20250430121520979751.gif b/docs/troubleshooting/assets/20250430121520979751.gif
new file mode 100644
index 00000000..0119c719
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121520979751.gif differ
diff --git a/docs/troubleshooting/assets/20250430121526027709.png b/docs/troubleshooting/assets/20250430121526027709.png
new file mode 100644
index 00000000..3413e547
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121526027709.png differ
diff --git a/docs/troubleshooting/assets/20250430121526232282.png b/docs/troubleshooting/assets/20250430121526232282.png
new file mode 100644
index 00000000..67e25e97
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121526232282.png differ
diff --git a/docs/troubleshooting/assets/20250430121526436202.png b/docs/troubleshooting/assets/20250430121526436202.png
new file mode 100644
index 00000000..ac72d681
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121526436202.png differ
diff --git a/docs/troubleshooting/assets/20250430121527145863.png b/docs/troubleshooting/assets/20250430121527145863.png
new file mode 100644
index 00000000..f1f7f9b0
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121527145863.png differ
diff --git a/docs/troubleshooting/assets/20250430121527462964.png b/docs/troubleshooting/assets/20250430121527462964.png
new file mode 100644
index 00000000..95091b12
Binary files /dev/null and b/docs/troubleshooting/assets/20250430121527462964.png differ
diff --git a/docs/troubleshooting/authentication/error_in_verify_sms.md b/docs/troubleshooting/authentication/error_in_verify_sms.md
new file mode 100644
index 00000000..0bb05c56
--- /dev/null
+++ b/docs/troubleshooting/authentication/error_in_verify_sms.md
@@ -0,0 +1,29 @@
+---
+keywords: ['error', 'verify']
+slug: /troubleshooting/authentication/error-in-verify-sms
+title: Error in Verify SMS
+---
+
+# Error in Verify SMS
+
+This error occurs during the SMS authorization verification process in FlutterFlow, typically on the page where the user enters the confirmation code. A common error message is:
+
+**SMS code field must be provided when verifying SMS code**
+
+## Common Cause
+
+This issue is often caused by a mismatch in the name of the `TextField` widget used to capture the SMS code. This can happen if the widget or page was duplicated and the widget name was not updated accordingly. The verification action depends on the correct widget name to retrieve the code.
+
+## How to Resolve
+
+Follow these steps to fix the error:
+
+1. **Check the `TextField` Widget Name:**
+ - Open the page where users enter the SMS code.
+ - Select the `TextField` widget used to capture the SMS code.
+ - Ensure that its widget name matches the expected input field (e.g., `smsCode`).
+
+2. **Rename the Widget (If Necessary):**
+ - If the widget name is incorrect or was duplicated from another page, rename it to the correct field name expected by the action.
+ - Save your changes and retest the verification process.
+
diff --git a/docs/troubleshooting/authentication/fix-google-sign-in-web.md b/docs/troubleshooting/authentication/fix-google-sign-in-web.md
new file mode 100644
index 00000000..b40c3018
--- /dev/null
+++ b/docs/troubleshooting/authentication/fix-google-sign-in-web.md
@@ -0,0 +1,58 @@
+---
+keywords: ['google sign-in', 'authentication', 'firebase', 'web', 'run mode', 'test mode']
+slug: /troubleshooting/authentication/google-signin-run-test-web
+title: Enable Google Sign-In for Web, Run Mode, and Test Mode
+---
+
+# Enable Google Sign-In for Web, Run Mode, and Test Mode
+
+Google Sign-In and other social authentication methods (e.g., Facebook, Microsoft) may not work in **Run/Test mode** or your **published web app** unless your domain is properly authorized in Firebase.
+
+Firebase enforces domain restrictions for security when handling OAuth-based sign-ins.
+
+:::info[Prerequisites]
+- A Firebase project connected to your FlutterFlow app.
+- Social authentication (e.g., Google, Facebook, Microsoft) already set up.
+- Access to the Firebase Console with editor or owner permissions.
+:::
+
+## Authorize Your Domain in Firebase
+
+1. **Open the Firebase Console**
+ - Visit [Firebase Console](https://console.firebase.google.com) and select your project.
+
+2. **Go to Authentication Settings**
+ - Navigate to **Authentication > Settings**.
+ - Scroll to the **Authorized Domains** section.
+
+3. **Add Your Required Domains**
+ - Click **Add Domain** and input the relevant domains:
+
+ - For **Run Mode**:
+ ```text
+ app.flutterflow.io
+ ```
+
+ - For **Published Web App** (hosted on FlutterFlow):
+ ```text
+ yourapp.flutterflow.app
+ ```
+
+ - For **Test Mode Debug Sessions**:
+ - Copy the domain shown in the "Known Issues" section in FlutterFlow or from the test run browser URL.
+
+ 
+
+ 
+
+:::tip
+If Google Sign-In or other auth methods fail in Run/Test mode, it's often because the test domain hasn’t been added to Firebase’s authorized domains list.
+:::
+
+:::note
+- Firebase blocks sign-in attempts from **unauthorized domains** for security.
+- If your app uses **multiple environments** (e.g., staging, test, production), be sure to add all relevant domains.
+:::
+
+
+Once your domains are added and saved in Firebase, social sign-ins like Google will work correctly in all deployment modes in FlutterFlow.
diff --git a/docs/troubleshooting/authentication/fix-sms-code-verification-errors.md b/docs/troubleshooting/authentication/fix-sms-code-verification-errors.md
new file mode 100644
index 00000000..48efacf9
--- /dev/null
+++ b/docs/troubleshooting/authentication/fix-sms-code-verification-errors.md
@@ -0,0 +1,46 @@
+---
+keywords: ['sms', 'verification', 'text field']
+slug: /troubleshooting/authentication/fix-sms-code-verification-errors
+title: Fix SMS Code Verification Errors
+---
+
+# Fix SMS Code Verification Errors
+
+During the SMS verification process, you may encounter the following error:
+
+ ```text
+ SMS code field must be provided when verifying SMS code
+ ```
+
+This article explains the reason behind this issue and how to resolve it by reviewing the widget configuration.
+
+This error typically occurs when the **TextField widget name** used for inputting the SMS code does not match the expected field in the **Verify SMS Code** action.
+
+This situation is common when duplicating pages or widgets, as the new instance may retain a different name.
+
+:::info[Prerequisites]
+Ensure you have already set up Firebase Authentication and added the necessary phone authentication flows to your app.
+:::
+
+Follow the steps below to resolve the issue:
+
+1. **Locate the SMS Input Field**
+
+ - Open the page where the user is expected to enter the SMS verification code.
+ - Select the **TextField** widget used for the input.
+
+2. **Check the Widget Name**
+
+ - In the widget properties panel, verify that the name is set to something meaningful like `smsCode`.
+
+3. **Rename if Necessary**
+
+ - If the name does not match what is referenced in your Verify SMS Code action, rename it accordingly (e.g., `smsCode`).
+
+4. **Test the Verification Flow**
+
+ - Save your changes and run the app to confirm that the error no longer appears.
+
+ :::warning
+ If the field name used in the Verify SMS Code action does not match the TextField widget name exactly, the verification process will fail. This includes case sensitivity.
+ :::
\ No newline at end of file
diff --git a/docs/troubleshooting/authentication/google-or-phone-authentication-on-real-devices.md b/docs/troubleshooting/authentication/google-or-phone-authentication-on-real-devices.md
new file mode 100644
index 00000000..16506455
--- /dev/null
+++ b/docs/troubleshooting/authentication/google-or-phone-authentication-on-real-devices.md
@@ -0,0 +1,47 @@
+---
+keywords: ['authentication', 'firebase', 'sha1', 'apk', 'real device']
+slug: troubleshooting/authentication/google-or-phone-authentication-on-real-devices
+title: Google or Phone Authentication on Real Devices (SHA Key Issue)
+---
+
+# Fix Google or Phone Authentication on Real Devices (SHA Key Issue)
+
+When testing APKs downloaded from FlutterFlow, you may encounter issues with Google sign-in or phone authentication failing on real Android devices. This is often caused by missing **SHA-1** and **SHA-256** keys in your Firebase configuration.
+
+This guide explains how to manually generate and add the required keys to Firebase to resolve the issue.
+
+When downloading an APK from FlutterFlow’s **Source Code** menu for testing purposes, the associated SHA keys may not be auto-generated.
+
+Firebase uses these keys to authenticate users with services like **Google Sign-In** or **Phone Number Authentication**. If they are missing, authentication will fail during testing or production use.
+
+:::info[Prerequisites]
+- Ensure you have already connected your FlutterFlow project to Firebase.
+- You must have downloaded the APK from FlutterFlow’s **Source Code** tab.
+:::
+
+Follow the steps below to resolve the error:
+
+1. **Download the APK**
+ - In FlutterFlow, go to the **Source Code** tab.
+ - Select your project and download the APK to your local machine.
+
+2. **Generate SHA-1 and SHA-256 Keys**
+
+ - Open a terminal or command prompt.
+ - Navigate to the directory where the APK is saved.
+ - Run the following command to extract SHA keys:
+
+ ```bash
+ keytool -printcert -jarfile app.apk
+ ```
+
+ This will output both the SHA-1 and SHA-256 fingerprint values.
+
+3. **Add Keys to Firebase**
+ - Go to the Firebase Console.
+ - Select your project.
+ - Click the gear icon > Project settings.
+ - Under Your Apps, select your Android app.
+ - Add the SHA-1 and SHA-256 keys in the respective fields.
+
+ Without the correct SHA keys, Firebase Authentication (Google, Phone) will not work on real Android devices.
\ No newline at end of file
diff --git a/docs/troubleshooting/authentication/resolve-firebase-sign-in-email-configuration.md b/docs/troubleshooting/authentication/resolve-firebase-sign-in-email-configuration.md
new file mode 100644
index 00000000..b740961a
--- /dev/null
+++ b/docs/troubleshooting/authentication/resolve-firebase-sign-in-email-configuration.md
@@ -0,0 +1,31 @@
+---
+keywords: ['firebase', 'configuration', 'troubleshooting']
+slug: /troubleshooting/authentication/resolve-firebase-sign-in-email-configuration
+title: Enable Email Sign-In to Resolve Firebase Authentication Issues
+---
+
+# Enable Email Sign-In to Resolve Firebase Authentication Issues
+
+If you see the following error:
+
+ ```text
+ Could not sign in as firebase@flutterflow.io to your Firebase project. Make sure "Email Sign-In" is turned on for your Firebase project, and try again.
+ ```
+
+Here’s how to resolve it:
+
+1. **Enable Email Sign-In in Firebase Console**
+ Go to **[Firebase Console](https://console.firebase.google.com)**, select your project, then navigate to: Authentication → Sign-in method → Email/Password
+
+ Ensure that the **Email/Password** sign-in provider is enabled.
+
+2. **Verify Auth Configuration**
+ Make sure you’ve properly set up Firebase Authentication in your project settings within FlutterFlow.
+
+3. **Check Service Account Permissions**
+
+ Ensure the **FlutterFlow service account** (`firebase@flutterflow.io`) has sufficient permissions to authenticate with your Firebase project.
+
+ By completing these steps, you should be able to sign in with the `firebase@flutterflow.io` account and continue building your project in FlutterFlow without authentication issues.
+
+
diff --git a/docs/troubleshooting/backend/backend_query_not_returning_results_despite_existing_data.md b/docs/troubleshooting/backend/backend_query_not_returning_results_despite_existing_data.md
new file mode 100644
index 00000000..a6e72fe9
--- /dev/null
+++ b/docs/troubleshooting/backend/backend_query_not_returning_results_despite_existing_data.md
@@ -0,0 +1,75 @@
+---
+keywords: ['database', 'query', 'though']
+slug: /troubleshooting/backend/backend-query-not-returning-results-despite-existing-data
+title: Backend Query Not Returning Results Despite Existing Data
+---
+
+# Backend Query Not Returning Results Despite Existing Data
+
+If your backend query is not returning results even though your Firestore database contains data, it may be due to one of several common misconfigurations.
+
+---
+
+:::info[Prerequisites]
+- Ensure your Firebase project is properly connected to FlutterFlow.
+- Your Firestore rules are deployed for all relevant collections.
+- Your data includes all required fields referenced in your queries.
+:::
+
+---
+
+## Common Causes and Fixes
+
+### Missing or Incorrect Firestore Rules
+
+If the collection being queried does not have the correct rules deployed, data will not be returned. This often happens when new collections are added but rules are not updated or deployed.
+
+
+
+:::warning
+Check your Firestore rules for the collection being queried. Make sure rules are deployed and allow read access for your use case.
+:::
+
+---
+
+### "Ignore Empty Filter Values" Option with Missing or Null Data
+
+If the **Ignore Empty Filter Values** option is enabled and documents are missing the field (or the field is `null`), those documents will be ignored.
+
+For example, in the following setup, if any document does not contain the `created_time` field or if that field is `null`, it will not be returned in the query results.
+
+
+
+To resolve:
+
+- Check whether **Ignore Empty Filter Values** is enabled.
+- Confirm that all documents include the filtered field with valid values.
+
+---
+
+### Using Ordering on a Field That Is Null or Missing
+
+If a query orders results by a field (e.g., `signinDate`), any document that does not contain this field or has a `null` value will be ignored.
+
+In the example below:
+
+- If no documents are returned, none of them have `signinDate` or the value is `null`.
+- If only some documents are returned, the others likely have missing or null `signinDate` fields.
+
+
+
+:::tip
+Always ensure the field used for ordering exists and has non-null values in all documents.
+:::
+
+---
+
+### API Responses Are Empty in the Deployed App
+
+If API queries return results in **test mode** but not in the **deployed app**, it is likely due to CORS (Cross-Origin Resource Sharing) restrictions.
+
+Check the browser console for CORS-related errors.
+
+
+
+
diff --git a/docs/troubleshooting/deployment/fix-apk-code-download-permissions.md b/docs/troubleshooting/deployment/fix-apk-code-download-permissions.md
new file mode 100644
index 00000000..b4b50793
--- /dev/null
+++ b/docs/troubleshooting/deployment/fix-apk-code-download-permissions.md
@@ -0,0 +1,48 @@
+---
+keywords: ['permissions', 'download', 'code']
+slug: /troubleshooting/deployment/fix-apk-code-download-permissions
+title: Fix Download Issues for APK or Code in FlutterFlow
+---
+
+# Fix Download Issues for APK or Code in FlutterFlow
+
+If you're unable to download the APK or source code from FlutterFlow, the issue is likely related to browser permissions or unresolved project errors.
+
+:::info[Prerequisites]
+- You must be logged in to your FlutterFlow account.
+- Your project must not contain critical build errors.
+:::
+
+Follow the steps below to resolve this issue:
+
+1. **Enable Pop-Ups and Redirects**
+
+ A common cause of failed downloads is blocked pop-ups in your browser.
+
+ To enable them in **Google Chrome**:
+
+ 1. Click the **lock icon** in the address bar while on the FlutterFlow site.
+
+ 2. In the dropdown:
+ - Set **Pop-ups and redirects** to **Allow**.
+ - Optionally, set **Clipboard** to **Allow** to enable copy-paste features.
+
+ 3. Attempt the download again.
+
+ 
+
+ :::tip
+ Downloaded files are saved to your browser’s default **Downloads** folder.
+ :::
+
+2. **Check for Project Build Errors**
+
+ FlutterFlow blocks downloads if there are unresolved project issues.
+
+ To resolve them:
+
+ 1. Look for a red dot on the **Project Issues** panel in the bottom toolbar.
+ 2. Open the panel and review the listed issues.
+ 3. Fix all errors before retrying the download.
+
+ 
diff --git a/docs/troubleshooting/deployment/fix-codemagic-format-exception-build-error.md b/docs/troubleshooting/deployment/fix-codemagic-format-exception-build-error.md
new file mode 100644
index 00000000..18a1db4c
--- /dev/null
+++ b/docs/troubleshooting/deployment/fix-codemagic-format-exception-build-error.md
@@ -0,0 +1,33 @@
+---
+keywords: ['error', 'build', 'format']
+slug: /troubleshooting/deployment/fix-codemagic-format-exception-build-error
+title: Fix Codemagic Format Exception Build Error
+---
+
+# Fix Codemagic Format Exception Build Error
+
+When triggering a build through Codemagic from a connected GitHub repository, you may encounter the following error:
+
+ ```text
+ Codemagic build error: Format Exception: Could not find End of Central Directory Record
+ ```
+ This issue typically occurs when the **branch name** is entered incorrectly—especially if you include the repository name in the input field.
+
+:::info[Prerequisites]
+- You must have already connected your GitHub repository to your FlutterFlow project.
+- You should be using Codemagic for automated deployment.
+:::
+
+To fix this issue, ensure that you only enter the **branch name**, not the full path with the repository name.
+
+:::tip
+Use only the branch name. Avoid formats like `repo-name/branch-name`.
+:::
+
+Incorrect input:
+
+ 
+
+Correct input:
+
+ 
\ No newline at end of file
diff --git a/docs/troubleshooting/deployment/fix-mobile-build-error-no-decoder-for-image-format.md b/docs/troubleshooting/deployment/fix-mobile-build-error-no-decoder-for-image-format.md
new file mode 100644
index 00000000..3fdd2d62
--- /dev/null
+++ b/docs/troubleshooting/deployment/fix-mobile-build-error-no-decoder-for-image-format.md
@@ -0,0 +1,42 @@
+---
+keywords: ['error', 'deployment', 'build', 'no decoder for image format', 'app icon']
+slug: /troubleshooting/deployment/fix-mobile-build-error-no-decoder-for-image-format
+title: Fix Mobile Build Error No Decoder for Image Format
+---
+
+# Fix Mobile Build Error No Decoder for Image Format
+
+This error occurs when the mobile build process fails because the app icon (or another image asset) is in a format that the build tools cannot decode.
+
+In FlutterFlow, it most commonly happens when:
+
+- The app icon is uploaded as **SVG** (unsupported for builds).
+- The PNG icon has **transparency** and you are building for **iOS**.
+- The file format is not **PNG** or **JPEG**.
+- The image is very large or has an unusual color profile.
+
+Example error:
+
+ ```text
+ No decoder for image format
+ ```
+
+ 
+
+Follow the steps below to fix this error:
+
+ 1. Go to **Settings > App Assets** in your FlutterFlow project.
+ 2. Replace the current **App Icon** and **Splash Image** with supported formats.
+ 3. Make sure that:
+ - The file format is **PNG** or **JPEG** (SVG and WebP are not supported for app icons).
+ - The resolution is **1024×1024 pixels** or smaller.
+ - PNG icons for iOS do **not** have transparency.
+ 4. Save and rebuild your project.
+
+:::info[Recommended Guidelines]
+- Use **PNG** or **JPEG** formats only.
+- Use an icon of at least **1024×1024 pixels**.
+- Avoid transparent PNGs for iOS builds.
+- Keep file size reasonable (under 1 MB is recommended).
+- Follow [platform-specific icon design guidelines](https://developer.apple.com/design/human-interface-guidelines/app-icons) and [Android icon guidelines](https://developer.android.com/develop/ui/views/launch/icon_design).
+:::
diff --git a/docs/troubleshooting/deployment/install-java-runtime-missing-error.md b/docs/troubleshooting/deployment/install-java-runtime-missing-error.md
new file mode 100644
index 00000000..555eda3c
--- /dev/null
+++ b/docs/troubleshooting/deployment/install-java-runtime-missing-error.md
@@ -0,0 +1,30 @@
+---
+keywords: ['java', 'runtime', 'error']
+slug: /troubleshooting/deployment/install-java-runtime-missing-error
+title: Install Java Runtime Missing Error
+---
+
+# Fix Java Runtime Missing Error
+
+This error typically occurs when Java is not installed or configured properly on your system:
+
+ ```text
+ The operation couldn’t be completed. Unable to locate a Java Runtime.
+ ```
+
+ To resolve this, you need to install the Java Runtime Environment (JRE) appropriate for your operating system.
+
+## Steps to Install Java Runtime
+
+ 1. Go to the **[official Java download page](https://www.java.com/en/download/)**.
+ 2. Select your operating system and download the Java installer.
+ 3. Run the installer and follow the on-screen instructions.
+ 4. Restart your computer after installation.
+
+:::tip
+On **macOS**, if you continue to see this error, open **System Preferences > Java** to verify the installation, or run `java -version` in your terminal to confirm it's available.
+:::
+
+:::warning
+Make sure to download Java only from the **official Oracle Java website** to avoid security risks.
+:::
\ No newline at end of file
diff --git a/docs/troubleshooting/deployment/invalid-pem-private-key-error.md b/docs/troubleshooting/deployment/invalid-pem-private-key-error.md
new file mode 100644
index 00000000..540b32be
--- /dev/null
+++ b/docs/troubleshooting/deployment/invalid-pem-private-key-error.md
@@ -0,0 +1,41 @@
+---
+keywords: ['deployment', 'error', 'value']
+slug: /troubleshooting/deployment/invalid-pem-private-key-error
+title: Invalid PEM Private Key Error
+---
+
+# Invalid PEM Private Key Error
+
+When deploying to the App Store, you may encounter the following error in the console:
+
+ ```text
+ app-store-connect: error: argument --private-key: Provided value is not a valid PEM encoded private key
+ ```
+
+ This typically appears during the Fetch Signing Files step and may look like this:
+
+ ```text
+ Failed Step: Fetch Signing files usage: app-store-connect ...
+ error: argument --private-key: Provided value is not a valid PEM encoded private key
+ ```
+
+:::info[Prerequisites]
+An active Apple Developer account and a valid PEM-encoded private key file generated from your App Store Connect account.
+:::
+
+This error indicates that the private key provided is either invalid or incorrectly formatted. The App Store requires a valid PEM-encoded private key for deployment authentication.
+
+Follow the steps below to resolve the error:
+
+1. **Navigate to App Settings**
+
+ Go to **App Settings** > **Mobile Deployment** > **App Store**.
+
+2. **Re-upload Private Key**
+
+ - Re-upload a valid PEM-encoded private key.
+ - Ensure the file is not corrupted and follows the proper PEM format.
+
+ :::tip
+ If the App Store configuration has not been set up yet, refer to the deployment documentation for detailed setup steps.
+ :::
\ No newline at end of file
diff --git a/docs/troubleshooting/firebase/fix-cms-access-error-firebase-account.md b/docs/troubleshooting/firebase/fix-cms-access-error-firebase-account.md
new file mode 100644
index 00000000..909ea250
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-cms-access-error-firebase-account.md
@@ -0,0 +1,33 @@
+---
+keywords: ['firebase', 'error', 'content']
+slug: /troubleshooting/firebase/fix-cms-access-error-firebase-account
+title: Fix CMS Access Error with firebase@flutterflow.io Account
+---
+
+# Fix CMS Access Error with firebase@flutterflow.io Account
+
+This error occurs when the `firebase@flutterflow.io` service account cannot access your Firebase project through the CMS. This typically happens when multiple FlutterFlow projects are connected to the same Firebase project, resulting in authentication conflicts.
+
+:::info[Prerequisites]
+- Your FlutterFlow project must be integrated with Firebase.
+- You should have access to Firebase Console and Authentication settings.
+:::
+
+Follow the steps below to resolve the error:
+
+1. Open your **Firebase Console** and navigate to **Authentication > Users**.
+
+ 
+
+2. In the user list, search for the service account email:
+ `firebase@flutterflow.io`
+
+ 
+
+3. Select the account and remove it from the authentication table.
+
+4. Return to **CMS** in FlutterFlow and refresh the page.
+
+:::note
+This issue can occur when multiple FlutterFlow projects are connected to the same Firebase database. Each project attempts to manage content through the `firebase@flutterflow.io` service account, which can lead to permission conflicts. Remov
+:::
\ No newline at end of file
diff --git a/docs/troubleshooting/firebase/fix-firebase-android-package-name-mismatch.md b/docs/troubleshooting/firebase/fix-firebase-android-package-name-mismatch.md
new file mode 100644
index 00000000..141449e3
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-firebase-android-package-name-mismatch.md
@@ -0,0 +1,46 @@
+---
+keywords: ['firebase', 'android', 'error']
+slug: /troubleshooting/firebase/fix-firebase-android-package-name-mismatch
+title: Fix Firebase Android Package Name Mismatch
+---
+
+# Fix Firebase Android Package Name Mismatch
+
+This error occurs when the `package name` in your Firebase Android configuration file (`google-services.json`) does not match the package name defined in your FlutterFlow project settings.
+
+:::info[Prerequisites]
+Ensure you have created your Firebase project and downloaded the `google-services.json` file for your Android app.
+:::
+
+Follow the steps below to resolve the error:
+
+1. **Confirm Your FlutterFlow Package Name**
+
+ - In FlutterFlow, open your project.
+ - Navigate to **Settings > General > App Details**.
+ - Note the Android **Package Name** listed here.
+
+2. **Regenerate Firebase Config File**
+
+ - Go to the [Firebase Console](https://console.firebase.google.com/).
+ - Select your project.
+ - Navigate to **Project Settings > General**.
+ - In the **Your apps** section, click the Android app.
+ - Ensure the **package name** matches exactly with your FlutterFlow app.
+ - Download a new `google-services.json` file.
+
+3. **Upload Config File to FlutterFlow**
+
+ - In FlutterFlow, go to **Settings > Integrations > Firebase**.
+ - Upload the new `google-services.json` file.
+ - Click **Save & Continue**.
+
+ :::warning
+ If the package names do not match exactly — including case sensitivity and dots — Firebase services may not work correctly in your Android build.
+ :::
+
+If reconfiguring the project does not solve the issue:
+
+ - Remove the existing Android app entry from Firebase.
+ - Re-add it with the correct package name.
+ - Download and re-upload the configuration file to FlutterFlow.
diff --git a/docs/troubleshooting/firebase/fix-firebase-project-not-configured.md b/docs/troubleshooting/firebase/fix-firebase-project-not-configured.md
new file mode 100644
index 00000000..743f68f4
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-firebase-project-not-configured.md
@@ -0,0 +1,29 @@
+---
+keywords: ['firebase', 'configuration', 'settings', 'cms', 'firestore']
+slug: /troubleshooting/firebase/fix-firebase-project-not-configured
+title: Fix Firebase Project Not Configured Error
+---
+
+# Fix Firebase Project Not Configured Error
+
+This guide explains how to resolve the **"Firebase project not configured"** error that may appear when using **Content Manager (CMS)** in FlutterFlow.
+
+
+
+This error typically occurs when the Firebase configuration is incomplete or the project has not been updated properly. As a result, FlutterFlow cannot access **Cloud Firestore**, and CMS features may stop working.
+
+:::info[Prerequisites]
+Ensure that:
+- Firebase is already connected under **Settings > Firebase**.
+- Your Firebase project includes **Firestore** and has the correct project ID.
+:::
+
+Follow these steps to refresh your Firebase connection and sync CMS:
+
+ 1. Open your FlutterFlow project.
+ 2. Go to **Settings > Firebase**.
+ 3. Make a minor, non-breaking change (e.g., toggle a field off and back on).
+ 4. Click **Save**.
+ 5. Return to **CMS** and try reloading the content.
+
+ This forces a refresh of the Firebase configuration without affecting your project design.
\ No newline at end of file
diff --git a/docs/troubleshooting/firebase/fix-firestore-index-deployment-errors.md b/docs/troubleshooting/firebase/fix-firestore-index-deployment-errors.md
new file mode 100644
index 00000000..0bdbee6e
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-firestore-index-deployment-errors.md
@@ -0,0 +1,47 @@
+---
+keywords: ['database', 'firestore', 'deploy']
+slug: /troubleshooting/firebase/fix-firestore-index-deployment-errors
+title: Fix Firestore Index Deployment Errors
+---
+
+# Fix Firestore Index Deployment Errors
+
+When adding or editing queries with filters in FlutterFlow, the platform prompts you to deploy Firestore indexes. These indexes are created in your connected Firebase project and are essential for query performance.
+
+
+
+:::info[Prerequisites]
+Before deploying indexes, review the **[Firestore Indexing Documentation](https://firebase.google.com/docs/firestore/query-data/indexing)** to understand how they work.
+:::
+
+If you're unable to deploy Firestore indexes, follow these steps:
+
+1. **Enable Email Sign-In**
+ Make sure **Email/Password** sign-in is enabled in your Firebase Authentication settings.
+ **[Enable email sign-in](https://firebase.google.com/docs/auth/web/start)**
+
+2. **Assign Required Firebase Permissions**
+ Add the following roles to `firebase@flutterflow.io` in your Firebase project:
+ - `Editor`
+ - `Cloud Functions Admin`
+ - `Service Account User`
+ [How to assign permissions](https://cloud.google.com/iam/docs/granting-roles)
+
+3. **Update Firebase Rules**
+ Confirm that your Firebase rules are correctly configured.
+ [Update Firebase rules](https://firebase.google.com/docs/rules)
+
+4. **Refresh and Clear Cache**
+ - Press `Ctrl + R` (or `Cmd + R`) to reload FlutterFlow.
+ - Clear your browser cache.
+ - Log out and log back into FlutterFlow.
+
+5. **Check Index Limits**
+ If you've reached the maximum number of Firestore indexes (usually 200), you'll need to delete unused ones:
+ - Open your Firebase project.
+ - Navigate to **Firestore Database > Indexes**.
+ - Look for any error messages or limits and remove unnecessary indexes if needed.
+
+ :::note
+ Whenever you modify, add, or remove queries in FlutterFlow, you may be prompted again to deploy updated indexes. Keeping your indexes up to date ensures efficient app performance.
+ :::
\ No newline at end of file
diff --git a/docs/troubleshooting/firebase/fix-firestore-rules-deployment-errors.md b/docs/troubleshooting/firebase/fix-firestore-rules-deployment-errors.md
new file mode 100644
index 00000000..88aceda7
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-firestore-rules-deployment-errors.md
@@ -0,0 +1,69 @@
+---
+keywords: ['database', 'firebase', 'permissions']
+slug: /troubleshooting/firebase/fix-firestore-rules-deployment-errors
+title: Fix Firestore Database Rules Deployment Errors
+---
+
+# Fix Firestore Database Rules Deployment Errors
+
+This guide outlines steps to resolve issues when deploying Firebase Firestore rules from FlutterFlow. These deployment errors are usually caused by missing configurations in your Firebase project.
+
+:::info[Prerequisites]
+Ensure you have connected your Firebase project to FlutterFlow and logged into the Firebase Console with the necessary permissions.
+:::
+
+Follow the steps below to fix deployment errors:
+
+1. Create a Firestore Database
+
+FlutterFlow cannot deploy rules unless a Firestore database has been created.
+
+- Open the [Firebase Console](https://console.firebase.google.com/).
+- Select your project.
+- Navigate to **Firestore Database** and click **Create Database**.
+
+
+
+**Video Reference**: Watch from 1:50 to 2:05 to see how to create the database.
+
+2. Assign Required Firebase Permissions
+
+Ensure the following roles are granted to `firebase@flutterflow.io`:
+
+- `Editor`
+- `Cloud Functions Admin`
+- `Service Account User`
+
+To verify or update permissions:
+
+- In the Firebase Console, go to **Project Settings > Users and Permissions**.
+- Confirm the required roles are assigned.
+
+
+
+
+
+
+
+3. Select a GCP Location
+
+Firestore requires a location to be set before rules can be deployed.
+
+- In Firebase Console, go to **Project Settings > General**.
+- Look for **Default GCP Resource Location**.
+- If it shows **Not yet selected**, click the pencil icon and select a location.
+
+
+
+:::tip
+Once the GCP location is set, it cannot be changed. Refer to the [GCP location guide](https://firebase.google.com/docs/projects/locations) for more information.
+:::
+
+**Final Check:**
+
+ After completing these steps:
+
+ - Return to FlutterFlow.
+ - Attempt to deploy your Firestore rules again.
+
+ If the issue persists, ensure all roles were saved correctly and the database is active.
\ No newline at end of file
diff --git a/docs/troubleshooting/firebase/fix-google-services-config-error-in-android-build.md b/docs/troubleshooting/firebase/fix-google-services-config-error-in-android-build.md
new file mode 100644
index 00000000..83fa1cc7
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-google-services-config-error-in-android-build.md
@@ -0,0 +1,47 @@
+---
+keywords: ['firebase', 'error', 'failed']
+slug: /troubleshooting/firebase/fix-google-services-config-error-in-android-build
+title: Fix Google Services Config Error in Android Build
+---
+
+# Fix Google Services Config Error in Android Build
+
+This article explains how to resolve the `processReleaseGoogleServices` error that can occur when deploying an Android app built with FlutterFlow.
+
+:::info[Prerequisites]
+Ensure your Firebase project is set up and you have access to the **google-services.json** file for your Android app.
+:::
+
+```bash
+FAILURE: Build failed with an exception.
+
+* What went wrong:
+Execution failed for task ':app:processReleaseGoogleServices'.
+> No matching client found for package name 'app.app.app'
+```
+
+This error typically occurs when the package name defined in your FlutterFlow project does not match the package name in your Firebase configuration file.
+
+Follow the steps below to resolve this error:
+
+1. **Open Firebase Settings in FlutterFlow**
+ In FlutterFlow, go to **Settings > Firebase**.
+
+2. **Regenerate Config Files**
+ - Click the **Regenerate Config Files** button.
+ - Enter the correct package name used in your project.
+ - Click **Generate File**.
+
+ 
+
+3. **Re-upload the Config File (If Needed)**
+ If not automatically updated, manually upload the new `google-services.json` file.
+
+ 
+
+4. **Rebuild and Deploy**
+ Run the build again to confirm the issue is resolved.
+
+:::warning
+Make sure the `package name` in Firebase matches **exactly** with the one in your FlutterFlow project — including case sensitivity and dot placement. Any mismatch will cause this build error.
+:::
\ No newline at end of file
diff --git a/docs/troubleshooting/firebase/fix-image-upload-failure-from-action.md b/docs/troubleshooting/firebase/fix-image-upload-failure-from-action.md
new file mode 100644
index 00000000..c576793d
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-image-upload-failure-from-action.md
@@ -0,0 +1,50 @@
+---
+keywords: ['storage', 'upload', 'image']
+slug: /troubleshooting/firebase/fix-image-upload-failure-from-action
+title: Fix Image Upload Failure from Action
+---
+
+# Fix Image Upload Failure from Action
+
+If image uploads are failing in your app when using the **Image Upload** action, the issue is likely due to a misconfigured Firebase Storage rule.
+
+Firebase requires authenticated access rules to allow uploading images. This guide walks through updating those rules to resolve the issue.
+
+:::info[Prerequisites]
+- You must have already connected your FlutterFlow project to Firebase.
+- Firebase Storage must be enabled in your Firebase Console.
+:::
+
+Follow the steps below to fix the image upload issue:
+
+1. **Open Firebase Storage Rules**
+
+ - Go to the **[Firebase Console](https://console.firebase.google.com)**.
+ - Select your project and open the **Storage** section.
+ - Click the **Rules** tab at the top.
+
+ 
+
+2. **Update Storage Rules**
+
+ - Replace the existing rules with the configuration below:
+
+ ```js
+ rules_version = '2';
+ service firebase.storage {
+ match /b/{bucket}/o {
+ match /{allPaths=**} {
+ allow read, write: if request.auth != null;
+ }
+ }
+ }
+ ```
+
+ 
+
+ - Click Publish to save the changes.
+
+3. **Re-upload Previous Media (Optional)**
+ If you had previously uploaded media before fixing the rules, re-uploading them may resolve lingering upload issues.
+
+ Make sure the rule change above does not conflict with your app's privacy or security requirements. Only allow `request.auth != null` if authenticated users should have upload access.
\ No newline at end of file
diff --git a/docs/troubleshooting/firebase/fix-photo-upload-to-content-manager.md b/docs/troubleshooting/firebase/fix-photo-upload-to-content-manager.md
new file mode 100644
index 00000000..3f023117
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-photo-upload-to-content-manager.md
@@ -0,0 +1,41 @@
+---
+keywords: ['content', 'upload', 'photo']
+slug: /troubleshooting/firebase/fix-photo-upload-to-content-manager
+title: Fix Photo Upload to Content Manager
+---
+
+# Fix Photo Upload to Content Manager
+
+By default, uploading images to the Content Manager is blocked due to restrictive Firebase Storage rules. You will need to update your Firebase Storage security rules to allow authenticated access.
+
+:::info[Prerequisites]
+Ensure you have set up Firebase integration for your FlutterFlow project.
+:::
+
+Follow these steps to enable image uploads:
+
+1. Open your FlutterFlow project.
+2. Navigate to **Settings & Integrations > Firebase**, then click **Open Firebase Console**.
+
+ 
+
+3. In the Firebase Console, go to **Storage > Rules**.
+
+ 
+
+4. Replace the existing rules with the following code:
+
+ ```js
+ rules_version = '2';
+ service firebase.storage {
+ match /b/{bucket}/o {
+ match /{allPaths=**} {
+ allow read, write: if request.auth != null;
+ }
+ }
+ }
+
+ ```
+
+5. Click Publish to apply the changes.
+Review your Firebase Storage rules carefully before deploying your app. Incorrect rules can expose your data to unauthorized access.
\ No newline at end of file
diff --git a/docs/troubleshooting/firebase/package_name_mismatch_in_firebase_config.md b/docs/troubleshooting/firebase/package_name_mismatch_in_firebase_config.md
new file mode 100644
index 00000000..931e450d
--- /dev/null
+++ b/docs/troubleshooting/firebase/package_name_mismatch_in_firebase_config.md
@@ -0,0 +1,28 @@
+---
+keywords: ['firebase', 'android', 'error']
+slug: /troubleshooting/firebase/package-name-mismatch-in-firebase-config
+title: Package Name Mismatch in Firebase Config
+---
+
+# Package Name Mismatch in Firebase Config
+
+This error occurs when the package name defined in your Firebase Android configuration does not match the package name defined in your FlutterFlow project. This mismatch prevents the app from connecting to Firebase services properly during builds or runtime.
+
+Follow these steps to resolve the mismatch:
+
+1. **Open your project** in **FlutterFlow**.
+2. Navigate to **Settings > Firebase**.
+3. Click **Regenerate Config Files**.
+4. Enter the correct package name that matches your app's actual package name.
+5. Click **Generate File**.
+
+If regenerating the config files does not resolve the issue:
+
+6. Reconfigure Firebase for your project:
+ - Go to the [Firebase Console](https://console.firebase.google.com/).
+ - Select your project.
+ - Ensure the Android app listed matches your app’s package name.
+ - If not, register a new Android app with the correct package name.
+ - Download the updated `google-services.json` file and upload it through **FlutterFlow > Settings > Firebase**.
+
+If you're still encountering the error after following these steps, please contact FlutterFlow Support via chat or email at **support@flutterflow.io**.
diff --git a/docs/troubleshooting/firebase/share-media-files-across-users.md b/docs/troubleshooting/firebase/share-media-files-across-users.md
new file mode 100644
index 00000000..701ffda4
--- /dev/null
+++ b/docs/troubleshooting/firebase/share-media-files-across-users.md
@@ -0,0 +1,46 @@
+---
+keywords: ['storage', 'users', 'upload']
+slug: /troubleshooting/firebase/share-media-files-across-users
+title: Share Media Files Across Users Using Firebase Storage
+---
+
+# Share Media Files Across Users Using Firebase Storage
+
+When one user uploads an image or file to Firebase Storage, you may want other users to be able to access the same file using shared parameters. By default, Firebase Storage applies CORS (Cross-Origin Resource Sharing) policies that may prevent files from being visible across users.
+
+This guide shows how to update your Firebase Storage CORS settings to allow all users to access shared files.
+
+:::info[Prerequisites]
+- Your FlutterFlow project must be integrated with Firebase.
+- You must have access to the **Google Cloud SDK** and the `gsutil` CLI tool.
+:::
+
+## Update Firebase Storage CORS Policy
+
+1. Install `gsutil` by following the official guide from Google:
+ - **[Install gsutil](https://cloud.google.com/storage/docs/gsutil_install)**
+
+2. Create a file named `cors.json` in your project directory with the following content:
+
+ ```json
+ [
+ {
+ "origin": ["*"],
+ "method": ["GET"],
+ "maxAgeSeconds": 3600
+ }
+ ]
+ ```
+
+3. Run the following command in your terminal to apply the new CORS settings:
+
+ ```js
+ gsutil cors set cors.json gs://your-project-id.appspot.com
+ ```
+
+ Replace `your-project-id` with your actual Firebase project ID.
+
+ Using `"origin": ["*"]` allows public access to your storage. For improved security, consider specifying only the domains used by your app.
+
+
+After applying these changes, media or file uploads by one user will be accessible to all users using the same reference path in Firebase Storage.
\ No newline at end of file
diff --git a/docs/troubleshooting/firebase/stripe-payment-error-cors-region-mismatch.md b/docs/troubleshooting/firebase/stripe-payment-error-cors-region-mismatch.md
new file mode 100644
index 00000000..9d79a9b0
--- /dev/null
+++ b/docs/troubleshooting/firebase/stripe-payment-error-cors-region-mismatch.md
@@ -0,0 +1,40 @@
+---
+keywords: ['error', 'firebase', 'unknown']
+slug: /troubleshooting/firebase/stripe-payment-error-cors-region-mismatch
+title: Resolve Stripe Payment Error Caused by CORS Region Mismatch
+---
+
+# Resolve Stripe Payment Error Caused by CORS Region Mismatch
+
+This article explains how to resolve the **"Unknown Error Occurred"** issue during Stripe payment actions, caused by a mismatch between the Cloud Functions region and the Firebase project region.
+
+- **Snackbar**: `Unknown Error Occurred`
+- **Console**:
+
+ ```text
+ Access to fetch at 'https://us-central1-[project].cloudfunctions.net/initStripeTestPayment'
+ from origin 'https://ff-debug-service-frontend-*.a.run.app' has been blocked by CORS policy:
+ Response to preflight request doesn't pass access control check:
+ Redirect is not allowed for a preflight request.
+ ```
+This error occurs when the Cloud Function is deployed in a region that does not match the region configured in your Firebase project. This region mismatch leads to a **CORS (Cross-Origin Resource Sharing)** error.
+
+Follow the steps below to resolve this error:
+
+1. **Open Firebase Settings**
+ In FlutterFlow, navigate to **Settings > Firebase**.
+ You can also open the command palette using `⌘+K` (macOS) or `Ctrl+K` (Windows) and search for "Firebase".
+2. **Set the Cloud Functions Region**
+ Click **Show Advanced Settings**.
+ In the **Cloud Functions Region** dropdown, select **[Default]** or match it with your Firebase region.
+ 
+3. **Delete Deployed Functions from Firebase**
+ Go to the Firebase Console and manually delete any previously deployed Cloud Functions.
+ 
+4. **Re-deploy Stripe Integration**
+ In FlutterFlow, re-deploy the Stripe integration after adjusting the region.
+ 
+
+ :::warning
+ Ensure that the Cloud Functions region set in FlutterFlow exactly matches the region configured in your Firebase project. Region mismatches will result in CORS errors during runtime.
+ :::
diff --git a/docs/troubleshooting/firebase/switch-firestore-to-native-mode.md b/docs/troubleshooting/firebase/switch-firestore-to-native-mode.md
new file mode 100644
index 00000000..6ca0bafe
--- /dev/null
+++ b/docs/troubleshooting/firebase/switch-firestore-to-native-mode.md
@@ -0,0 +1,35 @@
+---
+keywords: ['mode', 'firestore', 'datastore']
+slug: /troubleshooting/firebase/switch-firestore-to-native-mode
+title: Switch Firestore to Native Mode
+---
+
+# Switch Firestore to Native Mode
+
+To use `Cloud Firestore` with FlutterFlow, your database must be in `Native Mode`. If your project is currently using `Datastore Mode`, you will need to switch it to `Native Mode` through the Google Cloud Console.
+
+:::info[Prerequisites]
+- You must have a Firebase project already connected to your FlutterFlow app.
+- Your Firestore database must currently be in `Datastore Mode`.
+:::
+
+Follow the steps below to switch to Native Mode:
+
+1. **Open Google Cloud Console**
+ In the Firebase Console, under Firestore settings, click **Go to Google Cloud Console**.
+
+ 
+
+2. **Switch to Native Mode**
+ In the Cloud Console, click the **Switch to Native Mode** button.
+
+ 
+
+3. **Reload Firestore in Firebase**
+ Return to the Firebase Console and refresh the **Cloud Firestore** page to confirm the switch.
+
+ 
+
+:::warning
+This action cannot be undone. Switching to `Native Mode` is permanent. If the option to switch is not available or the error continues, contact **[support@flutterflow.io](mailto:support@flutterflow.io)** for assistance.
+:::
\ No newline at end of file
diff --git a/docs/troubleshooting/google-play-store-deployment/android-app-bundle-wrong-key-error.md b/docs/troubleshooting/google-play-store-deployment/android-app-bundle-wrong-key-error.md
new file mode 100644
index 00000000..e4b9ec85
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/android-app-bundle-wrong-key-error.md
@@ -0,0 +1,53 @@
+---
+keywords: ['android', 'release', 'build']
+slug: /troubleshooting/google-play-store-deployment/android-app-bundle-wrong-key-error
+title: App Bundle Signed with Wrong Key on Google Play
+---
+
+# App Bundle Signed with Wrong Key on Google Play
+
+If you're encountering this error when uploading your app to Google Play, it typically means the Android App Bundle was signed with a **different Keystore** than the one expected by Google Play.
+
+Here is the error message:
+
+ ```text
+ Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key.
+ Found: SHA1: XX:XX:XX:XX.
+ Expected: YY:YY:YY:YY
+ ```
+
+:::info[Prerequisites]
+- You must be building your app in Release Mode.
+- Ensure you have access to the correct keystore used when first publishing your app.
+:::
+
+Follow the steps below to resolve this error
+
+1. **Verify That the Correct Keystore File Was Submitted for Signing**
+
+ If you are **not using GitHub** integration, please [contact FlutterFlow Support](mailto:support@flutterflow.io).
+
+ If needed, you can create a new keystore file using the following command in your terminal or IDE:
+
+ ```bash
+ keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
+ ```
+
+ :::warning
+ If the original keystore was used in a previous deployment and is now lost, you’ll need to contact Google Play Support for further assistance.
+ :::
+
+2. **Verify That Your `build.gradle` File Was Correctly Configured**
+
+ Check the `build.gradle` file and ensure it has been updated according to **[Google Play’s deployment documentation](https://developer.android.com/studio/publish/app-signing#sign-apk)**.
+Pay special attention to the `signingConfigs` and `buildTypes` sections.
+
+3. **Make Sure the Application Was Submitted in Release Mode**
+
+ You must build in **Release Mode** to ensure your app is correctly signed and optimized for production.
+
+ To verify:
+
+ - Check your **build settings** in FlutterFlow.
+ - Ensure the app is **not in Debug Mode**.
+ - If it is, rebuild the app using **Release Mode**.
\ No newline at end of file
diff --git a/docs/troubleshooting/google-play-store-deployment/apk_specifies_a_version_code_that_has_already_been_used.md b/docs/troubleshooting/google-play-store-deployment/apk_specifies_a_version_code_that_has_already_been_used.md
new file mode 100644
index 00000000..a73070bb
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/apk_specifies_a_version_code_that_has_already_been_used.md
@@ -0,0 +1,52 @@
+---
+keywords: ['error', 'deployment', 'build']
+slug: /troubleshooting/google-play-store-deployment/fix-version-code-conflict-apk-upload
+title: Fix Version Code Conflict When Uploading APK to Google Play
+---
+
+# Fix Version Code Conflict When Uploading APK to Google Play
+
+When uploading a new APK to Google Play, you may encounter the following error:
+
+```text
+Publishing failed: Google Play failed to upload artefacts. APK specifies a version code that has already been used.
+{"error":{"code":403,"message":"APK specifies a version code that has already been used.","status":"PERMISSION_DENIED"}}
+```
+
+This occurs when the APK’s version code conflicts with a version that has already been uploaded. Each release on Google Play must have a **unique version code**.
+
+:::info[Prerequisites]
+You must have access to your FlutterFlow project or GitHub repo where the app is built, and you must be using the Google Play Console for deployment.
+:::
+
+## Updating Version Code in FlutterFlow
+
+To resolve the issue when deploying directly from FlutterFlow:
+
+ 1. Navigate to **Settings and Integrations > Mobile Deployment**.
+ 
+
+ 2. Under the **App Version** section:
+ - **App Version**: Optional, represents the app’s public version (e.g., 1.0.2).
+ - **Build Number**: Required for deployment. This must be incremented with every new build.
+
+ 3. Increase the **Build Number**. If left empty, FlutterFlow will increment it automatically.
+
+ 4. Save your changes and deploy again.
+
+## Updating Version Code When Using GitHub
+
+ If deploying through GitHub, follow these steps:
+
+ 1. Open the `pubspec.yaml` file.
+ 2. Locate the `version` tag:
+ ```yaml
+ version: 1.0.2+2
+ 3. Increment the number after the + symbol. For example, change +2 to +3
+
+ 4. Run the following command to clean the build:
+ ```js
+ flutter clean
+ ```
+
+ 5. Rebuild the app and upload the new APK.
\ No newline at end of file
diff --git a/docs/troubleshooting/google-play-store-deployment/fix-keystore-read-error-on-google-play.md b/docs/troubleshooting/google-play-store-deployment/fix-keystore-read-error-on-google-play.md
new file mode 100644
index 00000000..657bbc64
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/fix-keystore-read-error-on-google-play.md
@@ -0,0 +1,41 @@
+---
+keywords: ['deployment', 'error', 'store']
+slug: /troubleshooting/google-play-store-deployment/fix-keystore-read-error-on-google-play
+title: Fix Keystore Read Error on Google Play
+---
+
+# Fix Keystore Read Error on Google Play
+
+This error occurs when deploying an app to the Google Play Store and the system fails to access the keystore file required for signing.
+
+The error message is found below:
+
+ ```text
+ Error: Failed to read key ******** from store "/tmp/keystore.keystore"
+ ```
+
+:::info[Prerequisites]
+- Ensure you have access to the original keystore file and its credentials.
+- Confirm you are using a paid FlutterFlow plan to enable Android deployment.
+:::
+
+Follow the steps below to resolve the issue:
+
+- **Verify Android Deployment Settings**
+ Go to `Settings > Android Deployment` and ensure a valid keystore file is uploaded.
+
+- **Check Keystore Credentials**
+ Make sure the following values are correctly entered:
+ - Keystore Password
+ - Key Alias
+ - Key Password
+
+- **Generate a New Keystore (If Needed)**
+ If the keystore is missing or corrupted, you can generate a new one using the following command:
+
+ ```js
+ keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
+ ```
+
+4. **Upload the Correct Keystore File**
+ Confirm that the correct `.keystore` file is used during deployment.
\ No newline at end of file
diff --git a/docs/troubleshooting/google-play-store-deployment/play-store-ad-id-permission-error.md b/docs/troubleshooting/google-play-store-deployment/play-store-ad-id-permission-error.md
new file mode 100644
index 00000000..76a9c978
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/play-store-ad-id-permission-error.md
@@ -0,0 +1,41 @@
+---
+keywords: ['android', 'release', 'error']
+slug: /troubleshooting/google-play-store-deployment/play-store-ad-id-permission-error
+title: Play Store AD_ID Permission Error
+---
+# Play Store AD_ID Permission Error
+
+You may see this error when trying to deploy your app through the Google Play Store:
+
+ ```text
+ This release includes the com.google.android.gms.permission.AD_ID permission but your declaration on Play Console says your app doesn't use advertising ID. You must update your advertising ID declaration.
+ ```
+:::info[Prerequisites]
+- Ensure your app is connected to the Google Play Console.
+- Make sure you have access to the App Content section in the Play Console.
+:::
+
+Even if your app does not use ads, this error can occur if your project includes services like **Google Analytics**, which also uses the **AD_ID** permission.
+
+By default, **Google Analytics** and other libraries may include the `com.google.android.gms.permission.AD_ID`, triggering this Play Console warning.
+
+To resolve the issue:
+
+1. **Go to Google Play Console**
+ - Open your app project.
+ - In the left-side panel, scroll to **Policy & programs > App content**.
+
+2. **Update Advertising ID Declaration**
+ - In the **App content** section, find and click on **Advertising ID**.
+ - Click **Start** to begin the configuration.
+
+ 
+
+3. **Select "Yes"**
+ - Even if you are not using ads, choose **Yes** for the AD_ID usage.
+ - Select **Analytics** as the reason for usage.
+
+ 
+
+4. **Save the Changes**
+ - Scroll to the bottom and click **Save**.
diff --git a/docs/troubleshooting/google-play-store-deployment/upload-keystore-existing-google-play-flutterflow.md b/docs/troubleshooting/google-play-store-deployment/upload-keystore-existing-google-play-flutterflow.md
new file mode 100644
index 00000000..872f9abf
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/upload-keystore-existing-google-play-flutterflow.md
@@ -0,0 +1,128 @@
+---
+keywords: ['upload', 'existing', 'file']
+slug: /troubleshooting/google-play-store-deployment/upload-keystore-existing-google-play-flutterflow
+title: Upload an Existing Keystore File to FlutterFlow for a Google Play Project
+---
+
+# Upload an Existing Keystore File to FlutterFlow for a Google Play Project
+
+If your app was originally published on Google Play using another platform, this guide will help you retrieve or reset your keystore, upload it to FlutterFlow, and deploy the updated version of your app.
+
+- **Option 1: Generate a New Keystore and Upload It to Google Play**
+
+ If you're starting fresh with a new keystore, follow the steps below.
+
+ 1. **Create a New Keystore**
+
+ Open your terminal and run the following command:
+
+ ```text
+ keytool -genkeypair -alias allyou -keyalg RSA -keysize 2048 -validity 10000 -keystore allyou.keystore
+ ```
+
+ This generates a new keystore (`allyou.keystore`) with a validity of 10,000 days.
+
+ 
+
+ 
+
+ 
+
+
+ 2. **Export the PEM Public Key**
+
+ Next, export the public key from the keystore using:
+
+ ```js
+ keytool -export -rfc -keystore allyou.keystore -alias allyou -file allyou.pem
+ ```
+
+ This creates a file called `allyou.pem`.
+
+ 3. **Upload the PEM File to Google Play**
+
+ 1. Open the **Google Play Console**.
+ 2. Submit the `allyou.pem` file during the app signing key setup process.
+
+ 4. **Wait for Approval**
+
+ Once submitted, wait for Google Play to approve the key. Monitor your console for updates.
+
+ 5. **Upload Keystore to FlutterFlow**
+
+ Once approved:
+
+ 1. Open your project in **FlutterFlow**.
+ 2. Go to **Deploy > Android Settings**.
+ 3. Upload the `allyou.keystore` file.
+ 4. Enter the **keystore password**, **key alias**, and **key password**.
+
+ You can now deploy your app using this key.
+
+- **Option 2: Request a New Upload Key from Google Play (If You Lost It)**
+
+ If your upload key was lost or compromised, you can request a reset from Google Play.
+
+ 1. **Request a New Key**
+
+ 1. Sign in to the **Google Play Console**.
+ 2. Select your app.
+ 3. Go to **Setup > App Integrity**.
+ 4. Click **Request upload key reset**.
+ 5. Follow the on-screen instructions.
+
+ :::note
+ If you can’t find "App Integrity", use the search bar in the Play Console.
+ :::
+
+ 
+
+ 
+
+ It may take up to **48 hours** for the new key to be issued.
+
+ 2. **Verify and Convert the New Key**
+
+ If your key is issued in `.jks` or `.p12` format:
+
+ - To verify the key:
+
+ ```js
+ keytool -list -v -keystore path/to/your_new_key.jks
+ ```
+
+ - To convert from `.p12` to `.jks` format:
+
+ ```js
+ keytool -importkeystore -srckeystore your-key.p12 -srcstoretype pkcs12 -destkeystore your-key.jks -deststoretype JKS
+ ```
+
+
+ 3. **Upload the New Keystore to FlutterFlow**
+
+ 1. Log into FlutterFlow.
+ 2. Navigate to **Deploy > Android Settings**.
+ 3. Upload the `.jks` file.
+ 4. Provide the password, key alias, and key password.
+
+ 
+
+ 
+
+ :::tip
+ Run a test build in FlutterFlow using the new keystore to confirm everything works before uploading to Google Play.
+ :::
+
+:::note
+Your existing keystore used to sign your app can be downloaded from the **Deploy** tab in FlutterFlow by clicking the **orange key icon**.
+
+
+:::
+
+Managing your keystore correctly is critical for app updates on Google Play. Always:
+
+ - Backup your keystore securely.
+ - Store passwords safely.
+ - Contact Google Play or FlutterFlow Support if you get stuck.
+
+ Deploying with the right keystore ensures seamless updates and app continuity.
diff --git a/docs/troubleshooting/notifications/enable-push-notifications-in-provisioning-profile.md b/docs/troubleshooting/notifications/enable-push-notifications-in-provisioning-profile.md
new file mode 100644
index 00000000..a908702b
--- /dev/null
+++ b/docs/troubleshooting/notifications/enable-push-notifications-in-provisioning-profile.md
@@ -0,0 +1,63 @@
+---
+keywords: ['push notifications', 'provisioning profile', 'apple developer']
+slug: /troubleshooting/notifications/enable-push-notifications-in-provisioning-profile
+title: Enable Push Notifications in Provisioning Profile
+---
+
+# Enable Push Notifications in Provisioning Profile
+
+When deploying an app to the App Store using FlutterFlow, you may encounter the following error:
+
+ ```text
+ Provisioning profile doesn't support the Push Notifications capability.
+ ```
+
+This issue indicates that push notifications have not been properly enabled in the provisioning profile associated with your App ID.
+
+:::info[Prerequisites]
+An active Apple Developer account and an App ID registered for your app in the Apple Developer Portal.
+:::
+
+This error occurs when an app includes push notification functionality, but the **Push Notifications** capability is not enabled in the corresponding App ID within your Apple Developer account.
+
+
+Follow the steps below to enable the **Push Notifications** capability for your app:
+
+1. **Log into Apple Developer Account**
+
+ - Go to the **[Apple Developer Portal](https://developer.apple.com/account)**.
+ - Navigate to **Certificates, Identifiers & Profiles** > **Identifiers**.
+
+ 
+
+2. **Select Your App Identifier**
+
+ - Locate the App ID associated with your app.
+ - Click on it to open the identifier details.
+
+3. **Enable Push Notifications**
+
+ - In the **Capabilities** section, check the box for **Push Notifications**.
+ - There is no need to modify the primary App ID or generate a new key for first-time setup.
+
+ 
+
+4. **Save Changes**
+
+ - Click **Save** to apply the capability update.
+
+5. **Rebuild in FlutterFlow**
+
+ - After updating the capability, return to FlutterFlow.
+ - Rebuild and deploy your app using the updated provisioning profile.
+
+:::tip
+Need help setting up push notifications from scratch? See the **[Push Notifications Setup Guide](/concepts/notifications/push-notifications/#push-notifications-setup)** for a full walkthrough.
+:::
+
+
+If you've completed the steps above and still encounter the error, confirm the following:
+
+ - The correct provisioning profile is selected during deployment.
+ - Your Apple Developer account is active and has the correct entitlements.
+ - Push notification certificates are valid and not expired.
diff --git a/docs/troubleshooting/notifications/send-notifications-to-user-groups.md b/docs/troubleshooting/notifications/send-notifications-to-user-groups.md
new file mode 100644
index 00000000..a3954d7f
--- /dev/null
+++ b/docs/troubleshooting/notifications/send-notifications-to-user-groups.md
@@ -0,0 +1,61 @@
+---
+keywords: ['firebase', 'users', 'group']
+slug: /troubleshooting/notifications/send-notifications-to-user-groups
+title: Send Notifications to Specific User Groups
+---
+
+# Send Notifications to Specific User Groups
+
+This guide explains how to send push notifications to a specific group of users in your FlutterFlow project based on an attribute such as `isPremium`. This is useful when you want to automatically notify a user segment whenever a new document (e.g., a post) is created.
+
+You can review the full working example in this **[sample FlutterFlow project](https://app.flutterflow.io/project/auto-notification-2bm5hz)**.
+
+:::info[Prerequisites]
+- Your project must be connected to Firebase.
+- Push notifications must be enabled and deployed.
+- The project must be on the **Blaze** plan.
+- The `firebase@flutterflow.io` service account must have proper permissions.
+:::
+
+**Configure the Project:**
+
+1. Ensure Firebase is set up correctly in your FlutterFlow project.
+ → **See**: **[Firebase Integration Guide](/integrations/firebase/connect-to-firebase/)**
+
+2. Make sure push notifications are enabled and deployed from **Settings > Notifications**.
+
+3. Add a user attribute (e.g., `isPremium`) in your **users** collection to filter recipients.
+
+## Create the Notification Workflow
+
+1. Select the **Submit** button or trigger event.
+2. Add a **Backend Query** action:
+ - **Query Type**: `Query Collection`
+ - **Collection**: `users`
+ - **Query Mode**: `List of Documents`
+
+3. Add a **Create Document** action to create the post or data entry.
+
+4. Add a **Trigger Notification** action:
+ - Set the notification `title`, `message`, and `initial page`.
+
+5. In the **Recipient** section:
+ - Click `unset` to select the recipient source.
+ - Choose **User Document**.
+ - Select **Filter List Items**.
+
+ :::note
+ To filter a specific group, such as premium users, ensure the users collection includes a boolean attribute like `isPremium`.
+ :::
+
+6. In the filter condition popup:
+ - Select **Items in list**
+ - Set **Document Property** to `isPremium`
+ - Choose **is equal to** → `True`
+
+7. Click **Confirm** to save the condition.
+8. Back in the recipient popup, select **Map List Items**.
+9. Click `unset`, then select **Reference** under Document Properties.
+10. Click **Confirm** in all dialogs to complete the action chain.
+
+The notification will be automatically triggered whenever a new document is created, and it will be sent only to users that match the filter condition.
diff --git a/docs/troubleshooting/apple-store-deployment/publishing/_category_.json b/docs/troubleshooting/publishing/_category_.json
similarity index 100%
rename from docs/troubleshooting/apple-store-deployment/publishing/_category_.json
rename to docs/troubleshooting/publishing/_category_.json
diff --git a/docs/troubleshooting/publishing/custom_domain_connection_error.md b/docs/troubleshooting/publishing/custom_domain_connection_error.md
new file mode 100644
index 00000000..c0fab848
--- /dev/null
+++ b/docs/troubleshooting/publishing/custom_domain_connection_error.md
@@ -0,0 +1,92 @@
+---
+keywords: ['custom domain', 'dns', 'connection error']
+slug: /troubleshooting/publishing/fix-custom-domain-connection-error
+title: Fix Custom Domain Connection Error
+---
+
+# Fix Custom Domain Connection Errors
+
+This article outlines common causes and solutions for custom domain connection errors in FlutterFlow. These errors typically occur due to DNS misconfiguration or propagation delays when setting up a custom domain for your published web app.
+
+:::info[Prerequisites]
+- Access to your domain registrar or DNS provider dashboard.
+- DNS management permissions to add or modify DNS records.
+- Familiarity with basic DNS record types (A, CNAME, CAA).
+:::
+
+## Common Connection Error
+
+If you see the error message below after clicking **Connect**, follow the steps in this article to resolve it.
+
+
+
+## Steps to Resolve Domain Connection Issues
+
+1. **Verify DNS Records**
+
+ - Ensure that all required **A** and **CNAME** records have been added to your domain’s DNS settings as provided by FlutterFlow.
+ - You can use **[nslookup.io](https://www.nslookup.io)** to confirm that your records match the expected values.
+
+ :::note
+ If your DNS provider requires a name for the record and none is shown in FlutterFlow, use `"@"`, which refers to the root domain (e.g., `example.com`).
+ :::
+
+ 
+
+2. **Check for Conflicting Records**
+
+ - Remove any existing **A**, **AAAA**, or **CNAME** records that conflict with those provided by FlutterFlow.
+ - For example, if you already have an **A** record using `"@"`, it must be deleted before adding FlutterFlow’s record.
+
+ :::note
+ Before deleting any existing DNS records, take screenshots for reference.
+ :::
+
+ Examples of correct configurations:
+
+ 
+
+ 
+
+3. **Allow Time for DNS Propagation**
+
+ - DNS changes typically take effect within minutes but may take up to **24 hours**.
+ - Wait at least **1 hour** after making DNS changes before attempting to reconnect your domain.
+
+4. **Retry Domain Connection**
+
+ - After verifying the DNS records and allowing sufficient time for propagation, try reconnecting the domain in FlutterFlow.
+
+5. **Handle Registrar-Specific DNS Formats**
+
+ Different domain registrars may require specific formats for DNS record names. If you're unable to create records:
+
+ - For **root domains** (`example.com`), use `"@"`, an empty name, or the full domain based on registrar requirements.
+ - For **subdomains** (`test.example.com`), use just `"test"` or the full subdomain as needed.
+
+ Consult your domain registrar’s documentation for the correct format.
+
+6. **Fix 404 Errors After Successful Connection**
+
+ If your domain is connected but you see a **404 error**, follow these steps:
+
+ - **Publish the project again** from FlutterFlow.
+ - Wait a few minutes, then reload your domain in the browser.
+
+7. **Check CAA Records for SSL Certificate Issues**
+
+ If the domain connection fails due to SSL certificate generation:
+
+ 1. Use [nslookup.io](https://www.nslookup.io/domains/your-site-name/dns-records/caa/) (replace `your-site-name` with your actual domain) to check for **CAA** records.
+ 2. If CAA records exist, make sure they allow `letsencrypt.org`.
+
+ :::note
+ Add `letsencrypt.org` as an allowed certificate authority to enable FlutterFlow to issue SSL certificates for your custom domain.
+ :::
+
+8. **Contact Support if Issues Persist**
+
+ If the domain connection fails after verifying DNS records, allowing propagation, and retrying the connection:
+
+ - Contact your **domain registrar** to verify DNS settings.
+ - If the issue persists after 48 hours, reach out to the **FlutterFlow Support Team** at [support@flutterflow.io](mailto:support@flutterflow.io).
diff --git a/docs/troubleshooting/publishing/fix-subdomain-limit-error-when-publishing.md b/docs/troubleshooting/publishing/fix-subdomain-limit-error-when-publishing.md
new file mode 100644
index 00000000..ca9c8304
--- /dev/null
+++ b/docs/troubleshooting/publishing/fix-subdomain-limit-error-when-publishing.md
@@ -0,0 +1,46 @@
+---
+keywords: ['error', 'exceeded', 'subdomains']
+slug: /troubleshooting/deployment/fix-subdomain-limit-error-when-publishing
+title: Fix Subdomain Limit Error When Publishing
+---
+
+# Fix Subdomain Limit Error When Publishing to Flutterflow.app
+
+This article explains how to resolve the following error when publishing a web app:
+
+ ```text
+ Error reserving subdomain. You have exceeded the quota for subdomains.
+ ```
+
+ 
+
+This error occurs because FlutterFlow limits the number of custom subdomains a user can reserve under the `.flutterflow.app` domain.
+
+ - **Free plans** can reserve up to **3** custom subdomains.
+ - **Paid plans** can reserve up to **10** custom subdomains.
+
+:::tip
+Only **custom** subdomains count toward this limit. Subdomains using the default **project ID** do **not** count.
+:::
+
+Follow the steps below to fix this error:
+
+1. **Use the Default Project ID as Subdomain**
+
+ Using the project ID as the subdomain will not count toward your quota.
+
+ - Go to the **Site URL** field in the **Web Publishing** page.
+ - Set the subdomain to match the project ID.
+
+ 
+
+2. **Unpublish Unused Projects**
+
+ You can free up space by unpublishing existing custom subdomains:
+
+ 1. Go to the **Web Publishing** page of a previously published project.
+ 2. Click the **Unpublish** button.
+
+ 
+
+ Once space is freed, return to your current project and attempt to publish again.
\ No newline at end of file
diff --git a/docs/troubleshooting/apple-store-deployment/publishing/web_publishing_faqs.md b/docs/troubleshooting/publishing/web_publishing_faqs.md
similarity index 95%
rename from docs/troubleshooting/apple-store-deployment/publishing/web_publishing_faqs.md
rename to docs/troubleshooting/publishing/web_publishing_faqs.md
index 39941271..74455e6a 100644
--- a/docs/troubleshooting/apple-store-deployment/publishing/web_publishing_faqs.md
+++ b/docs/troubleshooting/publishing/web_publishing_faqs.md
@@ -1,6 +1,6 @@
---
keywords: ['faqs', 'publishing', 'web']
-slug: /troubleshooting/apple-store-deployment-issues/web-publishing-faqs
+slug: /troubleshooting/publishing/web-publishing-faqs
title: Web Publishing FAQs
---
diff --git a/docs/troubleshooting/running-app/_category_.json b/docs/troubleshooting/running-app/_category_.json
new file mode 100644
index 00000000..f93cca0a
--- /dev/null
+++ b/docs/troubleshooting/running-app/_category_.json
@@ -0,0 +1,3 @@
+{
+ "label": "Running App"
+}
\ No newline at end of file
diff --git a/docs/troubleshooting/running-app/app-colors-wrong-on-real-device.md b/docs/troubleshooting/running-app/app-colors-wrong-on-real-device.md
new file mode 100644
index 00000000..df3fc70e
--- /dev/null
+++ b/docs/troubleshooting/running-app/app-colors-wrong-on-real-device.md
@@ -0,0 +1,37 @@
+---
+keywords: ['application', 'device', 'real']
+Slug: /troubleshooting/running-app/app-colors-wrong-on-real-device
+Title: App Colors Display Incorrectly on Real Device
+---
+
+# App Colors Display Incorrectly on Real Device
+
+If your app’s colors appear differently when testing on a physical device, this is often due to **Dark Mode settings** or incomplete **theme configurations**.
+
+Most devices support **Light**, **Dark**, or **Automatic** appearance modes. If your device is set to **Dark Mode** and your app has not been configured to fully support it, colors may appear incorrectly or unreadably.
+
+Follow the steps below to resolve this issue:
+
+1. **Check Your App’s Dark Mode Setting**
+
+ - Open your project in **FlutterFlow**
+ - Go to **Settings > Theme**
+ - Confirm whether **Dark Mode** is enabled
+
+ 
+
+ If Dark Mode is enabled, you have two options:
+
+2. **Fix the Dark Theme or Disable It**
+
+ - **Option A: Complete the Dark Theme Configuration**
+ - Update your colors for the dark theme to ensure all UI elements are visible and consistent
+ - Use the **Explore Themes** tool to preview how the theme appears
+
+ 
+
+ - **Option B: Disable Dark Mode**
+ - Simply toggle off the **Dark Mode** setting in FlutterFlow
+ - Rebuild and test the app to confirm the color issue is resolved
+
+ Device appearance settings like Dark Mode can override or conflict with app theming. Ensuring your dark theme is properly configured—or disabling it entirely—can resolve most color display issues when running on real devices.
diff --git a/docs/troubleshooting/running-app/clear_database_before_running_tests.md b/docs/troubleshooting/running-app/clear_database_before_running_tests.md
new file mode 100644
index 00000000..df3cc37d
--- /dev/null
+++ b/docs/troubleshooting/running-app/clear_database_before_running_tests.md
@@ -0,0 +1,45 @@
+---
+keywords: ['database', 'clear', 'testing']
+slug: /testing/clear_database_before_running_tests
+title: Prepare Database Before Running Tests
+---
+
+# Prepare Database Before Running Tests
+
+When preparing for major testing or app updates, it's important to ensure that all records in the Firestore database are aligned with the latest data model. Outdated entries may lack newly added fields, leading to potential runtime issues.
+
+## The Issue with Outdated Records
+
+As new fields are introduced to collections, existing records may become incomplete. This can cause:
+
+ - Runtime errors
+ - Inconsistent or missing UI elements
+ - Unexpected test behavior or broken features
+
+:::info[Prerequisites]
+Ensure that you have access to the Firestore database and understand the current schema changes made in the project.
+:::
+
+The steps below are the recommended practices:
+1. **Clear the Database Before Testing**
+ Remove old data to ensure that only current, schema-compliant records are present.
+
+2. **Migrate Old Records**
+ Use a script or manual update to add missing fields to existing documents.
+
+These steps help maintain consistency across your data and avoid unexpected failures during testing or deployment.
+
+Here is an example scenario:
+
+ 1. A new field called `profilePicture` is added to the `Users` collection.
+ 2. Existing user records do not include the `profilePicture` field.
+ 3. The app assumes all users have a `profilePicture` value.
+ 4. Displaying or processing these records causes errors or incomplete rendering.
+
+Solution:
+ - Use a Cloud Function, script, or manual update to add default values to existing documents.
+ - Alternatively, delete non-compliant test data before starting major testing workflows.
+
+:::tip
+Always validate the database structure after schema changes by running test queries to confirm that all expected fields exist across documents.
+:::
\ No newline at end of file
diff --git a/docs/troubleshooting/test-mode/fix-svg-color-not-showing-on-devices.md b/docs/troubleshooting/test-mode/fix-svg-color-not-showing-on-devices.md
new file mode 100644
index 00000000..e29095b5
--- /dev/null
+++ b/docs/troubleshooting/test-mode/fix-svg-color-not-showing-on-devices.md
@@ -0,0 +1,53 @@
+---
+keywords: ['device', 'svg', 'color']
+slug: /troubleshooting/test-mode/fix-svg-color-not-showing-on-devices
+title: Fix SVG Color Not Showing on Devices
+---
+
+# Fix SVG Color Not Showing on Devices
+
+SVG images may display properly on web preview but appear without color on physical mobile devices. This usually results from configuration or compatibility issues in the SVG file.
+
+
+
+**Common Causes:**
+
+ 1. **Unsupported Color Mode**
+ Some mobile devices may not support CMYK color profiles. Ensure the SVG uses the `RGB` color mode.
+
+ 2. **Missing `fill` or `stroke` Attributes**
+ Open the SVG file in a text/code editor and verify that the appropriate `fill` or `stroke` attributes are defined for all elements.
+
+ 3. **Display Attribute Conflicts**
+ Elements in the SVG may be hidden using `display: none`. Remove or update this property if present.
+
+ 4. **Incorrect File Embedding**
+ Ensure the SVG file is correctly added to your FlutterFlow project's asset folder and that the file path is valid.
+
+ 5. **Device Accessibility Settings**
+ Some devices may have display filters or accessibility modes enabled that alter or suppress color rendering.
+
+:::info[Prerequisites]
+Ensure the SVG file is included in your **FlutterFlow project assets** and added via the **Image widget**.
+:::
+
+Follow the steps below to resolve the issue:
+
+ 1. **Test a Known Working SVG**
+ Use a sample SVG that has been tested to display correctly across devices. This can help isolate whether the issue is file-specific.
+
+ 2. **Export SVG with Simplified Settings**
+ Re-export the image using design tools like Figma, Illustrator, or SVGOMG, ensuring the export uses the RGB profile.
+
+ 3. **Open SVG in a Mobile Browser**
+ Upload the SVG to a hosting platform and open it directly in a mobile browser. This helps determine if the issue is related to rendering or Flutter integration.
+
+ 4. **Inspect SVG Attributes**
+ Open the SVG in a text editor and verify that all graphical elements include `fill` or `stroke` properties. Remove any `display: none;` styling if not needed.
+
+ 5. **Convert to PNG (if needed)**
+ If issues persist, consider converting the SVG to a PNG to ensure consistent cross-platform rendering.
+
+:::tip
+SVGs with simplified paths and explicit color attributes (`fill`, `stroke`) are more likely to display correctly across devices.
+:::
\ No newline at end of file
diff --git a/docs/troubleshooting/test-mode/fix-text-not-showing-on-mobile-devices.md b/docs/troubleshooting/test-mode/fix-text-not-showing-on-mobile-devices.md
new file mode 100644
index 00000000..d204b626
--- /dev/null
+++ b/docs/troubleshooting/test-mode/fix-text-not-showing-on-mobile-devices.md
@@ -0,0 +1,49 @@
+---
+keywords: ['mode', 'mobile', 'text']
+slug: /troubleshooting/test-mode/fix-text-not-showing-on-mobile-devices
+title: Fix Text Not Showing on Mobile Devices
+---
+
+# Fix Text Not Showing on Mobile Devices
+
+Text may appear normally during **Run/Test Mode** in FlutterFlow but fail to display when the app runs on a real mobile device. This issue is often caused by color contrast in dark mode or missing translations.
+
+
+
+:::info[Prerequisites]
+Make sure the **Text widget** is added to the correct screen and that it is not conditionally hidden using visibility settings.
+:::
+
+Follow the steps below to resolve this issue:
+
+ 1. **Check Dark Mode Contrast**
+ Text may be visible in light mode but blend into the background in dark mode due to incompatible colors.
+
+ - Go to **Settings > Theme > Colors**.
+ - Review and update your dark mode text colors for visibility.
+ - Optionally, disable dark mode entirely for simpler behavior.
+
+ 
+
+ :::warning
+ Using black text (`#000000`) on dark mode backgrounds can render text invisible on devices.
+ :::
+
+ 2. **Check for Missing Translations**
+ If your app uses localization, untranslated fields may render as blank on devices with alternate system languages.
+
+ - Go to **Settings > Localization**.
+ - Use the automatic translator or manually fill in missing entries for each language.
+
+ 
+
+ 
+
+ 3. **Preview Using a Real Device**
+ Always test using the **FlutterFlow Preview App** or deployed builds to check how your design renders on physical devices.
+
+ :::tip
+ - Avoid hardcoding text color to `white` or `black`. Use theme-based color variables when possible.
+ - Enable debug mode or use print statements to verify that the text content is being passed correctly.
+ - Review widget visibility rules and any dynamic conditions applied to the text.
+ :::
\ No newline at end of file
diff --git a/docs/troubleshooting/test-mode/resolve-build-failed-error-run-test-mode.md b/docs/troubleshooting/test-mode/resolve-build-failed-error-run-test-mode.md
new file mode 100644
index 00000000..3fceec32
--- /dev/null
+++ b/docs/troubleshooting/test-mode/resolve-build-failed-error-run-test-mode.md
@@ -0,0 +1,51 @@
+---
+keywords: ['error', 'build', 'failed']
+slug: /troubleshooting/test-mode/resolve-build-failed-error-run-test-mode
+title: Resolve Build Failed Error for Test or Run Mode
+---
+
+# Resolve Build Failed Error for Test or Run Mode
+
+This error occurs when attempting to create a build in **Run** or **Test** mode, even though no issues appear in the FlutterFlow debug panel.
+
+
+
+This error typically indicates a silent or uncaught issue in your FlutterFlow project that prevents the app from compiling.
+
+FlutterFlow generally surfaces project issues through the debug menu. However, some newer error types or configuration issues may not be flagged automatically.
+
+Some common project actions that may cause this build failure include:
+
+ - Copying and pasting widgets with many actions or visibility rules
+ - Duplicating widgets that include animations or animation actions
+ - Duplicating entire pages or components
+ - Referencing a data source or action that does not exist at build time
+ (example, using a periodic action before it’s been defined)
+ - A bug in FlutterFlow (if suspected, report it via the **[FlutterFlow GitHub tracker](https://github.com/FlutterFlow/flutterflow/issues))**
+
+If you're experiencing this issue, try the following steps:
+
+1. **Download and Run Locally**
+ - If available, download your project code.
+ - Run the project in a local environment using Flutter to view the exact error in your terminal or IDE.
+ - Identify the error and return to FlutterFlow to make corrections.
+
+2. **Review Recent Project Changes**
+ - Use **Snapshots** to compare recent versions of your project.
+ - Identify what changed before the error began occurring.
+
+3. **Inspect Actions and Visibility Rules**
+ - Open the affected page or widget (e.g., one you recently copied or edited).
+ - Check all attached actions, visibility conditions, and variables.
+ - Open each action or condition fully, even if no error is visibly flagged.
+
+ **Example**
+ The visibility rule below does not appear to contain an error at first glance:
+
+ 
+
+ However, once the condition is expanded, you can see that one of the values is unset and displayed in red:
+
+ 
+
+ This type of hidden issue can prevent your project from building.
diff --git a/docs/troubleshooting/test-mode/resolve-issues-running-code-locally-after-exporting-my-code-apk.md b/docs/troubleshooting/test-mode/resolve-issues-running-code-locally-after-exporting-my-code-apk.md
new file mode 100644
index 00000000..1cc13811
--- /dev/null
+++ b/docs/troubleshooting/test-mode/resolve-issues-running-code-locally-after-exporting-my-code-apk.md
@@ -0,0 +1,46 @@
+---
+keywords: ['build', 'locally', 'after']
+slug: /troubleshooting/test-mode/resolve-issues-running-code-locally-after-exporting-my-code-apk
+title: Resolve Issues Running Code Locally After Exporting Code or APK
+---
+
+# Resolve Issues Running Code Locally After Exporting Code or APK
+
+When APKs exported from FlutterFlow do not function as expected, a few preliminary checks and rebuild steps can help resolve the issue. This guide outlines how to resolve problems within your project, ensure proper saving and building, and troubleshoot by running the APK locally.
+
+:::info[Prerequisites]
+- A completed FlutterFlow project
+- Firebase authentication set up (if used)
+- Flutter SDK installed locally
+:::
+
+Follow the steps below to resolve the issue:
+
+ 1. **Resolve Any Project Issues**
+ - Review your FlutterFlow project for validation errors or configuration issues.
+ - Fix any errors displayed in the UI.
+
+ 
+
+ 2. **Save the Project**
+ - Before exporting your build, press `Ctrl + S` or `Cmd + S` to ensure all changes are saved.
+
+ 
+
+ 3. **Rebuild and Download the APK**
+ - Once the project is saved and issues are resolved, trigger a rebuild and download the APK file.
+
+ 
+
+ 4. **Run the APK Locally**
+ - Run the exported APK locally using an emulator or a physical device to view any compiler errors.
+ - Open a terminal and navigate to your project directory to run the necessary Flutter commands.
+
+:::tip
+To view logs, use the `flutter run` command in the terminal. This will show real-time errors and debug output.
+:::
+
+:::warning
+When running code locally, features such as **Google Sign-In** may not work by default. To enable them:
+- Add your SHA-1 key to the Firebase Console under your Android app settings.
+:::
\ No newline at end of file
diff --git a/docs/troubleshooting/test-mode/slow_test_mode_load.md b/docs/troubleshooting/test-mode/slow_test_mode_load.md
deleted file mode 100644
index 21c56bb6..00000000
--- a/docs/troubleshooting/test-mode/slow_test_mode_load.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-keywords: ['test mode', 'slow load', 'run mode']
-slug: /troubleshooting/test-mode/slow-test-mode-load
-title: Slow Loading in Test Mode
----
-
-# Slow Loading in Test Mode
-
-If Test Mode takes several minutes to load or fails entirely, the issue may stem from your browser, network, or project configuration. This guide walks you through the most common causes and how to resolve them.
-
-:::info[Prerequisites]
-- You are using FlutterFlow's Test Mode feature.
-- You have already deployed or previewed a version of your app.
-:::
-
-**Steps to Resolve Slow Loading:**
-
-- **Check Your Internet Connection**
-
- A weak or unstable connection may delay the loading of compiled apps. Make sure you have a stable network before launching Test Mode.
-
-- **Sync Your System Clock**
-
- Ensure your device’s time and date settings are accurate. An incorrect clock can cause authentication issues and impact performance.
-
-- **Clear Browser Cache**
-
- Browsers store temporary files that may interfere with page loading. Clearing your cache can resolve stale resource conflicts and improve speed.
-
-- **Try a Different Browser**
-
- Some browsers may conflict with specific web assets or settings. If one browser is slow, switch to another (e.g., from Chrome to Firefox).
-
-- **Disable Browser Extensions**
-
- Extensions like ad blockers or privacy tools can interfere with FlutterFlow’s platform. Temporarily disable them to check for improvement.
-
-:::tip[Optimize Your Project]
-Projects with many pages, assets, or custom code may take longer to compile. Follow these steps to optimize your project:
-- Remove unused images, fonts, or icons.
-- Consolidate or simplify custom code.
-- Limit the number of pages in a single testing session.
-:::
-
-:::info[Additional Resources]
-If the issue persists after following the steps above, check the
-**[official support](https://intercom.help/flutterflow/en/articles/7052737-test-mode-is-not-loading-or-is-very-slow-it-takes-a-long-time-to-load-the-app)** article.
-:::
-
-Following these steps should resolve most Test Mode performance issues and reduce load times for future previews.
diff --git a/docs/troubleshooting/test-mode/slow_test_mode_loading.md b/docs/troubleshooting/test-mode/slow_test_mode_loading.md
new file mode 100644
index 00000000..9573f21e
--- /dev/null
+++ b/docs/troubleshooting/test-mode/slow_test_mode_loading.md
@@ -0,0 +1,114 @@
+---
+keywords: ['test mode', 'slow load', 'run mode', 'compile error', 'null exception']
+slug: /troubleshooting/test-mode/test-mode-not-loading
+title: Test Mode Not Loading or Showing Red Screen
+---
+
+# Test Mode Not Loading or Showing Red Screen
+
+If **Test Mode** in FlutterFlow is taking too long to load, shows a red screen, or fails completely, the cause is usually tied to network issues, browser problems, unsupported plugins, or bugs in your project. This guide outlines how to diagnose and resolve these issues.
+
+:::info[Prerequisites]
+- You're using FlutterFlow's Test Mode to preview your app.
+- You've already deployed or compiled a version of your project.
+:::
+
+---
+
+**Common Causes and Fixes:**
+
+1. **Unstable Internet Connection**
+
+ Ensure your device is connected to a reliable network. A weak or fluctuating connection can prevent Test Mode from loading assets or compiling the app.
+
+2. **System Clock Mismatch**
+
+ Your device’s date and time must be accurate. An incorrect system clock can interfere with authentication and secure connections.
+
+3. **Caching Issues**
+
+ - Clear your browser cache and cookies.
+ - Alternatively, try a different browser (e.g., Firefox instead of Chrome).
+
+4. **Browser Extensions**
+
+ Disable ad blockers, privacy plugins, and other browser extensions that might interfere with JavaScript execution.
+
+**Advanced Debugging:**
+
+5. **Infinite Loading**
+
+ This can be caused by:
+
+ - A **service outage**—try running Test Mode on a different project. If multiple projects fail, contact [FlutterFlow Support](mailto:support@flutterflow.io).
+ - **Unsupported custom code** in `main.dart` or elsewhere. Check for compatibility on [pub.dev](https://pub.dev).
+
+ **How to Debug:**
+
+ - Open the **browser console**:
+ - macOS: `Option + ⌘ + J`
+ - Windows/Linux: `Shift + CTRL + J`
+ - Look for errors related to plugins or methods not supported on the web.
+
+ If needed, **download your code** and run it locally using VS Code to pinpoint the issue.
+
+6. **Red Screen: Null Pointer Exceptions**
+
+ Occurs when your UI tries to render a `null` value, typically from:
+
+ - An API response that returns `null`
+ - Missing page parameters
+ - Unhandled `null` values in custom code or functions
+
+ **Solution:**
+
+ - Use console logs to identify the faulty page.
+ - For precise debugging, download the code and run it locally in VS Code.
+ - Enable **"Break on uncaught exceptions"** in the debugger to trace the exact line.
+
+7. **Red Screen: Type Exceptions**
+
+ Test Mode may show a red screen if:
+
+ - A widget is assigned the wrong data type (e.g., string instead of integer).
+ - An API or custom function returns a type mismatch.
+
+ :::note
+ These errors may only show locally, not in web test mode, due to Dart’s stricter type system.
+ :::
+
+8. **Build Fails**
+
+ If Test Mode won’t compile, causes may include:
+
+ - Silent bugs or logic errors in your project
+ - Incompatible third-party packages
+ - Code generation failure (contact support)
+
+ Check your widgets for:
+ - Wrong data types
+ - Incorrect bindings
+ - Plugins unsupported on the web
+
+9. **Blank Pages on Navigation**
+
+ Sometimes Test Mode compiles successfully, but certain pages remain blank.
+
+ **Likely causes:**
+
+ - **Flex layout issues** (example, Rows/Columns with misconfigured constraints)
+ - **RenderBox overflow errors**
+
+ **Solution:**
+
+ - Download and run the code locally.
+ - Use the debugger to trace the page layout that fails to render.
+
+**Final Checks**
+
+ - Confirm that you're logged into FlutterFlow in the same browser as Test Mode.
+ - Double-check any custom code or packages.
+ - Try building the project using the **Run Mode** to isolate Test Mode-specific issues.
+ - Always read the **Test Mode troubleshooting notes** in the upper left corner of the Test Mode window.
+
+Following these steps should help you resolve most issues related to slow loading, red screens, or failed Test Mode runs in FlutterFlow.