From 1761c494fa8861e49145d6da4adbd59d6980224f Mon Sep 17 00:00:00 2001
From: mrdavidorok
Date: Mon, 28 Jul 2025 22:33:36 +0100
Subject: [PATCH 01/12] moved articles from the uncategorized folder to various
aspect of document tree. Little formatting, no assets added
---
...dencies_to_custom_widgets_or_actions_in.md | 39 ++++++
...nable_image_upload_in_webview_on_device.md | 43 ++++++
...'s email address or password is invalid.md | 17 +++
.../Can't upload photo to Content Manager.md | 51 +++++++
...k [ after activating the dynamic link ].md | 40 ++++++
...g Data Types in App State Variable List.md | 43 ++++++
.../before-you-begin/build_your_first_app.md | 69 ++++++++++
docs/intro/before-you-begin/onboarding.md | 36 +++++
...mbed a Flutterflow web app into iFrames.md | 25 ++++
... performance we create with Flutterflow.md | 58 ++++++++
...et Address From Current Device Location.md | 102 ++++++++++++++
...input ] and update the same user record.md | 68 +++++++++
.../widgets/basic-widgets/How To Wrap Text.md | 66 +++++++++
.../I can't copy-paste widgets..md | 20 +++
...roject Sample How to Create a sub menu.md | 63 +++++++++
...Create An SwipeableStack In FlutterFlow.md | 73 ++++++++++
...code_edits_with_flutterflow_github_sync.md | 27 ++++
...ect in useEnable Realtime Collaboration.md | 41 ++++++
...t_modified_source_code_into_flutterflow.md | 22 +++
.../api/How To Resolve 404 API Call Errors.md | 44 ++++++
... Deploy Button Not Working when Clicked.md | 31 +++++
...n a NSPhotoLibraryUsageDescription key.md" | 57 ++++++++
....X' is closed for new build submissions.md | 69 ++++++++++
...file Doesn't Support Push Notifications.md | 69 ++++++++++
...port the Associated Domains capability..md | 72 ++++++++++
...ent team - Flutterflow and Local builds.md | 58 ++++++++
...provisioning_profile_sign_in_with_apple.md | 57 ++++++++
...loaded from Flutterflow, SHA1 Key Error.md | 51 +++++++
...de And Published Web application on web.md | 57 ++++++++
.../authentication/error in verify sms.md | 38 ++++++
.../google_signin_not_working_run_test_web.md | 57 ++++++++
...in the app via the image upload action..md | 36 +++++
...ts in FlutterFlow \342\200\223 PayWall.md" | 90 ++++++++++++
...in storage, 1 user upload all users see.md | 51 +++++++
...returning_results_despite_existing_data.md | 77 +++++++++++
.../backend/stripe_payment_unknown_error.md | 56 ++++++++
...Functions Admin in the Firebase Console.md | 40 ++++++
...n't Download APK or Code in FlutterFlow.md | 52 +++++++
...have exceeded the quota for subdomains..md | 55 ++++++++
...ot find End of Central Directory Record.md | 54 ++++++++
... error NoDecoderForImageFormatException.md | 36 +++++
.... Please contact support@flutterflow.io.md | 35 +++++
...eted. Unable to locate a Java Runtime..md" | 23 ++++
... is not a valid PEM encoded private key.md | 50 +++++++
...or_loading_project_for_test_or_run_mode.md | 59 ++++++++
...de Locally After Exporting My Code APK.md | 45 ++++++
.../Can't deploy Firestore Database rules.md | 76 +++++++++++
...an't deploy firestore database indexes..md | 82 +++++++++++
...se project, in CMS - content management.md | 42 ++++++
...fig must match your app's package name..md | 40 ++++++
...task 'appprocessReleaseGoogleServices'..md | 49 +++++++
...or your project under Settings Firebase.md | 44 ++++++
...r your Firebase project, and try again..md | 30 ++++
...irestore; from Datastore to Native mode.md | 32 +++++
...nfig must match your app's package name.md | 41 ++++++
...er than the previously uploaded version.md | 58 ++++++++
...ad key from store tmpkeystore.keystore.md | 52 +++++++
... Found SHA1 XXXXXXXX. Expected YYYYYYYY.md | 48 +++++++
...low for an Existing Google Play Project.md | 100 ++++++++++++++
...tising_id_declaration_error_google_play.md | 69 ++++++++++
...version_code_that_has_already_been_used.md | 54 ++++++++
.../upload-keystore-flutterflow-2.md | 100 ++++++++++++++
...ifications To A Specific Group Of Users.md | 71 ++++++++++
...anced_push_notification_troubleshooting.md | 67 +++++++++
...s, but Text is visible in RUNTEST mode..md | 56 ++++++++
.../Missing Purpose String in Info.plist.md | 85 ++++++++++++
...running my application on a real device.md | 41 ++++++
.../Test Mode Won\342\200\231t Load.md" | 129 ++++++++++++++++++
.../clear_database_before_running_tests.md | 28 ++++
.../svg_image_missing_color_on_real_device.md | 42 ++++++
70 files changed, 3758 insertions(+)
create mode 100644 docs/ff-concepts/adding-customization/add_dependencies_to_custom_widgets_or_actions_in.md
create mode 100644 docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md
create mode 100644 docs/ff-concepts/alerts/Create an alert if a user's email address or password is invalid.md
create mode 100644 docs/ff-concepts/file-handling/Can't upload photo to Content Manager.md
create mode 100644 docs/ff-concepts/navigation-routing/How can i access to Page link [ after activating the dynamic link ].md
create mode 100644 docs/ff-concepts/state-management/Missing Data Types in App State Variable List.md
create mode 100644 docs/intro/before-you-begin/build_your_first_app.md
create mode 100644 docs/intro/before-you-begin/onboarding.md
create mode 100644 docs/intro/ff-ui/Could we embed a Flutterflow web app into iFrames.md
create mode 100644 docs/intro/ff-ui/Is low performance of Flutterflow editor could affect the app performance we create with Flutterflow.md
create mode 100644 docs/resources/control-flow/backend-logic/backend-query/Get Address From Current Device Location.md
create mode 100644 docs/resources/control-flow/user-interactivity/How to Take an email from textField [ user input ] and update the same user record.md
create mode 100644 docs/resources/ui/widgets/basic-widgets/How To Wrap Text.md
create mode 100644 docs/resources/ui/widgets/basic-widgets/I can't copy-paste widgets..md
create mode 100644 docs/resources/ui/widgets/basic-widgets/Project Sample How to Create a sub menu.md
create mode 100644 docs/resources/ui/widgets/composing-widgets/How To Create An SwipeableStack In FlutterFlow.md
create mode 100644 docs/testing-deployment-publishing/branching-collaboration/ manage_code_edits_with_flutterflow_github_sync.md
create mode 100644 docs/testing-deployment-publishing/branching-collaboration/Project in useEnable Realtime Collaboration.md
create mode 100644 docs/testing-deployment-publishing/exporting-code/import_modified_source_code_into_flutterflow.md
create mode 100644 docs/troubleshooting/api/How To Resolve 404 API Call Errors.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/App Store Deploy Button Not Working when Clicked.md
create mode 100644 "docs/troubleshooting/apple-store-deployment/fetch-signing-files/ITMS-90683 Missing purpose string in Info.plist - The Info.plist file for the \342\200\234Runner.app\342\200\235 bundle should contain a NSPhotoLibraryUsageDescription key.md"
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning Profile Doesn't Support Push Notifications.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning profile [app store project ID] doesn't support the Associated Domains capability..md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/Signing for ImageNotification requires a development team - Flutterflow and Local builds.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning_profile_sign_in_with_apple.md
create mode 100644 docs/troubleshooting/authentication/Google Phone Authentication Not Working on Real Devices APK Downloaded from Flutterflow, SHA1 Key Error.md
create mode 100644 docs/troubleshooting/authentication/Google Sign-In Doesn't Work In RunTest Mode And Published Web application on web.md
create mode 100644 docs/troubleshooting/authentication/error in verify sms.md
create mode 100644 docs/troubleshooting/authentication/google_signin_not_working_run_test_web.md
create mode 100644 docs/troubleshooting/backend/I can't upload an image in the app via the image upload action..md
create mode 100644 "docs/troubleshooting/backend/RevenueCat for Subscription and One-Time Payments in FlutterFlow \342\200\223 PayWall.md"
create mode 100644 docs/troubleshooting/backend/Share mediafiles in storage, 1 user upload all users see.md
create mode 100644 docs/troubleshooting/backend/backend_query_not_returning_results_despite_existing_data.md
create mode 100644 docs/troubleshooting/backend/stripe_payment_unknown_error.md
create mode 100644 docs/troubleshooting/cloud-functions/Don't see Cloud Functions Admin in the Firebase Console.md
create mode 100644 docs/troubleshooting/deployment/Can't Download APK or Code in FlutterFlow.md
create mode 100644 docs/troubleshooting/deployment/Can't publish to Flutterflow.app as a subdomain. Error Error reserving subdomain. You have exceeded the quota for subdomains..md
create mode 100644 docs/troubleshooting/deployment/Codemagic build error Format Exception Could not find End of Central Directory Record.md
create mode 100644 docs/troubleshooting/deployment/DeploymentBuild for mobile error NoDecoderForImageFormatException.md
create mode 100644 docs/troubleshooting/deployment/Error Failed to create server directory. Please contact support@flutterflow.io.md
create mode 100644 "docs/troubleshooting/deployment/I get this error The operation couldn\342\200\231t be completed. Unable to locate a Java Runtime..md"
create mode 100644 docs/troubleshooting/deployment/Provided value is not a valid PEM encoded private key.md
create mode 100644 docs/troubleshooting/deployment/build_failed_error_loading_project_for_test_or_run_mode.md
create mode 100644 docs/troubleshooting/exporting-code/Resolve Issues Running Code Locally After Exporting My Code APK.md
create mode 100644 docs/troubleshooting/firebase/Can't deploy Firestore Database rules.md
create mode 100644 docs/troubleshooting/firebase/Can't deploy firestore database indexes..md
create mode 100644 docs/troubleshooting/firebase/Could not create an account as firebase@flutterflow.io to your firebase project, in CMS - content management.md
create mode 100644 docs/troubleshooting/firebase/Error Package name in Firebase Android config must match your app's package name..md
create mode 100644 docs/troubleshooting/firebase/Execution failed for task 'appprocessReleaseGoogleServices'..md
create mode 100644 docs/troubleshooting/firebase/Firebase project not configured.Make sure you set up Firebase for your project under Settings Firebase.md
create mode 100644 docs/troubleshooting/firebase/How To Resolve [Advanced] 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..md
create mode 100644 docs/troubleshooting/firebase/How to change modes in Firestore; from Datastore to Native mode.md
create mode 100644 docs/troubleshooting/firebase/Package name in firebase android config must match your app's package name.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/Error The bundle version must be higher than the previously uploaded version.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/Google Play Store deployment error Failed to read key from store tmpkeystore.keystore.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key. Found SHA1 XXXXXXXX. Expected YYYYYYYY.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/How to Retrieve and Upload Your Keystore File in FlutterFlow for an Existing Google Play Project.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/advertising_id_declaration_error_google_play.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/apk_specifies_a_version_code_that_has_already_been_used.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/upload-keystore-flutterflow-2.md
create mode 100644 docs/troubleshooting/notifications/Send Notifications To A Specific Group Of Users.md
create mode 100644 docs/troubleshooting/notifications/advanced_push_notification_troubleshooting.md
create mode 100644 docs/troubleshooting/test-mode/Can't see Text when using my app on mobile devices, but Text is visible in RUNTEST mode..md
create mode 100644 docs/troubleshooting/test-mode/Missing Purpose String in Info.plist.md
create mode 100644 docs/troubleshooting/test-mode/My app colors aren't correct when running my application on a real device.md
create mode 100644 "docs/troubleshooting/test-mode/Test Mode Won\342\200\231t Load.md"
create mode 100644 docs/troubleshooting/test-mode/clear_database_before_running_tests.md
create mode 100644 docs/troubleshooting/test-mode/svg_image_missing_color_on_real_device.md
diff --git a/docs/ff-concepts/adding-customization/add_dependencies_to_custom_widgets_or_actions_in.md b/docs/ff-concepts/adding-customization/add_dependencies_to_custom_widgets_or_actions_in.md
new file mode 100644
index 00000000..322a906f
--- /dev/null
+++ b/docs/ff-concepts/adding-customization/add_dependencies_to_custom_widgets_or_actions_in.md
@@ -0,0 +1,39 @@
+---
+keywords: ['dependencies', 'pubspec.yaml', 'custom widgets', 'flutterflow']
+slug: /add-custom-dependencies
+title: Add Dependencies to Custom Widgets or Actions
+---
+
+# Add Dependencies to Custom Widgets or Actions
+
+FlutterFlow does not currently support adding dependencies to the entire project via the `pubspec.yaml` file. However, you can include dependencies by associating them with specific **Custom Widgets** or **Custom Actions**.
+
+This approach ensures that only the relevant code includes the necessary packages.
+
+:::info[Prerequisites]
+To use this method, you must have a custom widget or action already created within your FlutterFlow project.
+:::
+
+## Steps to Add a Dependency
+
+1. **Open the Custom Widget or Action**
+ Navigate to your custom widget or action in FlutterFlow.
+
+2. **Add the Dependency**
+ In the **Dependencies** tab, add the required package name and version.
+
+3. **Refresh the Dependencies**
+ Click the **Refresh** icon to update the packages in your `pubspec.yaml` file.
+
+4. **Import the Package**
+ Use an import statement in your Dart code, such as:
+ ```dart
+ import 'package:your_package/your_package.dart';
+ ```
+
+ 
+
+:::note
+- Dependencies added this way are scoped to the custom code where they are declared.
+- You can repeat these steps for each custom widget or action requiring additional packages.
+:::
\ No newline at end of file
diff --git a/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md b/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md
new file mode 100644
index 00000000..ff380806
--- /dev/null
+++ b/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md
@@ -0,0 +1,43 @@
+---
+keywords: ['permissions', 'upload', 'view']
+slug: enable-image-upload-in-webview-on-device
+title: Enable Image Upload in WebView on Real Devices
+---
+
+# Enable Image Upload in WebView on Real Devices
+
+Image uploads may work in Run/Test mode but fail on real devices due to missing runtime permissions related to accessing the photo library.
+
+## Problem
+
+In web preview mode, permissions are managed by the browser, and image upload typically works without issues. However, on physical devices, accessing the photo library requires explicit runtime permissions.
+
+If the image upload is implemented inside a WebView, FlutterFlow does not automatically detect it and therefore does not request the necessary permissions.
+
+## Solution
+
+To allow image uploads from a WebView on a physical device, follow these steps:
+
+1. **Enable the Required Permission**
+ Navigate to **Settings → Permissions** in your FlutterFlow project and enable the **Photo Library** permission.
+
+ 
+
+2. **Request Permission at Runtime**
+ Before initiating the upload action inside the WebView, use the **Get Permission** action to explicitly request access to the photo library.
+
+ 
+
+3. **Reinstall the App**
+ After adding the permission:
+ - Uninstall the app from the device.
+ - Clear the app cache.
+ - Reinstall the app to ensure the permission prompt appears.
+
+## Notes
+
+:::warning
+If the permission dialog does not appear on first launch, the app will not have access to the photo library, and uploads inside the WebView will fail.
+:::
+
+Once permissions are correctly granted, image uploads inside the WebView will function as expected on physical devices.
diff --git a/docs/ff-concepts/alerts/Create an alert if a user's email address or password is invalid.md b/docs/ff-concepts/alerts/Create an alert if a user's email address or password is invalid.md
new file mode 100644
index 00000000..09e7003b
--- /dev/null
+++ b/docs/ff-concepts/alerts/Create an alert if a user's email address or password is invalid.md
@@ -0,0 +1,17 @@
+---
+keywords: ['email', 'address', 'alert']
+author: Unknown
+created_at: '1650489334'
+slug: /create-an-alert-if-a-user-s-email-address-or-password-is-invalid
+title: Create an alert if a user's email address or password is invalid
+updated_at: '1721942919'
+url: https://intercom.help/flutterflow/en/articles/6156971-create-an-alert-if-a-user-s-email-address-or-password-is-invalid
+---
+
+# Create an Alert if a User's Email Address or Password is Invalid
+
+FlutterFlow automatically displays authentication error messages using a **SnackBar** widget. This means you **do not need to manually create alert dialogs** for common login issues such as an incorrect email or password.
+
+The error messages are shown automatically when a login attempt fails, providing a seamless experience for both the developer and end user.
+
+
diff --git a/docs/ff-concepts/file-handling/Can't upload photo to Content Manager.md b/docs/ff-concepts/file-handling/Can't upload photo to Content Manager.md
new file mode 100644
index 00000000..8da8541a
--- /dev/null
+++ b/docs/ff-concepts/file-handling/Can't upload photo to Content Manager.md
@@ -0,0 +1,51 @@
+---
+keywords: ['content', 'upload', 'photo']
+author: Unknown
+created_at: '1657225806'
+slug: /can-t-upload-photo-to-content-manager
+title: Can't upload photo to Content Manager
+updated_at: '1659057829'
+url: https://intercom.help/flutterflow/en/articles/6369337-can-t-upload-photo-to-content-manager
+---
+
+# Can't Upload Photo to Content Manager
+
+By default, FlutterFlow's CMS does not support image uploads due to restrictive Firebase Storage rules. To enable photo uploads, you need to update your Firestore Security Rules.
+
+---
+
+## Steps to Enable Photo Uploads
+
+### 1. Open Firebase Console
+
+In your FlutterFlow project, go to:
+
+**Settings & Integrations → Firebase → Open Firebase Console**
+
+
+
+---
+
+### 2. Navigate to Storage Rules
+
+In the Firebase Console, click:
+
+**Storage → Rules**
+
+
+
+---
+
+### 3. Update and Publish New Rules
+
+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;
+ }
+ }
+}
diff --git a/docs/ff-concepts/navigation-routing/How can i access to Page link [ after activating the dynamic link ].md b/docs/ff-concepts/navigation-routing/How can i access to Page link [ after activating the dynamic link ].md
new file mode 100644
index 00000000..cceb8822
--- /dev/null
+++ b/docs/ff-concepts/navigation-routing/How can i access to Page link [ after activating the dynamic link ].md
@@ -0,0 +1,40 @@
+---
+title: Access Page Links After Activating Dynamic Links
+slug: /access-page-link-after-activating-dynamic-link
+keywords: ['access', 'dynamic', 'activating']
+---
+
+# Access Page Links After Activating Dynamic Links
+
+Once you've enabled **Deep Linking & Routing** in FlutterFlow, you can also activate **Firebase Dynamic Links**.
+
+> Want to know more about Firebase Dynamic Links?
+> Refer to the Firebase documentation for setup and integration details.
+
+
+
+When you activate dynamic links, you gain access to **page-specific links**. This allows you to share or route users to exact screens within your app.
+
+---
+
+## Important Note
+
+If you enable dynamic links, you must use `"https"` for the URL scheme.
+
+---
+
+## How to Set Up Dynamic Links in FlutterFlow
+
+To share or use the current page URL, follow these steps:
+
+1. **Add an Action**: Use the `Generate Current Page Link` action to create a dynamic link for the active screen.
+
+2. **Access the Page URL**: Once generated, the page URL becomes accessible through the **Widget State → Current Page Link**.
+
+3. **Use It in Another Action**: For example, on your **Share** button, add:
+ - A `Generate Current Page Link` action first
+ - Then a `Share` action using `Current Page Link` as the source
+
+---
+
+
diff --git a/docs/ff-concepts/state-management/Missing Data Types in App State Variable List.md b/docs/ff-concepts/state-management/Missing Data Types in App State Variable List.md
new file mode 100644
index 00000000..9914f334
--- /dev/null
+++ b/docs/ff-concepts/state-management/Missing Data Types in App State Variable List.md
@@ -0,0 +1,43 @@
+---
+keywords: ['list', 'missing', 'state']
+slug: /missing-data-types-in-app-state-variable-list
+title: Missing Data Types in App State Variable List
+---
+
+# Missing Data Types in App State Variable List
+
+When creating an app state variable in FlutterFlow, you should normally see a list of available data types. However, in some cases—especially in **older projects**—these options may not appear.
+
+---
+
+## Why This Happens
+
+This issue is often caused by **Deep Linking not being enabled** in the project settings. Without Deep Linking, the data types list may fail to load in the App State configuration.
+
+---
+
+## How to Fix It
+
+Follow these steps to enable Deep Linking:
+
+1. Open your project in **FlutterFlow**
+2. Go to **Project Settings**
+3. Scroll to the **App Details** section
+4. Open **Deep Linking & Route**
+5. **Turn on the Deep Linking** option
+
+---
+
+
+
+Once Deep Linking is enabled, you should be able to see the full list of data types when creating or editing App State variables.
+
+---
+
+## Conclusion
+
+This quick fix resolves a frustrating bug and can save you significant time during development. If enabling Deep Linking doesn't resolve the issue, please contact [FlutterFlow Support](mailto:support@flutterflow.io) for further assistance.
+
+> ✅ Pro Tip: This issue most often affects **legacy or older projects**. For all new projects, Deep Linking is typically enabled by default.
+
+Stay patient, keep building, and happy coding!
diff --git a/docs/intro/before-you-begin/build_your_first_app.md b/docs/intro/before-you-begin/build_your_first_app.md
new file mode 100644
index 00000000..9625015e
--- /dev/null
+++ b/docs/intro/before-you-begin/build_your_first_app.md
@@ -0,0 +1,69 @@
+---
+keywords: ['build', 'first']
+slug: build-your-first-app
+title: Build Your First App
+---
+
+# Build Your First App
+
+Welcome to FlutterFlow — we're glad you're here!
+In this tutorial, you'll build a simple app in **less than 10 minutes**.
+
+---
+
+## 1. Create a New Project
+
+- Select **Create New**.
+
+
+
+- A popup will appear.
+ Enter a name for your project (e.g., `MyFirstProject`), then select **Create New** under **Blank App**.
+
+
+
+---
+
+## 2. Change the Page Title
+
+- Click where it says **Page Title**.
+- In the **Properties Panel** on the right, change the text to **Home**.
+
+
+
+---
+
+## 3. Style the Container
+
+- Drag a **Container** widget onto your app canvas.
+
+
+
+- In the **Padding & Alignment** section of the right panel:
+ - Click the lock icon.
+ - Enter `16` in the **L** field (this applies 16px padding on all sides).
+
+- In the **Container Properties** section:
+ - Set the width to **∞** (original is 100).
+ - Click the **Fill Color** square.
+ - From the color selector popup, choose **Secondary BG** and click **Use Color**.
+
+- Under **Border Radius**:
+ - Click the lock icon.
+ - Enter `8` for the **TL** value.
+
+---
+
+## 4. Add Content to the Container
+
+- Drag a **Column** inside your container.
+- In the **Padding & Alignment** section, unlock and enter `12`.
+- Drag a **Row** inside the column.
+- Then, drag a **Text** widget inside the row.
+
+- In the **Properties Panel**:
+ - Change the text to **Active Projects**.
+ - Scroll to the **Text Properties** section.
+ - Under **Theme Text Style**, select **Body Text 2**.
+
+
diff --git a/docs/intro/before-you-begin/onboarding.md b/docs/intro/before-you-begin/onboarding.md
new file mode 100644
index 00000000..2a3d11bd
--- /dev/null
+++ b/docs/intro/before-you-begin/onboarding.md
@@ -0,0 +1,36 @@
+---
+keywords: ['onboarding']
+slug: onboarding
+title: Onboarding
+---
+
+# Onboarding
+
+To manage user onboarding effectively, combine **Local State**, **Persisted Value**, and **On PageLoad** actions.
+
+## Strategy
+
+Use conditional logic to verify whether the user has completed onboarding before allowing access to key parts of your app.
+
+## Implementation Steps
+
+1. **Track Onboarding Completion**
+ - Create a **Local State** or **Persisted Value** (e.g., `hasCompletedOnboarding`) to record the user's onboarding status.
+
+2. **Check Status on Page Load**
+ - Use an **On Page Load** action to check if the value indicates the user has completed onboarding.
+ - If not, navigate the user to the onboarding screen.
+
+3. **Enforce Onboarding Before Critical Actions**
+ - Before allowing actions like checkout, data submission, or profile updates:
+ - Check the onboarding completion value.
+ - If onboarding is incomplete, redirect the user accordingly.
+
+## Why It Matters
+
+This approach ensures users:
+- Do not skip essential setup steps.
+- Receive proper guidance through the app's initial flow.
+- Avoid errors or confusion during key interactions.
+
+> ✅ Use **Persisted Values** if onboarding should persist across app sessions. Use **Local State** if the status should reset after each session.
diff --git a/docs/intro/ff-ui/Could we embed a Flutterflow web app into iFrames.md b/docs/intro/ff-ui/Could we embed a Flutterflow web app into iFrames.md
new file mode 100644
index 00000000..c436644a
--- /dev/null
+++ b/docs/intro/ff-ui/Could we embed a Flutterflow web app into iFrames.md
@@ -0,0 +1,25 @@
+---
+keywords: ['could', 'embed', 'iframes']
+author: Unknown
+created_at: '1677842812'
+slug: /could-we-embed-a-flutterflow-web-app-into-iframes
+title: Could we embed a FlutterFlow web app into iFrames?
+updated_at: '1678244479'
+url: None
+---
+
+# Could We Embed a FlutterFlow Web App Into iFrames?
+
+FlutterFlow web applications may not load correctly within **iframes** due to their reliance on **local storage**. However, it is possible to embed these apps within iframes by **enabling third-party cookies** from the subdomain where your FlutterFlow app is hosted.
+
+
+
+> ⚠️ **Important Notes:**
+>
+> - While enabling third-party cookies may allow the application to load inside an iframe, **some features may not function as expected**.
+> - Many modern browsers and reputable websites intentionally **block iframe embedding** for security reasons.
+
+## Recommendation
+
+If you decide to use this method, **test your embedded application thoroughly** to ensure that all necessary features work correctly.
+
diff --git a/docs/intro/ff-ui/Is low performance of Flutterflow editor could affect the app performance we create with Flutterflow.md b/docs/intro/ff-ui/Is low performance of Flutterflow editor could affect the app performance we create with Flutterflow.md
new file mode 100644
index 00000000..b54eeb80
--- /dev/null
+++ b/docs/intro/ff-ui/Is low performance of Flutterflow editor could affect the app performance we create with Flutterflow.md
@@ -0,0 +1,58 @@
+---
+keywords: ['affect', 'could', 'performance']
+slug: /is-low-performance-of-flutterflow-editor-could-affect-the-app-performance-we-create-with-flutterflow
+title: Does FlutterFlow Editor Performance Affect the Final App?
+---
+
+# Does FlutterFlow Editor Performance Affect the Final App?
+
+When using a drag-and-drop interface like FlutterFlow to build applications, a significant amount of code is generated behind the scenes. This sometimes raises concerns: _Does sluggish performance in the FlutterFlow editor impact the app's actual performance?_
+
+The short answer: **No, it does not.**
+
+## Understanding the Difference
+
+The performance of the **FlutterFlow editor** is separate from the performance of the **final app**. Just because the editor might be slow on your machine doesn’t mean your app will be slow when built and deployed.
+
+### Analogy
+
+> Think of it like using a photo editor. If Adobe Photoshop runs slowly on your computer, it doesn’t make your exported images blurry — the tool’s speed doesn’t affect the quality of the output.
+
+The same concept applies here. The generated Flutter code may be extensive, but it compiles down efficiently and runs independently of the development environment.
+
+---
+
+## Known Editor Performance Factors
+
+Some aspects of the FlutterFlow editor may contribute to slower experience:
+
+### 1. **Typing Long Texts**
+
+Typing directly into large text fields in FlutterFlow can cause CPU spikes because every keystroke triggers real-time updates.
+**Recommendation**: Draft long text in an external editor and paste it into FlutterFlow.
+
+### 2. **Large Projects**
+
+Projects with many pages, components, or text fields may consume more memory and perform slower in the browser.
+
+### 3. **Browser Cache Limitations**
+
+Working in FlutterFlow for extended periods without restarting your browser can lead to performance degradation due to cache limits.
+
+---
+
+## Optimization Tips
+
+- Use the **macOS desktop app** version of FlutterFlow when working mostly on UI.
+- Periodically **restart or hard-refresh** your browser to clear temporary data.
+- Consider breaking very large projects into modular parts if needed.
+
+---
+
+## Final Thoughts
+
+Despite minor editor slowdowns, FlutterFlow is a robust platform for building performant, real-world apps. To validate performance, simply build your app and run it on a real device — most users experience great results.
+
+For examples and inspiration from real-world projects, visit the [FlutterFlow Experts Directory](https://experts.flutterflow.io/).
+
+By following best practices, you can get the most out of FlutterFlow and continue developing high-quality apps efficiently.
diff --git a/docs/resources/control-flow/backend-logic/backend-query/Get Address From Current Device Location.md b/docs/resources/control-flow/backend-logic/backend-query/Get Address From Current Device Location.md
new file mode 100644
index 00000000..e33ad302
--- /dev/null
+++ b/docs/resources/control-flow/backend-logic/backend-query/Get Address From Current Device Location.md
@@ -0,0 +1,102 @@
+---
+keywords: ['device location', 'address', 'geocoding', 'google maps']
+slug: /convert-device-location-to-address
+title: Convert Device Location to Address
+---
+
+# Convert Device Location to Address
+
+Learn how to convert a device's current geographic location into a readable address using either the Google Maps API or a Dart package.
+
+:::info[Prerequisites]
+- Your project must have location permissions enabled.
+- A Google Maps API key is required if using the Google Maps API method.
+- Basic knowledge of API calls and custom functions in FlutterFlow is recommended.
+:::
+
+## Method 1: Using the Google Maps API
+
+### Step 1: Enable the Google Maps API
+
+Go to the [Google Cloud Console](https://console.cloud.google.com/) and enable the **Geocoding API** for your project.
+
+
+
+### Step 2: Store API Key in Local State
+
+Add your API key to the local app state.
+
+
+
+### Step 3: Configure the API Call
+
+1. Navigate to **API Calls** in the FlutterFlow menu.
+2. Create a new API call:
+ - **Base URL:** `https://maps.googleapis.com/maps/api/geocode/json`
+ - **Method:** `GET`
+3. Add the following query parameters:
+ - `latlng` (String)
+ - `apiKey` (String)
+
+
+
+:::tip
+Refer to the [Creating API Calls](/api-calls/create-api-call) guide for step-by-step instructions.
+:::
+
+### Step 4: Create a Custom Function
+
+Create a custom function that accepts a `LatLng` object and returns a formatted string in the form of `latitude,longitude`.
+
+This will be used to populate the `latlng` variable in the API call.
+
+
+
+Add a button to the UI that triggers the backend API call using this custom function.
+
+### Step 5: Extract JSON Data
+
+1. Run the API call.
+2. Use **JSON Path** to extract the address string.
+
+Example JSON path for city name:
+```json
+$.results[0].address_components[1].long_name
+```
+
+
+
+
+Display the result in a `Text` widget using the JSON path result.
+
+
+
+---
+
+## Method 2: Using the Geocoding Dart Package
+
+You can also use a custom action that leverages the [geocoding](https://pub.dev/packages/geocoding) Dart plugin.
+
+1. Pass the current device location to the custom action.
+2. Convert it to a formatted address string.
+
+
+
+Set the `Text` widget's value from the result of the custom action.
+
+
+
+:::warning
+Using third-party Dart packages in custom actions requires adding them to your `pubspec.yaml` file.
+:::
+
+For details, refer to the [Adding Dependencies Guide](/custom-functions/add-pubspec-dependencies).
+
+---
+
+## Resources
+
+- [Google Geocoding API Documentation](https://developers.google.com/maps/documentation/geocoding/overview)
+- [Creating Custom Actions](/custom-functions/overview)
+- [Creating API Calls in FlutterFlow](/api-calls/create-api-call)
+- [Working with JSON Path](/api-calls/json-path-expressions)
diff --git a/docs/resources/control-flow/user-interactivity/How to Take an email from textField [ user input ] and update the same user record.md b/docs/resources/control-flow/user-interactivity/How to Take an email from textField [ user input ] and update the same user record.md
new file mode 100644
index 00000000..7a53be5d
--- /dev/null
+++ b/docs/resources/control-flow/user-interactivity/How to Take an email from textField [ user input ] and update the same user record.md
@@ -0,0 +1,68 @@
+---
+keywords: ['email', 'input', 'update']
+slug: update-user-record-from-email-input
+title: Update a User Record from Email Input
+---
+
+# Update a User Record from Email Input
+
+In some cases, you may want users to enter an email address, and if a user with that email exists in your Firebase collection, update their record or associate their reference to another document.
+
+FlutterFlow does not support direct query-based actions out-of-the-box, but you can achieve this using widget queries and local state.
+
+## Prerequisites
+
+Before starting, ensure you have:
+
+- Completed Firebase setup in your project.
+- Created a Firebase collection that contains user documents.
+- Added user data to your Firebase database.
+
+## Step 1: Set Up the TextField
+
+Create a `TextField` widget to accept the email address from the user.
+
+- Enable **Update Page on Change** for the `TextField`. This refreshes the page and allows queries to react to every character typed.
+
+
+
+## Step 2: Add a Query-Driven Result Widget
+
+Next, create a widget (e.g., a container or a button) that shows query results.
+
+- Attach a **Single Document Query** to this widget to search for a user with the provided email.
+- Enable **Hide Widget If No Result** in the query settings. This ensures the widget only appears if a match is found.
+
+
+
+If the widget is visible, it means a matching user was found and their document is available for update.
+
+## Step 3: Add the Update Action
+
+In the button's **Action Flow**, add an **Update Document** action.
+
+- Use the result of the query (user document) as the target.
+- Update the fields you want.
+- Optionally, display a snackbar to confirm the update.
+
+
+
+## Alternative: Use Local State
+
+If you prefer not to use “Update Page on Change”:
+
+1. Store the `TextField` value in **Local State**.
+2. Trigger the local state update using a button.
+3. Use that local state value to filter your query.
+
+This gives you more control over when queries are triggered.
+
+## Example
+
+You can explore a working example in this FlutterFlow project:
+
+👉 [Open Project](https://app.flutterflow.io/project/flutterflow-adcdi2) and check the `UpdateUser` page.
+
+---
+
+This method allows you to simulate dynamic queries in FlutterFlow by combining `TextField`, `Single Document Query`, and conditional widget visibility.
diff --git a/docs/resources/ui/widgets/basic-widgets/How To Wrap Text.md b/docs/resources/ui/widgets/basic-widgets/How To Wrap Text.md
new file mode 100644
index 00000000..dcbaf959
--- /dev/null
+++ b/docs/resources/ui/widgets/basic-widgets/How To Wrap Text.md
@@ -0,0 +1,66 @@
+---
+keywords: ['wrap', 'text']
+slug: wrapping-text-in-containers-and-listviews
+title: Wrapping Text in Containers and ListViews
+---
+
+# Wrapping Text in Containers and ListViews
+
+When working with text inside containers, `ListView`, or other widgets, you may encounter situations where the text overflows or gets clipped. This is often because the text widget isn’t configured to wrap properly.
+
+## Common Use Case: Text Inside a Container in a ListView
+
+If you have a container inside a `ListView` and text is overflowing, follow these steps to enable wrapping:
+
+### 1. Use a `Text` Widget with `softWrap: true` and `maxLines`
+Ensure your `Text` widget is configured like this:
+
+```dart
+Text(
+ 'Your long text here...',
+ softWrap: true,
+ overflow: TextOverflow.visible,
+ maxLines: null,
+)
+```
+
+Also, would be good to outline any other use cases where text would overflow and it might not be clear how to wrap it
+
+
+## 2. Avoid Fixed Widths When Possible
+
+If you're using a fixed width for the container, the text may overflow if it's too long. Instead, use constraints like padding or flexible widgets such as `Expanded` or `Flexible`.
+
+## 3. Wrap Text in a Column or Expanded
+
+If you're placing text in a `Row` or a `Column`, make sure the `Text` widget is wrapped in an `Expanded` or `Flexible` widget so it takes up the available space:
+
+```dart
+Row(
+ children: [
+ Expanded(
+ child: Text(
+ 'This is a long line of text that will now wrap correctly.',
+ ),
+ ),
+ ],
+)
+```
+
+## Other Scenarios Where Text Might Overflow
+
+- **Inside Buttons**: When the button size is too small for the text.
+- **In Cards or Custom Widgets**: If the `Text` widget is placed inside a container with hardcoded constraints.
+- **Dialog Boxes**: Particularly when the content is dynamically generated and not sized responsively.
+
+Use proper layout and flexible constraints to ensure text displays correctly on all screen sizes.
+
+## Summary
+
+To prevent text overflow:
+
+- Use `softWrap: true` where needed.
+- Avoid hardcoded widths and heights.
+- Wrap text with layout widgets like `Expanded`, `Flexible`, or `Wrap`.
+
+These practices will help ensure a responsive, consistent, and readable user interface.
diff --git a/docs/resources/ui/widgets/basic-widgets/I can't copy-paste widgets..md b/docs/resources/ui/widgets/basic-widgets/I can't copy-paste widgets..md
new file mode 100644
index 00000000..6a3340a4
--- /dev/null
+++ b/docs/resources/ui/widgets/basic-widgets/I can't copy-paste widgets..md
@@ -0,0 +1,20 @@
+---
+keywords: ['paste', 'widgets', 'copy']
+slug: unable-to-copy-and-paste-widgets-in-flutterflow
+title: Unable to Copy and Paste Widgets in FlutterFlow
+---
+
+# Unable to Copy and Paste Widgets in FlutterFlow
+
+If you're unable to copy and paste widgets, it's likely due to your browser's clipboard permissions.
+
+## How to Fix It
+
+Make sure **Clipboard access** is allowed for FlutterFlow in your browser. If you're using Chrome, follow these steps:
+
+1. Click the **lock icon** next to the website address in the browser's address bar.
+2. A popup will appear. Set **Clipboard** permissions to **Allow**.
+
+ 
+
+After adjusting the permissions, try copy-pasting the widget again.
diff --git a/docs/resources/ui/widgets/basic-widgets/Project Sample How to Create a sub menu.md b/docs/resources/ui/widgets/basic-widgets/Project Sample How to Create a sub menu.md
new file mode 100644
index 00000000..511c9863
--- /dev/null
+++ b/docs/resources/ui/widgets/basic-widgets/Project Sample How to Create a sub menu.md
@@ -0,0 +1,63 @@
+---
+keywords: ['menu', 'sample', 'create']
+slug: /create-sub-menu-with-local-state
+title: Create a Sub Menu With Local State
+---
+
+# Create a Sub Menu With Local State
+
+This guide demonstrates how to implement a toggleable sub-menu using a boolean local state variable in FlutterFlow.
+
+> **Project Preview**
+> **Editor**: [https://app.flutterflow.io/project/sub-menu-840l5q](https://app.flutterflow.io/project/sub-menu-840l5q)
+> **Run Mode**: [https://app.flutterflow.io/run/LfzBGTaef8WldndHa2x4](https://app.flutterflow.io/run/LfzBGTaef8WldndHa2x4)
+
+
+
+## Overview
+
+You will create a local state variable to control the visibility of the sub-menu. The value `true` means the menu is open, and `false` means it is hidden.
+
+This implementation requires the **Stack** widget to overlay the menu correctly.
+
+## Implementation Steps
+
+### 1. Create a Local State Variable
+
+- Add a **local state variable** of type **boolean**
+- Default value: `false`
+
+This variable will control whether the menu is visible.
+
+### 2. Add the Sub Menu to Your UI
+
+- Place the sub-menu where it best fits your design.
+- Wrap the menu in a **Visibility** widget.
+- Set the visibility condition to your local state variable.
+
+> 💡 Use a **Stack** widget to ensure the menu overlays the main content properly.
+
+### 3. Toggle Menu Visibility With the Menu Icon Button
+
+- Add an **IconButton** to open/close the menu.
+- On tap, add a conditional action:
+ - If the local state variable is `false`, set it to `true`.
+ - If it is `true`, set it to `false`.
+
+### 4. Hide the Menu After Selecting an Item
+
+- For each menu item:
+ - Add your desired navigation or action.
+ - After the action, set the local state variable to `false`.
+
+### 5. Close the Menu When Tapping Outside
+
+- Wrap your page’s main widget (usually the body) with a **GestureDetector**.
+- On tap, set the local state variable to `false`.
+
+This ensures the menu closes when users tap anywhere outside of it.
+
+---
+
+By following this structure, you can create a dynamic sub-menu that behaves like a typical mobile drawer or contextual menu, using FlutterFlow’s local state system.
+
diff --git a/docs/resources/ui/widgets/composing-widgets/How To Create An SwipeableStack In FlutterFlow.md b/docs/resources/ui/widgets/composing-widgets/How To Create An SwipeableStack In FlutterFlow.md
new file mode 100644
index 00000000..0599f833
--- /dev/null
+++ b/docs/resources/ui/widgets/composing-widgets/How To Create An SwipeableStack In FlutterFlow.md
@@ -0,0 +1,73 @@
+---
+title: Create a SwipeableStack in FlutterFlow
+slug: /create-swipeablestack-in-flutterflow
+keywords: ['swipeablestack', 'create', 'flutterflow']
+---
+
+# Create a SwipeableStack in FlutterFlow
+
+## When to Use a SwipeableStack Widget
+
+A **SwipeableStack** widget is used to create interfaces where multiple cards or elements are stacked and swiped horizontally or vertically by the user. This UI pattern is helpful for:
+
+- **Tinder-like card swiping:** Allow users to swipe left or right to like or dislike items.
+- **Image carousels or galleries:** Let users browse through content one item at a time by swiping.
+- **Onboarding screens:** Present introduction screens that can be swiped sequentially.
+- **Content exploration:** Enable intuitive navigation through items like articles or products.
+
+> **Note:** While a swipeable stack offers interactive UX, ensure it aligns with your design goals and performs well, especially on low-end devices.
+
+## Required Widgets
+
+- **SwipeableStack Widget**
+
+## User Interaction
+
+- **Control SwipeableStack View** (via actions)
+
+---
+
+## Steps to Implement
+
+### Step 1: Add a SwipeableStack Widget
+
+Place the **SwipeableStack** widget onto your canvas or screen.
+
+
+
+---
+
+### Step 2: Set an Action on Page Load
+
+Assign an action to the `Scaffold` on the **Page Load** event.
+
+
+
+---
+
+### Step 3: Define the Control Action
+
+In the **Define Actions** panel, choose **Control Swipeable Stack**.
+
+
+
+---
+
+### Step 4: Choose the Swipe Trigger Type
+
+Select one of the following trigger options:
+
+1. **Trigger Left Swipe** – Initiates swipe to the left
+2. **Trigger Right Swipe** – Initiates swipe to the right
+3. **Trigger Up Swipe** – Initiates swipe upwards
+4. **Trigger Down Swipe** – Initiates swipe downwards
+
+
+
+Once selected, the widget will respond using the configured swipe trigger.
+
+---
+
+## Need Help?
+
+If you have any questions, feel free to contact support via chat or email at [support@flutterflow.io](mailto:support@flutterflow.io).
diff --git a/docs/testing-deployment-publishing/branching-collaboration/ manage_code_edits_with_flutterflow_github_sync.md b/docs/testing-deployment-publishing/branching-collaboration/ manage_code_edits_with_flutterflow_github_sync.md
new file mode 100644
index 00000000..ca0d19a8
--- /dev/null
+++ b/docs/testing-deployment-publishing/branching-collaboration/ manage_code_edits_with_flutterflow_github_sync.md
@@ -0,0 +1,27 @@
+---
+keywords: ['made', 'edits', 'them']
+slug: manage-code-edits-with-flutterflow-github-sync
+title: Manage Code Edits with FlutterFlow GitHub Sync
+---
+
+# Manage Code Edits with FlutterFlow GitHub Sync
+
+When syncing your project to GitHub, FlutterFlow always pushes changes to a branch called `flutterflow`. To prevent your manual edits from being overwritten, avoid modifying this branch directly.
+
+---
+
+## Recommended Workflow
+
+1. **Push from FlutterFlow to GitHub**
+ - FlutterFlow commits code to the `flutterflow` branch.
+
+2. **Create a Working Branch**
+ - Merge the `flutterflow` branch into a separate branch (e.g., `main`).
+ - Perform local modifications in this working branch.
+
+3. **Preserve Custom Changes**
+ - On future pushes, FlutterFlow updates the `flutterflow` branch.
+ - Manually merge `flutterflow` into `main` to keep or discard specific changes.
+
+This strategy ensures that local customizations remain safe while benefiting from updates pushed by FlutterFlow.
+
diff --git a/docs/testing-deployment-publishing/branching-collaboration/Project in useEnable Realtime Collaboration.md b/docs/testing-deployment-publishing/branching-collaboration/Project in useEnable Realtime Collaboration.md
new file mode 100644
index 00000000..21ed1ec1
--- /dev/null
+++ b/docs/testing-deployment-publishing/branching-collaboration/Project in useEnable Realtime Collaboration.md
@@ -0,0 +1,41 @@
+---
+keywords: ['firebase', 'android', 'package']
+slug: /firebase-config-package-name-mismatch
+title: Fix Firebase Config Package Name Mismatch for Android
+---
+
+# Fix Firebase Config Package Name Mismatch for Android
+
+This error occurs when the **package name in your Firebase configuration file does not match** the package name defined in your FlutterFlow project.
+
+> 💡 This is a common issue when the package name is changed in FlutterFlow but the Firebase config files are not updated accordingly.
+
+## Cause
+
+Firebase uses the **package name** to identify your Android app. If there is a mismatch between the package name in your FlutterFlow project and the one used to generate the Firebase config (`google-services.json`), Firebase integration will fail.
+
+## Resolution Steps
+
+### 1. Open Firebase Settings in FlutterFlow
+
+- In your FlutterFlow project, navigate to:
+ - **Settings > Firebase**
+
+> 
+
+### 2. Regenerate Firebase Config Files
+
+- Click on **Regenerate Config Files**
+- Enter the correct package name that matches your FlutterFlow project
+- Click **Generate File**
+
+> 
+
+### 3. Re-Test Firebase Integration
+
+- Download the new `google-services.json` file if needed
+- Deploy or run the app again to verify the error is resolved
+
+---
+
+By ensuring the package names match exactly between FlutterFlow and Firebase—including capitalization and formatting—you can resolve this configuration error and restore Firebase functionality.
diff --git a/docs/testing-deployment-publishing/exporting-code/import_modified_source_code_into_flutterflow.md b/docs/testing-deployment-publishing/exporting-code/import_modified_source_code_into_flutterflow.md
new file mode 100644
index 00000000..61d191fa
--- /dev/null
+++ b/docs/testing-deployment-publishing/exporting-code/import_modified_source_code_into_flutterflow.md
@@ -0,0 +1,22 @@
+---
+keywords: ['android', 'flutterflow', 'import']
+slug: import-modified-source-code-into-flutterflow
+title: Import Modified Source Code into FlutterFlow
+---
+
+# Import Modified Source Code into FlutterFlow
+
+FlutterFlow currently **does not support** importing source code that has been manually modified in external IDEs such as Android Studio or VS Code back into the FlutterFlow visual builder.
+
+:::note
+You can run modified source code from GitHub in **Test Mode**, but these changes cannot be synced back into the FlutterFlow UI editor.
+:::
+
+## Recommended Workflow
+
+If you plan to make significant custom code changes, it’s best to manage those changes **outside of FlutterFlow**. Treat FlutterFlow as your starting point or prototyping tool, and use an external IDE for advanced customizations.
+
+---
+
+> ⚠️ Once you export and modify the code externally, any updates made in FlutterFlow cannot be merged or reflected in the modified code automatically.
+
diff --git a/docs/troubleshooting/api/How To Resolve 404 API Call Errors.md b/docs/troubleshooting/api/How To Resolve 404 API Call Errors.md
new file mode 100644
index 00000000..3f6c263e
--- /dev/null
+++ b/docs/troubleshooting/api/How To Resolve 404 API Call Errors.md
@@ -0,0 +1,44 @@
+---
+title: Resolving 404 API Call Errors
+slug: /resolving-404-api-call-errors
+keywords: ['api', 'call', 'errors']
+---
+
+# Resolving 404 API Call Errors
+
+Standard API status codes are returned when unsuccessful API calls are made in FlutterFlow. One of the most common errors is the **404 (Resource Not Found)** status code. Here's how to understand and resolve it.
+
+## Understanding the 404 Error
+
+The `404` error means that the requested resource could not be found on the server. This is typically due to:
+
+- An incorrect endpoint URL.
+- A missing resource ID or parameter in the request.
+- Backend service not deployed or incorrectly configured.
+
+
+
+## How to Resolve It
+
+1. **Verify the API URL**
+ Double-check that the base URL and endpoint path are correct. Typos or incorrect paths will result in a 404.
+
+2. **Check Request Parameters**
+ Ensure that any required query parameters, path variables, or headers are included and properly formatted.
+
+3. **Validate API Key and Authentication**
+ Some APIs return a 404 if authentication is missing or incorrect to prevent information leakage.
+
+4. **Ensure the Resource Exists**
+ If your call is trying to fetch or modify a specific item, make sure that the resource actually exists in the backend.
+
+5. **Test Outside FlutterFlow**
+ Use tools like Postman or curl to test the endpoint directly and confirm that the backend is returning the expected data.
+
+6. **Consult API Documentation**
+ Review the API docs to ensure you're using the endpoint correctly, including the HTTP method (GET, POST, etc.).
+
+## Summary
+
+The 404 error is a common but fixable issue when working with APIs in FlutterFlow. By validating URLs, checking resource existence, and ensuring proper parameters, you can quickly debug and resolve these errors.
+
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/App Store Deploy Button Not Working when Clicked.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/App Store Deploy Button Not Working when Clicked.md
new file mode 100644
index 00000000..90c20497
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/App Store Deploy Button Not Working when Clicked.md
@@ -0,0 +1,31 @@
+# App Store Deploy Button Not Working
+
+---
+
+**Problem:**
+When attempting to deploy your application to the App Store, the deploy button may become unresponsive. If you inspect the browser's console, you might see the following error:
+
+```text
+POST https://api.flutterflow.io/v1/codemagicBuildRequest 503
+```
+
+---
+
+## Why Does This Happen?
+This error typically occurs when your project contains very large assets (such as videos or large images). If the total project size exceeds the recommended limit, the deployment request is rejected by Codemagic.
+
+- **Recommended project size:** 50 MB or less
+
+---
+
+## How to Fix
+1. **Remove Large Assets:**
+ - Identify and remove large files (especially videos or high-resolution images) from your project assets.
+ - Instead, host these files externally (e.g., on a CDN or cloud storage) and access them via network URLs.
+2. **Check Project Size:**
+ - Ensure your project remains under the 50 MB limit.
+
+---
+
+## Still Not Working?
+If you have reduced your project size and the issue persists, please contact FlutterFlow support via [Chat](https://flutterflow.io/support) or email: [support@flutterflow.io](mailto:support@flutterflow.io).
\ No newline at end of file
diff --git "a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/ITMS-90683 Missing purpose string in Info.plist - The Info.plist file for the \342\200\234Runner.app\342\200\235 bundle should contain a NSPhotoLibraryUsageDescription key.md" "b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/ITMS-90683 Missing purpose string in Info.plist - The Info.plist file for the \342\200\234Runner.app\342\200\235 bundle should contain a NSPhotoLibraryUsageDescription key.md"
new file mode 100644
index 00000000..192b1562
--- /dev/null
+++ "b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/ITMS-90683 Missing purpose string in Info.plist - The Info.plist file for the \342\200\234Runner.app\342\200\235 bundle should contain a NSPhotoLibraryUsageDescription key.md"
@@ -0,0 +1,57 @@
+---
+keywords: ['error', 'runner', 'purpose']
+slug: /itms-90683-missing-purpose-string-in-info-plist-the-info-plist-file-for-the-runner-app-bundle-should-contain-a-nsphotolibraryusagedescription-key
+title: 'ITMS-90683: Missing Purpose String in Info.plist – NSPhotoLibraryUsageDescription Required'
+---
+
+# ITMS-90683: Missing Purpose String in Info.plist – NSPhotoLibraryUsageDescription Required
+
+## Full Error Message
+
+```text
+Dear Developer,
+We identified one or more issues with a recent delivery for your app, "Gral Wind Orchestra App" 1.0.1 (1). Please correct the following issues, then upload again.
+
+ITMS-90683: Missing purpose string in Info.plist - Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “Runner.app” bundle should contain a NSPhotoLibraryUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. If your app supports multiple locales, you’re now required to provide a purpose string value in the Info.plist file in addition to a valid localized string across each of your app’s localization folders. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required.
+```
+
+
+For details, visit: [Apple Developer Docs](https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources)
+
+---
+
+## Background
+
+This error indicates that your app references APIs that access **sensitive user data**, such as the **Photo Library**, but your `Info.plist` does not contain a proper purpose string (specifically, the `NSPhotoLibraryUsageDescription` key).
+
+Apple requires this description to explain to users why the app is requesting access.
+
+---
+
+## How to Fix the Issue
+
+1. Open your project in **FlutterFlow**
+2. Go to **Settings & Integrations**
+3. Under **Project Setup**, select **Permissions**
+4. Find the **Photo Library** permission
+5. Add a clear, user-friendly description
+ _Example: "We need access to your photo library so you can upload and edit images inside the app."_
+
+---
+
+
+
+
+---
+
+## Still Not Working?
+
+If you've added the usage description and the error still persists:
+
+- Double-check that you've saved the changes
+- Make sure you're submitting the updated build to the App Store
+- If the issue continues, **contact FlutterFlow Support** via [chat](https://flutterflow.io) or email: support@flutterflow.io
+
+---
+
+By properly adding usage descriptions for all sensitive data access, you ensure compliance with App Store guidelines and build trust with your users.
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions.md
new file mode 100644
index 00000000..ae086b26
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions.md
@@ -0,0 +1,69 @@
+---
+keywords: ['release', 'build', 'deployment']
+slug: /invalid-pre-release-train-the-train-version-x-x-x-is-closed-for-new-build-submissions
+title: Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions
+---
+
+# Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions
+
+If you're submitting a build to the App Store and receive this error, it means that the version you're trying to submit is already closed for new builds. Even if the build number is different, the same app version can't be resubmitted.
+
+---
+
+## What Does This Error Mean?
+
+> **Error Message:**
+> _"Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions."_
+
+This means you cannot submit another build using the same version number. Apple requires each new submission to have a unique app version once the current one is closed for submissions.
+
+---
+
+## How to Resolve the Issue
+
+You'll need to **increment the app version** in your FlutterFlow deployment settings.
+
+### Steps:
+
+1. Press **Cmd/Ctrl + K**, type **“deployment”**, and hit enter.
+ This will open the Deployment page.
+
+ 
+
+2. Alternatively, navigate via:
+ **Project Settings > Deployment** (under **App Settings**).
+
+ 
+
+3. Click the **expand icon** in front of the **Version** section.
+
+ 
+
+4. Update the version number.
+ For example, change from `1.2.0` to `1.2.1`.
+
+ 
+
+Once the version is incremented, try deploying your app again — it should succeed.
+
+---
+
+## When to Increment the App Version Number
+
+Use a versioning scheme that works for your team, but **Semantic Versioning** is a widely accepted method:
+
+**Format:** `Major.Minor.Build`
+
+### Breakdown:
+
+- **Major (`1.x.x`)**: Breaking changes or significant revisions.
+- **Minor (`x.1.x`)**: New features or significant, non-breaking updates.
+- **Build (`x.x.1`)**: Bug fixes or small enhancements.
+
+> Example:
+> - `1.2.0` → Add new features (minor)
+> - `1.2.1` → Fix bugs or small patches (build)
+
+---
+
+Following these steps will help you avoid version conflicts and ensure a smooth deployment to the App Store.
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning Profile Doesn't Support Push Notifications.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning Profile Doesn't Support Push Notifications.md
new file mode 100644
index 00000000..a5a8cc0d
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning Profile Doesn't Support Push Notifications.md
@@ -0,0 +1,69 @@
+---
+keywords: ['push', 'notifications', 'support']
+slug: /provisioning-profile-doesn-t-support-push-notifications
+title: Provisioning Profile Doesn't Support Push Notifications
+---
+
+# Provisioning Profile Doesn't Support Push Notifications
+
+This article outlines the troubleshooting steps when encountering issues with push notifications during app deployment. If you're unsure how to enable push notifications in your app identifier via Apple Developer, refer to the step-by-step guide in our documentation.
+
+## Issue Overview
+
+When deploying an app through FlutterFlow to the Apple App Store, developers may encounter this error:
+
+> **Provisioning profile doesn't support the Push Notifications capability**
+
+This occurs when the **Push Notifications** capability hasn't been enabled for your App ID in your Apple Developer account.
+
+## Full Error Message
+
+```text
+Provisioning profile doesn't support the Push Notifications capability.
+```
+
+
+## Common Causes
+
+This error arises when the provisioning profile for your app is missing the necessary push notification entitlements. Push Notifications require **explicit configuration** within your Apple Developer account to function correctly.
+
+## Resolution Steps
+
+### 1. Enable Push Notifications in Apple Developer Account
+
+Follow these steps to configure your App ID properly:
+
+#### Visit Your Apple Developer Account
+
+- Go to the [Apple Developer Console](https://developer.apple.com/account/)
+- Navigate to **Certificates, Identifiers & Profiles**
+- Select **Identifiers**
+
+
+
+#### Select Your App Identifier
+
+- Locate the App ID for your project.
+- Click it to open the identifier details.
+
+#### Enable the Capability
+
+- Scroll down to the **Capabilities** section.
+- Check **Push Notifications**
+
+> No need to generate a new App ID or modify other keys.
+
+
+
+#### Save Changes
+
+- Click **Save** to apply the configuration.
+
+#### Deploy via FlutterFlow
+
+- Return to FlutterFlow and deploy your app again.
+- The updated provisioning profile will now include Push Notifications.
+
+## Summary
+
+By enabling **Push Notifications** in your App ID configuration, you ensure the provisioning profile supports this feature and avoid deployment errors. This is a one-time setup per App ID.
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning profile [app store project ID] doesn't support the Associated Domains capability..md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning profile [app store project ID] doesn't support the Associated Domains capability..md
new file mode 100644
index 00000000..67617ef1
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning profile [app store project ID] doesn't support the Associated Domains capability..md
@@ -0,0 +1,72 @@
+---
+keywords: ['error', 'store', 'provisioning']
+slug: /provisioning-profile-app-store-project-id-doesn-t-support-the-associated-domains-capability
+title: Provisioning profile [App Store project ID] doesn't support the Associated Domains capability.
+---
+
+# Provisioning Profile [App Store Project ID] Doesn't Support the Associated Domains Capability
+
+When deploying an app through FlutterFlow to the Apple App Store, you might encounter the following error:
+
+> **Provisioning profile [App Store project ID] doesn't support the Associated Domains capability**
+
+This issue typically affects apps using features like **Universal Links**, **App Clips**, or **Firebase Dynamic Links**, which require the **Associated Domains** capability.
+
+## Cause
+
+The error occurs when the **Associated Domains** capability is not enabled for your app's App ID in the Apple Developer portal. This is required to verify domain ownership and enable app-to-site interactions.
+
+> 💡 **Example**: You will see this error when using **dynamic links** in your FlutterFlow project.
+
+## Resolution Steps
+
+### 1. Log Into Apple Developer Account
+
+- Go to the [Apple Developer Console](https://developer.apple.com/account/)
+- Navigate to **Certificates, Identifiers & Profiles**
+- Click **Identifiers**
+
+
+
+### 2. Select Your App Identifier
+
+- Find the App ID for your app.
+- Click it to open its configuration.
+
+### 3. Enable Associated Domains Capability
+
+- In the capabilities list, enable **Associated Domains**
+- No need to create a new key or change the App ID.
+
+
+
+### 4. Save Changes
+
+- Click **Save** to apply the update.
+- This is usually sufficient for the initial setup.
+
+### 5. Redeploy From FlutterFlow
+
+- Go back to FlutterFlow and redeploy your app.
+- The updated provisioning profile will now support Associated Domains.
+
+## Verify Developer Account Subscription
+
+### What Does This Error Really Mean?
+
+This error can also appear if your Apple Developer account is **not on a paid plan**. The **Associated Domains** capability requires an **active paid Apple Developer subscription**.
+
+
+
+### How to Check Your Subscription
+
+- Sign in to the [Apple Developer Console](https://developer.apple.com/account/)
+- Your subscription status will be visible on the dashboard.
+ - Active accounts show as **Current**
+ - If it’s expiring, you’ll see an **Expiration Date**
+
+> 🔧 Still need help? Reach out to Apple Developer Support at [devsupport@apple.com](mailto:devsupport@apple.com)
+
+---
+
+By following these steps, you can resolve the provisioning profile error and ensure your app supports domain-related features like universal links and dynamic links.
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Signing for ImageNotification requires a development team - Flutterflow and Local builds.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Signing for ImageNotification requires a development team - Flutterflow and Local builds.md
new file mode 100644
index 00000000..eb175059
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Signing for ImageNotification requires a development team - Flutterflow and Local builds.md
@@ -0,0 +1,58 @@
+---
+keywords: ['signing', 'ios', 'error']
+slug: /fix-ios-signing-imagenotification
+title: Fix iOS Signing for ImageNotification
+---
+
+# Fix iOS Signing for ImageNotification
+
+:::tip
+Not sure which error your project has? Refer to the [Codemagic Error Identification Guide](/deployment/codemagic-error-types) to better understand the issue.
+:::
+
+## Introduction
+
+When configuring the `ImageNotification` capability in an iOS application, build failures can occur due to missing signing credentials. This typically happens when the development team is not correctly set in Xcode or in the FlutterFlow iOS deployment settings.
+
+Proper signing is required to ensure that the application can run on real devices or be submitted to the App Store.
+
+## Error Message
+
+```plaintext
+Signing for "ImageNotification" requires a development team
+```
+
+:::info[Prerequisites]
+- An active Apple Developer Program membership.
+- Access to a Mac with Xcode installed.
+- A configured FlutterFlow project targeting iOS.
+:::
+
+## Steps to Resolve
+
+1. **Open the Project in Xcode**
+ - Navigate to the `ios/Runner.xcworkspace` file inside your Flutter project.
+ - Open it with Xcode.
+
+2. **Set the Development Team**
+ - Go to the **Signing & Capabilities** tab.
+ - Under **Team**, select your Apple Developer account.
+ - If you don’t see your team, make sure you are logged into Xcode with the correct Apple ID.
+
+3. **Check Provisioning Profiles**
+ - Under **Provisioning Profile**, select **Automatic** or use a manually downloaded profile from the [Apple Developer Portal](https://developer.apple.com/account/resources/profiles/list).
+
+4. **Configure iOS Deployment in FlutterFlow**
+ - Go to **Settings > iOS Deployment** in FlutterFlow.
+ - Add your **Apple Team ID**.
+ - Ensure all required fields such as **Bundle Identifier**, **iOS App ID**, and **Team Name** are filled in.
+
+5. **Clean and Rebuild**
+ - In Xcode, go to **Product > Clean Build Folder**.
+ - Then rebuild the app using **Product > Build**.
+
+## Notes
+
+:::warning
+If your Flutter SDK version in VS Code does not match the version used in FlutterFlow, builds may fail with unrelated errors.
+:::
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning_profile_sign_in_with_apple.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning_profile_sign_in_with_apple.md
new file mode 100644
index 00000000..7ca3a0ce
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning_profile_sign_in_with_apple.md
@@ -0,0 +1,57 @@
+---
+keywords: ['where', 'sign', 'provisioning']
+slug: provisioning-profile-sign-in-with-apple
+title: Fix Provisioning Profile Error for 'Sign in with Apple'
+---
+
+# Fix Provisioning Profile Error for 'Sign in with Apple'
+
+When submitting an iOS app to the App Store using FlutterFlow, you may encounter the following error:
+
+> **Provisioning profile doesn't support the Sign in with Apple capability**
+
+This issue arises when your app uses Apple Sign-In, but your Apple Developer account has not properly configured this capability for your app's identifier.
+
+## Cause
+
+The "Sign in with Apple" feature **requires explicit enablement** in your Apple Developer account. If this is not configured, the provisioning profile generated will not include the necessary entitlements, and the build will fail.
+
+## Solution
+
+Follow these steps to enable the **Sign in with Apple** capability:
+
+### 1. Log into Apple Developer Account
+
+- Visit the [Apple Developer Console](https://developer.apple.com/account/)
+- Navigate to **Certificates, Identifiers & Profiles**
+- Click **Identifiers**
+
+
+
+### 2. Select Your App Identifier
+
+- Find the App ID for your application.
+- Click on it to edit its configuration.
+
+### 3. Enable "Sign in with Apple" Capability
+
+- Scroll to the **Capabilities** section.
+- Enable **Sign in with Apple**
+- You do **not** need to create a new key or App ID.
+
+
+
+### 4. Save Changes
+
+- Click **Save** to apply the changes.
+- You do **not** need to modify other fields.
+
+### 5. Re-deploy via FlutterFlow
+
+Return to FlutterFlow and redeploy your app after enabling the capability.
+
+## Still Having Trouble?
+
+If you're still facing issues—or if your app does **not** use Apple Sign-In but the error persists:
+
+- Contact FlutterFlow Support via **Live Chat** or email at [support@flutterflow.io](mailto:support@flutterflow.io)
diff --git a/docs/troubleshooting/authentication/Google Phone Authentication Not Working on Real Devices APK Downloaded from Flutterflow, SHA1 Key Error.md b/docs/troubleshooting/authentication/Google Phone Authentication Not Working on Real Devices APK Downloaded from Flutterflow, SHA1 Key Error.md
new file mode 100644
index 00000000..579645e1
--- /dev/null
+++ b/docs/troubleshooting/authentication/Google Phone Authentication Not Working on Real Devices APK Downloaded from Flutterflow, SHA1 Key Error.md
@@ -0,0 +1,51 @@
+---
+title: Fix SHA-1 Key Issues for Google and Phone Auth on Real Devices
+slug: /fix-google-phone-auth-sha1-error
+keywords: ['authentication', 'error', 'real']
+---
+
+# Fix SHA-1 Key Issues for Google and Phone Auth on Real Devices
+
+If you're having issues with Google Sign-In or Phone Authentication on real devices after downloading the APK from FlutterFlow, it's likely due to missing or incorrect SHA-1 and SHA-256 keys in your Firebase project.
+
+---
+
+## Problem Overview
+
+When you download the APK directly from FlutterFlow (via the source code menu), the necessary SHA-1 and SHA-256 keys may not be auto-generated or included. Without these keys, Firebase cannot authenticate users via social logins or phone number sign-ins.
+
+---
+
+## How to Fix It
+
+### Step 1: Download Your APK
+
+1. Go to your FlutterFlow project.
+2. Navigate to the **Source Code** menu.
+3. Download the APK file to your local machine.
+
+---
+
+### Step 2: Generate SHA-1 and SHA-256 Keys
+
+1. Open a terminal or command prompt.
+2. Navigate to the folder containing your APK file.
+3. Run the following command:
+
+```bash
+keytool -printcert -jarfile app.apk
+```
+
+This will output the SHA-1 and SHA-256 fingerprints needed for Firebase.
+
+### Step 3: Add Keys to Your Firebase Project
+
+1. Go to the [Firebase Console](https://console.firebase.google.com).
+2. Select your project from the dashboard.
+3. Click the **gear icon** next to **Project Overview** and select **Project settings**.
+4. In the **General** tab, scroll down to the **Your apps** section and click your **Android app**.
+5. Find the **SHA certificate fingerprints** section.
+6. Paste both the **SHA-1** and **SHA-256** keys into their respective fields.
+7. Click **Save** to apply the changes.
+
+> ✅ Once the keys are added, Firebase authentication using Google or Phone Sign-In should work correctly on real devices using the downloaded APK.
diff --git a/docs/troubleshooting/authentication/Google Sign-In Doesn't Work In RunTest Mode And Published Web application on web.md b/docs/troubleshooting/authentication/Google Sign-In Doesn't Work In RunTest Mode And Published Web application on web.md
new file mode 100644
index 00000000..ba95f38d
--- /dev/null
+++ b/docs/troubleshooting/authentication/Google Sign-In Doesn't Work In RunTest Mode And Published Web application on web.md
@@ -0,0 +1,57 @@
+---
+title: Enable Google Sign-In for Run Mode and Published Web Apps
+slug: /enable-google-sign-in-run-test-published-web
+keywords: ['application', 'mode', 'sign']
+---
+
+# Enable Google Sign-In for Run Mode and Published Web Apps
+
+If you're using social login features like **Google Sign-In**, **Facebook**, or **Microsoft**, and they’re not working in **Run/Test Mode** or on your **published web application**, you likely need to update your Firebase Authentication settings.
+
+To enable social login in these environments, you must **add your app domain to Firebase Authentication's Authorized Domains list**.
+
+---
+
+## Why This Is Required
+
+Adding your domain to Firebase Authentication:
+- Whitelists your app's domain
+- Allows social login to work from that domain as a valid origin
+- Prevents authentication errors caused by unverified origins
+
+---
+
+## How to Add Authorized Domains in Firebase
+
+1. Open your [Firebase Console](https://console.firebase.google.com).
+2. Select your project.
+3. Navigate to **Authentication > Settings**.
+4. Go to the **Authorized Domains** section.
+5. Click **Add Domain** and enter the domain you want to authorize.
+
+---
+
+## Domains to Whitelist
+
+Depending on where your app is running, add the following:
+
+- For FlutterFlow **Run Mode**:
+ `app.flutterflow.io`
+
+- For a **Published Web App** (e.g., your custom subdomain):
+ `yourapp.flutterflow.app`
+
+- For **Test Mode**:
+ Add the **debug session URL** from the Known Issues panel (copy the exact URL listed there).
+
+---
+
+
+
+---
+
+## Debug Tip
+
+In **Test Mode**, social login won’t work unless the debug session domain is also added to Firebase. You can find and copy this domain from the **Known Issues** menu.
+
+
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..6da6e3d6
--- /dev/null
+++ b/docs/troubleshooting/authentication/error in verify sms.md
@@ -0,0 +1,38 @@
+---
+keywords: ['error', 'verify']
+author: Unknown
+created_at: '1651736299'
+slug: /error-in-verify-sms
+title: Error in Verify SMS
+updated_at: '1651736360'
+url: None
+---
+
+# Error in Verify SMS
+
+## What Does This Error Mean?
+
+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.
+
+## Still Experiencing Issues?
+
+If the issue persists after renaming the widget, contact [FlutterFlow Support](mailto:support@flutterflow.io) or refer to your [Intercom support conversation](https://app.intercom.com/a/apps/w66h9try/inbox/inbox/unassigned/conversations/796) for further assistance.
diff --git a/docs/troubleshooting/authentication/google_signin_not_working_run_test_web.md b/docs/troubleshooting/authentication/google_signin_not_working_run_test_web.md
new file mode 100644
index 00000000..54c10c1b
--- /dev/null
+++ b/docs/troubleshooting/authentication/google_signin_not_working_run_test_web.md
@@ -0,0 +1,57 @@
+---
+keywords: ['google', 'work', 'login']
+slug: google-signin-not-working-run-test-web
+title: Fix Google Sign-In Not Working in Run/Test Mode or Web
+tag: google_signin_run_test_web
+---
+
+# Fix Google Sign-In Not Working in Run/Test Mode or Web
+
+If you're using social login features like **Google Sign-In**, **Facebook**, or **Microsoft login** in FlutterFlow and they are not working in **Run**, **Test**, or **Web** mode, the issue is likely due to missing authorized domains in Firebase Authentication.
+
+To enable these login methods, you need to **whitelist your domain** in Firebase.
+
+## Cause
+
+Social logins won't function in web or test modes unless your app’s domain is explicitly listed in Firebase's **Authorized Domains**. Without this, Firebase blocks authentication requests coming from unrecognized sources.
+
+## Solution
+
+Follow these steps to add your domain to Firebase:
+
+### 1. Open Firebase Console
+
+- Go to [Firebase Console](https://console.firebase.google.com/)
+- Select your project
+
+### 2. Navigate to Authentication Settings
+
+- Go to **Authentication** → **Settings** → **Authorized Domains**
+
+### 3. Add Your Domain
+
+- Click **Add Domain**
+- Add the domain where your app runs in Run/Test/Web mode
+ - For **Run mode** in FlutterFlow: `app.flutterflow.io`
+ - For **published web app**: `yourapp.flutterflow.app`
+
+
+
+## Example
+
+If your app is live at: https://mytestproject.flutterflow.app
+
+Then add: mytestproject.flutterflow.app
+
+
+to the list of Authorized Domains.
+
+## Summary
+
+Adding the correct domains ensures Firebase recognizes them as trusted sources, allowing social login methods to function properly across web, run, and test environments.
+
+For more details, see [Firebase Authentication Documentation](https://firebase.google.com/docs/auth/web/hosting-resolver).
+
+
+
+
diff --git a/docs/troubleshooting/backend/I can't upload an image in the app via the image upload action..md b/docs/troubleshooting/backend/I can't upload an image in the app via the image upload action..md
new file mode 100644
index 00000000..49b4b985
--- /dev/null
+++ b/docs/troubleshooting/backend/I can't upload an image in the app via the image upload action..md
@@ -0,0 +1,36 @@
+---
+keywords: ['storage', 'upload', 'image']
+slug: image-upload-fails-due-to-firebase-storage-rules
+title: Image Upload Fails Due to Firebase Storage Rules
+---
+
+# Image Upload Fails Due to Firebase Storage Rules
+
+This issue commonly occurs due to a misconfiguration in Firebase Storage rules. It can be resolved by updating those rules properly.
+
+## How to Fix
+
+1. Go to the **Storage** section in your Firebase project.
+2. Click on the **Rules** tab.
+
+ 
+
+3. Replace the current rules with the following:
+ ```js
+ rules_version = '2';
+ service firebase.storage {
+ match /b/{bucket}/o {
+ match /{allPaths=**} {
+ allow read, write: if request.auth != null;
+ }
+ }
+ }
+```
+
+
+
+
+
+This change should fix the issue with media uploads in your application.
+
+⚠️ If the problem persists, try re-uploading all previously uploaded images from within the app.
\ No newline at end of file
diff --git "a/docs/troubleshooting/backend/RevenueCat for Subscription and One-Time Payments in FlutterFlow \342\200\223 PayWall.md" "b/docs/troubleshooting/backend/RevenueCat for Subscription and One-Time Payments in FlutterFlow \342\200\223 PayWall.md"
new file mode 100644
index 00000000..cfd5de37
--- /dev/null
+++ "b/docs/troubleshooting/backend/RevenueCat for Subscription and One-Time Payments in FlutterFlow \342\200\223 PayWall.md"
@@ -0,0 +1,90 @@
+---
+keywords: ['subscription', 'paywall', 'revenuecat']
+slug: /revenuecat-for-subscription-and-one-time-payments-in-flutterflow-paywall
+title: RevenueCat for Subscription and One-Time Payments in FlutterFlow – PayWall
+---
+
+# RevenueCat for Subscription and One-Time Payments in FlutterFlow – PayWall
+
+In-app purchases and subscriptions represent a major revenue opportunity for mobile apps. RevenueCat simplifies the management of these monetization models, especially when integrated with FlutterFlow. This guide explains how to implement paywalls for both subscription and one-time payments, using RevenueCat and FlutterFlow.
+
+## Understanding RevenueCat's Role
+
+RevenueCat acts as a middle layer between your app and the app stores (Google Play and Apple App Store), handling in-app subscriptions and purchases. It abstracts store-specific APIs and provides a unified interface to manage receipts, subscriptions, and user purchases.
+
+## Preparing the App
+
+Before integrating RevenueCat:
+
+- Ensure the app is deployed to both Google Play and Apple App Store.
+- Use **Settings > Integrations > Mobile Deployment** in FlutterFlow to configure deployments.
+- Define all subscription and one-time products in the stores before setting them up in RevenueCat.
+
+## Configuring Products in RevenueCat
+
+### Subscriptions
+
+Subscriptions in RevenueCat are auto-renewable products. Set each with:
+
+- A unique product ID
+- Duration and pricing
+- Tier-level options
+
+### One-Time Purchases
+
+Configure these as non-consumable products in RevenueCat:
+
+- Assign a unique identifier
+- Track and manage separately from subscriptions
+
+
+
+## Entitlements and Offerings
+
+**Entitlements** represent access to features or content. For example, an entitlement named `PremiumAccess` might unlock additional features for subscribed users.
+
+**Offerings** define the products available for purchase and link your UI to what is configured in RevenueCat.
+
+
+
+:::note
+If the user has purchased a one-time product (not a subscription), they still receive an entitlement. The paywall action evaluates both one-time and recurring entitlements equally.
+:::
+
+This makes it possible to allow purchases such as tokens to bypass the paywall via one-time entitlements.
+
+## Implementing the Paywall in FlutterFlow
+
+Create a paywall screen or modal that fetches RevenueCat offerings. Use the following actions:
+
+- **Check Subscription Status**
+- **Initiate Purchase**
+
+
+
+The **Paywall** action returns a boolean. Add a condition after the action:
+
+- If true: trigger content access
+- If false: prompt the user to subscribe (via modal or navigation)
+
+## Managing User Transactions
+
+Use the **Purchase** action in FlutterFlow to start a transaction.
+
+- RevenueCat communicates with the store
+- After purchase, user entitlements are updated
+
+To restore purchases:
+
+- Use **Restore Purchase** action
+- Allows access to purchases across devices or after reinstalling
+
+
+
+The **paymentId** (a string) is returned from the action. Always check:
+
+- If `paymentId` is not null → trigger post-payment actions
+
+## Summary
+
+Integrating RevenueCat with FlutterFlow enables robust handling of subscriptions and one-time payments. By correctly configuring products, entitlements, and offerings, and leveraging FlutterFlow’s paywall and purchase actions, you can provide a smooth user experience and maximize monetization.
diff --git a/docs/troubleshooting/backend/Share mediafiles in storage, 1 user upload all users see.md b/docs/troubleshooting/backend/Share mediafiles in storage, 1 user upload all users see.md
new file mode 100644
index 00000000..05188cf3
--- /dev/null
+++ b/docs/troubleshooting/backend/Share mediafiles in storage, 1 user upload all users see.md
@@ -0,0 +1,51 @@
+---
+keywords: ['storage', 'users', 'upload']
+slug: share_mediafiles_1_user_upload_all_users_see
+title: Share Media/Files in Storage — 1 User Upload, All Users See
+tag: share_storage_upload_all_users
+---
+
+# Share Media/Files in Storage — 1 User Upload, All Users See
+
+If a user uploads a file to Firebase Storage but other users can’t see it — even with the same parameters — the issue likely relates to **CORS (Cross-Origin Resource Sharing)** settings on your Firebase Storage bucket.
+
+This guide walks you through how to update the CORS policy so media and files uploaded by one user are accessible by others.
+
+## Problem
+
+Media or files uploaded to Firebase Storage by one user aren’t visible to other users, even though the correct parameters are used in your app.
+
+## Solution
+
+You’ll need to set a public CORS policy on your Firebase Storage bucket using the Google Cloud CLI.
+
+### 1. Install `gsutil`
+
+Follow Google’s guide to install `gsutil`:
+
+👉 [Install gsutil](https://cloud.google.com/storage/docs/gsutil_install)
+
+### 2. Create a `cors.json` file
+
+Save the following JSON content in your project directory as `cors.json`:
+
+```json
+[
+ {
+ "origin": ["*"],
+ "method": ["GET"],
+ "maxAgeSeconds": 3600
+ }
+]
+```
+
+3. Apply the CORS configuration
+ Run the following command in your terminal to set the CORS policy for your Firebase Storage bucket:
+
+ ```js
+ gsutil cors set cors.json gs://exampleproject.appspot.com
+ ```
+
+ Replace exampleproject.appspot.com with your actual Firebase project bucket name.
+
+ After updating the CORS settings, any file uploaded by one user should now be visible to all users with access, assuming they’re using the same query logic and paths.
\ No newline at end of file
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..5f472f77
--- /dev/null
+++ b/docs/troubleshooting/backend/backend_query_not_returning_results_despite_existing_data.md
@@ -0,0 +1,77 @@
+---
+keywords: ['database', 'query', 'though']
+slug: 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.
+
+
+
+If CORS errors are present, refer to the [CORS Troubleshooting Guide](/deployment/cors-troubleshooting) to resolve the issue.
+
+
diff --git a/docs/troubleshooting/backend/stripe_payment_unknown_error.md b/docs/troubleshooting/backend/stripe_payment_unknown_error.md
new file mode 100644
index 00000000..10744ef1
--- /dev/null
+++ b/docs/troubleshooting/backend/stripe_payment_unknown_error.md
@@ -0,0 +1,56 @@
+---
+keywords: ['error', 'firebase', 'stripe', 'cors']
+slug: stripe-payment-unknown-error
+title: Stripe Payment Unknown Error
+---
+
+# Fix "Stripe Payment Action Error: Unknown Error Occurred"
+
+When integrating Stripe payments in your FlutterFlow app, you may encounter an error that prevents the payment from processing correctly. This guide walks through the cause and steps to resolve it.
+
+## Problem
+
+**Error Message:**
+
+- **Snackbar:** `Unknown Error Occurred`
+- **Console:** Access to fetch at 'https://us-central1-.cloudfunctions.net/initStripeTestPayment'
+from origin 'https://ff-debug-service-frontend-xyz.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.
+
+
+## Cause
+
+This error is caused by a mismatch between the region where your Firebase functions are deployed and the region configured in your FlutterFlow project. The Cloud Function is being called from an incorrect region, leading to a CORS policy error.
+
+## How to Fix It
+
+### Step 1: Set Cloud Functions Region
+
+- Open **Firebase Settings** in FlutterFlow.
+- Click **Show Advanced Settings**.
+- Set the **Cloud Functions Region** to either `[Default]` or the **same region used in Firebase**.
+
+> You can also use ⌘+K (macOS) or Ctrl+K (Windows) and search for “firebase” to quickly find this section.
+
+
+
+### Step 2: Delete Previously Deployed Functions
+
+Remove any previously deployed functions from Firebase that were created using the wrong region.
+
+
+
+### Step 3: Re-deploy Stripe Integration
+
+- Go to your FlutterFlow project settings.
+- Re-deploy Stripe integration using the updated Cloud Functions region.
+
+
+
+## Summary
+
+By aligning the Cloud Function region with your Firebase configuration and re-deploying your Stripe setup, you can resolve the "Unknown Error Occurred" issue related to CORS during Stripe payments.
+
+If the problem persists, contact FlutterFlow support at **support@flutterflow.io**.
+
diff --git a/docs/troubleshooting/cloud-functions/Don't see Cloud Functions Admin in the Firebase Console.md b/docs/troubleshooting/cloud-functions/Don't see Cloud Functions Admin in the Firebase Console.md
new file mode 100644
index 00000000..1ed5d0c7
--- /dev/null
+++ b/docs/troubleshooting/cloud-functions/Don't see Cloud Functions Admin in the Firebase Console.md
@@ -0,0 +1,40 @@
+---
+keywords: ['firebase', 'cloud', 'console']
+author: Unknown
+created_at: '1677585504'
+slug: /don-t-see-cloud-functions-admin-in-the-firebase-console
+title: Don't see Cloud Functions Admin in the Firebase Console
+updated_at: '1678226378'
+url: https://intercom.help/flutterflow/en/articles/7038084-don-t-see-cloud-functions-admin-in-the-firebase-console
+---
+
+# Don't See Cloud Functions Admin in the Firebase Console
+
+## Issue
+
+You’re trying to assign `firebase@flutterflow.io` the **Cloud Functions Admin** role but can't find the option in your Firebase Console.
+
+## Background
+
+The **Cloud Functions Admin** permission is necessary for several FlutterFlow features—such as Push Notifications. While assigning this role is optional, **not doing so will limit your ability to use functions that depend on Firebase Cloud Functions.**
+
+> **Note:** You must be on the **Blaze** plan in Firebase to access this feature.
+
+## How to Enable the Blaze Plan in Firebase
+
+To activate the Blaze plan and enable Cloud Functions permissions:
+
+1. Open your [Firebase Console](https://console.firebase.google.com) and go to your project.
+2. Navigate to **Project Settings**.
+3. Click on **Usage and Billing**.
+4. In the **Usage and Billing** section, go to the **Details and Settings** tab.
+5. Confirm that:
+ - Your project is on the **Blaze** plan.
+ - Your billing account is active and correctly connected.
+
+
+
+
+Once these steps are complete, you'll be able to assign `firebase@flutterflow.io` the Cloud Functions Admin role, granting FlutterFlow access to manage backend functions.
+
+
diff --git a/docs/troubleshooting/deployment/Can't Download APK or Code in FlutterFlow.md b/docs/troubleshooting/deployment/Can't Download APK or Code in FlutterFlow.md
new file mode 100644
index 00000000..ea000130
--- /dev/null
+++ b/docs/troubleshooting/deployment/Can't Download APK or Code in FlutterFlow.md
@@ -0,0 +1,52 @@
+---
+keywords: ['permissions', 'download', 'code']
+author: Unknown
+created_at: '1650311880'
+slug: /can-t-download-apk-or-code-in-flutterflow
+title: Can't Download APK or Code in FlutterFlow
+updated_at: '1713554284'
+url: https://intercom.help/flutterflow/en/articles/6150279-can-t-download-apk-or-code-in-flutterflow
+---
+
+# Can't Download APK or Code in FlutterFlow
+
+---
+
+## 🧪 Check Your Browser Permissions
+
+The most common cause of download issues (APK or project code) is **insufficient browser permissions**. Make sure **pop-ups and redirects** are allowed for FlutterFlow.
+
+### ✅ For Chrome:
+1. Click the **lock icon** in the address bar.
+2. A pop-up will appear — ensure **Pop-ups and redirects** is set to **Allow**.
+3. Also set **Clipboard** to **Allow** (used for copy-pasting widgets inside FlutterFlow).
+4. Try downloading again.
+
+> 💡 **Tip:** Downloads will be saved in your browser’s **default download folder**.
+
+
+
+---
+
+## ❗ Resolve Project Errors
+
+You won’t be able to download APK or code if your project has **unresolved errors**.
+
+If you see a **red indicator** in the top toolbar or project issues pane, it means you must fix errors before building or downloading.
+
+
+
+> Once all errors are resolved, you should be able to download your APK or source code successfully.
+
+---
+
+## 📩 Need More Help?
+
+If you still face issues:
+- Contact us at [support@flutterflow.io](mailto:support@flutterflow.io)
+
+---
+
+## 🎥 Additional Resources
+
+- [YouTube Tutorial: Download Code](https://intercom.help/flutterflow/en/articles/6150279-can-t-download-apk-or-code-in-flutterflow)
diff --git a/docs/troubleshooting/deployment/Can't publish to Flutterflow.app as a subdomain. Error Error reserving subdomain. You have exceeded the quota for subdomains..md b/docs/troubleshooting/deployment/Can't publish to Flutterflow.app as a subdomain. Error Error reserving subdomain. You have exceeded the quota for subdomains..md
new file mode 100644
index 00000000..740e810c
--- /dev/null
+++ b/docs/troubleshooting/deployment/Can't publish to Flutterflow.app as a subdomain. Error Error reserving subdomain. You have exceeded the quota for subdomains..md
@@ -0,0 +1,55 @@
+---
+keywords: ['error', 'exceeded', 'subdomains']
+author: Unknown
+created_at: '1677756386'
+slug: /can-t-publish-to-flutterflow-app-as-a-subdomain-error-error-reserving-subdomain-you-have-exceeded-the-quota-for-subdomains
+title: "Can't publish to Flutterflow.app as a subdomain. Error: Error reserving subdomain. You have exceeded the quota for subdomains."
+updated_at: '1678233842'
+url: https://intercom.help/flutterflow/en/articles/7044258-can-t-publish-to-flutterflow-app-as-a-subdomain-error-error-reserving-subdomain-you-have-exceeded-the-quota-for-subdomains
+---
+
+# Can't Publish to `flutterflow.app` Subdomain
+
+---
+
+## ❗ Issue
+
+You are trying to publish your web app to the `.flutterflow.app` domain and encounter the following error:
+
+```text
+Error reserving subdomain. You have exceeded the quota for subdomains.
+```
+
+
+
+---
+
+## 🧠 Why You Are Seeing This Error
+
+There is a limit to how many **custom subdomains** you can publish under the `flutterflow.app` domain:
+
+- **Free plan:** up to **3 subdomains**
+- **Paid plan:** up to **10 subdomains**
+
+> **Note:** Only *custom* subdomains count toward this quota. If your subdomain uses the **project ID**, it does **not** count.
+
+---
+
+## ✅ Solutions
+
+### 1. Change the Subdomain Name to Your Project ID
+
+Use your **project ID** as the subdomain name (set in the “Site URL” field). This avoids counting against your quota.
+
+
+
+---
+
+### 2. Unpublish Other Projects
+
+If you've reached your subdomain quota, unpublish some of your existing projects:
+
+1. Go to **Web Publishing**
+2. Click the **Unpublish** button on older projects.
+
+
diff --git a/docs/troubleshooting/deployment/Codemagic build error Format Exception Could not find End of Central Directory Record.md b/docs/troubleshooting/deployment/Codemagic build error Format Exception Could not find End of Central Directory Record.md
new file mode 100644
index 00000000..2871fc14
--- /dev/null
+++ b/docs/troubleshooting/deployment/Codemagic build error Format Exception Could not find End of Central Directory Record.md
@@ -0,0 +1,54 @@
+---
+keywords: ['error', 'build', 'format']
+author: Unknown
+created_at: '1678978452'
+slug: /codemagic-build-error-format-exception-could-not-find-end-of-central-directory-record
+title: 'Codemagic build error: Format Exception: Could not find End of Central Directory Record'
+updated_at: '1679121584'
+url: None
+---
+
+# Codemagic Build Error: Format Exception – Could Not Find End of Central Directory Record
+
+> **Tip:** Not sure which type of error your project has? Check out [this article](https://intercom.help/flutterflow/en/articles/6146843-how-to-identify-your-codemagic-error) on how to identify your Codemagic error.
+
+## What Does This Error Mean?
+
+This error usually means that the **branch name** was entered incorrectly in the Codemagic settings for your GitHub repo.
+
+---
+
+## Full Error Message
+
+```text
+Codemagic build error: Format Exception: Could not find End of Central Directory Record
+```
+
+
+---
+
+## How to Resolve This Issue
+
+To fix this, make sure you're **only entering the branch name**, and **not the full `repo-name/branch-name` path**, because the project is already connected to the correct GitHub repo.
+
+Incorrect (❌): repo-name/branch-name
+
+
+Correct (✅): branch-name
+
+
+### Example
+
+Incorrect:
+
+
+Correct:
+
+
+---
+
+## The Issue Was Not Resolved
+
+If the error still persists after correcting the branch name, please contact **FlutterFlow Support** via chat or email at [support@flutterflow.io](mailto:support@flutterflow.io).
+
+
diff --git a/docs/troubleshooting/deployment/DeploymentBuild for mobile error NoDecoderForImageFormatException.md b/docs/troubleshooting/deployment/DeploymentBuild for mobile error NoDecoderForImageFormatException.md
new file mode 100644
index 00000000..080139f2
--- /dev/null
+++ b/docs/troubleshooting/deployment/DeploymentBuild for mobile error NoDecoderForImageFormatException.md
@@ -0,0 +1,36 @@
+---
+keywords: ['error', 'deployment', 'build']
+author: Unknown
+created_at: '1677591886'
+slug: /deploymentbuild-for-mobile-error-nodecoderforimageformatexception
+title: 'Deployment/Build for mobile error: NoDecoderForImageFormatException'
+updated_at: '1677592263'
+url: https://intercom.help/flutterflow/en/articles/7038400-deployment-build-for-mobile-error-nodecoderforimageformatexception
+---
+
+# Deployment/Build for Mobile Error: `NoDecoderForImageFormatException`
+
+## What does this error mean?
+
+This error occurs during deployment or build when the icon launcher image you selected is in an unsupported format or has invalid properties. For example, if the icon is an **SVG file**, the build will fail because FlutterFlow cannot generate launcher icons from unsupported formats.
+
+## How to Fix It
+
+1. Navigate to **Settings > App Assets** in FlutterFlow.
+2. Replace both your **App Icon** and **Splash Image**.
+
+### Requirements for App Icon:
+
+- Use **PNG** or **JPEG** format (❌ Avoid SVG and other formats).
+- The recommended minimum size is **1024×1024 pixels**.
+- Ensure the file size isn’t too large.
+- **Avoid transparent areas** in the PNG if targeting iOS.
+
+> ⚠️ FlutterFlow uses the same icon asset to generate both Android and iOS icons, so it must comply with the guidelines of **both platforms**.
+
+## Additional Resources
+
+- [Android Icon Design Specifications](https://developer.android.com/distribute/google-play/resources/icon-design-specifications)
+- [Apple App Icon Guidelines](https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/)
+
+
diff --git a/docs/troubleshooting/deployment/Error Failed to create server directory. Please contact support@flutterflow.io.md b/docs/troubleshooting/deployment/Error Failed to create server directory. Please contact support@flutterflow.io.md
new file mode 100644
index 00000000..14014fe2
--- /dev/null
+++ b/docs/troubleshooting/deployment/Error Failed to create server directory. Please contact support@flutterflow.io.md
@@ -0,0 +1,35 @@
+---
+keywords: ['error', 'verify']
+author: Unknown
+created_at: '1651736299'
+slug: /error-in-verify-sms
+title: Error in Verify SMS
+updated_at: '1651736360'
+url: None
+---
+
+# Error in Verify SMS
+
+## What Does This Error Mean?
+
+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/deployment/I get this error The operation couldn\342\200\231t be completed. Unable to locate a Java Runtime..md" "b/docs/troubleshooting/deployment/I get this error The operation couldn\342\200\231t be completed. Unable to locate a Java Runtime..md"
new file mode 100644
index 00000000..0dcf05f7
--- /dev/null
+++ "b/docs/troubleshooting/deployment/I get this error The operation couldn\342\200\231t be completed. Unable to locate a Java Runtime..md"
@@ -0,0 +1,23 @@
+---
+keywords: ['error', 'java', 'couldn']
+slug: i-get-this-error-the-operation-couldn-t-be-completed-unable-to-locate-a-java-runtime
+title: I get this error: The operation couldn’t be completed. Unable to locate a Java Runtime.
+---
+
+# I get this error: The operation couldn’t be completed. Unable to locate a Java Runtime.
+
+This error means your system does not have a Java Runtime Environment (JRE) installed or it cannot be located.
+
+## How to Fix It
+
+To resolve the issue:
+
+1. Visit the official Java website: [https://www.java.com](https://www.java.com)
+2. Download the latest version of Java for your operating system.
+3. Install the Java Runtime Environment (JRE).
+4. Restart your computer if needed and try running the operation again.
+
+If you're using macOS and still see the error, you may need to install a specific version of the Java Development Kit (JDK) from [Oracle's JDK Downloads](https://www.oracle.com/java/technologies/javase-downloads.html).
+
+> 💡 Ensure that Java is added to your system’s PATH if you continue encountering issues.
+
diff --git a/docs/troubleshooting/deployment/Provided value is not a valid PEM encoded private key.md b/docs/troubleshooting/deployment/Provided value is not a valid PEM encoded private key.md
new file mode 100644
index 00000000..a38d5f95
--- /dev/null
+++ b/docs/troubleshooting/deployment/Provided value is not a valid PEM encoded private key.md
@@ -0,0 +1,50 @@
+---
+keywords: ['deployment', 'error', 'value']
+slug: /provided-value-is-not-a-valid-pem-encoded-private-key
+title: Provided Value Is Not a Valid PEM Encoded Private Key
+---
+
+# Provided Value Is Not a Valid PEM Encoded Private Key
+
+When deploying an iOS build from FlutterFlow, you may encounter the following error:
+
+> **app-store-connect: error: argument --private-key: Provided value is not a valid PEM encoded private key**
+
+This issue typically appears when the App Store private key is either missing, incorrectly formatted, or invalid.
+
+## Cause
+
+The error occurs when the private key uploaded to FlutterFlow is not in the proper `.p8` PEM format expected by App Store Connect. The private key must be the original file downloaded from the Apple Developer portal without modification.
+
+## Resolution Steps
+
+### 1. Go to Mobile Deployment Settings
+
+- In FlutterFlow, navigate to **App Settings > Mobile Deployment > App Store**
+- If you have not already uploaded a private key, the field will appear blank.
+
+
+
+### 2. Reupload the Private Key
+
+- Locate the original `.p8` private key file downloaded from [Apple Developer → Keys](https://developer.apple.com/account/resources/authkeys/list)
+- Click **Upload** and select the correct `.p8` file
+
+> ⚠️ The key file must include both:
+> `-----BEGIN PRIVATE KEY-----`
+> `-----END PRIVATE KEY-----`
+
+### 3. Save and Redeploy
+
+- After uploading, save your changes
+- Redeploy your iOS app from FlutterFlow
+
+## If the Issue Persists
+
+If you have uploaded a valid key and the error continues:
+
+- Make sure the `.p8` file is not corrupted or modified
+- Do not paste the key into a text field—use the file upload option
+- Try re-downloading the key from Apple Developer and uploading again
+
+> 🛠️ **Still stuck?** Contact FlutterFlow support at [support@flutterflow.io](mailto:support@flutterflow.io) for further help.
diff --git a/docs/troubleshooting/deployment/build_failed_error_loading_project_for_test_or_run_mode.md b/docs/troubleshooting/deployment/build_failed_error_loading_project_for_test_or_run_mode.md
new file mode 100644
index 00000000..ac587417
--- /dev/null
+++ b/docs/troubleshooting/deployment/build_failed_error_loading_project_for_test_or_run_mode.md
@@ -0,0 +1,59 @@
+---
+keywords: ['error', 'build', 'failed']
+slug: build-failed-error-loading-project-for-test-or-run-mode
+title: Build Failed Error Loading Project for Test or Run Mode
+---
+
+# Build Failed: Error Loading Project for Test or Run Mode
+
+When trying to build your project in **Run** or **Test** mode, you may receive a **Build Failed** error, even when no issues are visible in the FlutterFlow editor.
+
+
+
+---
+
+## What This Error Means
+
+This error indicates that your project contains a compilation issue that is not being flagged in the FlutterFlow interface.
+
+FlutterFlow usually highlights potential problems through the **Debug** menu. However, some errors may not yet be automatically detected.
+
+---
+
+## Common Causes of This Error
+
+
+
+- Copy/pasting a widget with many actions or visibility rules
+- Copy/pasting widgets that include animations or animation actions
+- Copy/pasting entire pages or components
+- Using a data source that doesn’t exist at build time (e.g., a periodic action referenced before it's created)
+- A potential bug in FlutterFlow
+
+If you suspect a bug, report it via the [FlutterFlow GitHub issue tracker](https://github.com/FlutterFlow/flutterflow/issues).
+
+---
+
+## Troubleshooting Steps
+
+1. **Download and Run Locally**
+ - If you have access to the downloaded code, run the project on your local machine.
+ - Review the compilation error directly in your IDE to identify the root cause.
+
+2. **Use Snapshots to Track Changes**
+ - Check your recent snapshots to identify what changes may have introduced the error.
+ - Focus on duplicated pages, modified actions, or new widgets added right before the error started.
+
+3. **Inspect Visibility Rules and Actions**
+ - Even if no error is visible, some issues may be buried within conditions.
+
+Example:
+
+
+
+At first glance, this rule appears valid. However, opening the condition reveals the issue:
+
+
+
+The second value is unset and highlighted in red. Errors like these can prevent the build from succeeding.
+
diff --git a/docs/troubleshooting/exporting-code/Resolve Issues Running Code Locally After Exporting My Code APK.md b/docs/troubleshooting/exporting-code/Resolve Issues Running Code Locally After Exporting My Code APK.md
new file mode 100644
index 00000000..3c56a986
--- /dev/null
+++ b/docs/troubleshooting/exporting-code/Resolve Issues Running Code Locally After Exporting My Code APK.md
@@ -0,0 +1,45 @@
+---
+keywords: ['build', 'locally', 'after']
+slug: /resolve-issues-running-code-locally-after-exporting-my-code-apk
+title: Resolve Issues Running Code Locally After Exporting My Code / APK
+---
+
+# Resolve Issues Running Code Locally After Exporting My Code / APK
+
+If APKs downloaded from FlutterFlow are not functioning as expected, follow the steps below to ensure proper project configuration and build execution. This process will also help identify any local compiler errors that may not be visible within FlutterFlow.
+
+## Steps to Resolve
+
+1. **Resolve All Project Issues**
+ - In FlutterFlow, check the project for any unresolved issues.
+ - Resolve errors before proceeding to build.
+
+ 
+
+2. **Save the Project**
+ - Use `Ctrl + S` or `Cmd + S` to save all recent changes.
+
+ 
+
+3. **Rebuild the APK**
+ - Use the Build tab to generate a new APK.
+ - Download the APK after the build completes.
+
+ 
+
+4. **Run the APK or Project Locally**
+ - Download the full project code and run it using your local machine.
+ - This allows visibility into any compilation or runtime errors.
+
+5. **Run Required Commands**
+ - Open a terminal and execute all necessary build commands (e.g., `flutter pub get`, `flutter build apk`).
+
+## :::note[Firebase Configuration Consideration]
+
+When building locally, some features—like Google Sign-In—may not work unless you configure the SHA1 key in Firebase.
+
+- Go to the Firebase Console.
+- Add your local machine’s SHA1 fingerprint to your Android app configuration.
+- Redeploy after the change.
+
+:::
diff --git a/docs/troubleshooting/firebase/Can't deploy Firestore Database rules.md b/docs/troubleshooting/firebase/Can't deploy Firestore Database rules.md
new file mode 100644
index 00000000..6b707015
--- /dev/null
+++ b/docs/troubleshooting/firebase/Can't deploy Firestore Database rules.md
@@ -0,0 +1,76 @@
+---
+keywords: ['database', 'firebase', 'permissions']
+author: Unknown
+created_at: '1677245210'
+slug: /can-t-deploy-firestore-database-rules
+title: Can't Deploy Firestore Database Rules
+updated_at: '1677274905'
+url: https://intercom.help/flutterflow/en/articles/7030020-can-t-deploy-firestore-database-rules
+---
+
+# Can't Deploy Firestore Database Rules
+
+If you're having trouble deploying Firestore Database rules in FlutterFlow, follow the steps below to troubleshoot the issue.
+
+---
+
+## ✅ Step 1: Validate That Firestore Database Has Been Created
+
+FlutterFlow cannot deploy rules if a **Firestore database** has not been created in your Firebase project.
+
+1. Go to the [Firebase Console](https://console.firebase.google.com).
+2. Select your project.
+3. Click **Create Database** under Firestore.
+
+
+
+> 🎥 **Video Reference:**
+> _Create a Firestore database in Firebase_ — watch from **1:50 to 2:05**
+
+---
+
+## ✅ Step 2: Verify Required Permissions
+
+To deploy Firestore rules, you must assign the following roles to `firebase@flutterflow.io`:
+
+- **Editor**
+- **Cloud Functions Admin**
+- **Service Account User**
+
+### To check or update roles:
+1. Go to **Project Settings** > **Users & Permissions** in your Firebase Console.
+2. Locate the `firebase@flutterflow.io` service account.
+3. Confirm that the three required roles are assigned.
+
+> 📌 If any of the roles are missing, follow [this guide](https://intercom.help/flutterflow/en/articles/7030020-can-t-deploy-firestore-database-rules) to add them.
+
+
+
+
+
+---
+
+## ✅ Step 3: Confirm GCP Location is Selected
+
+FlutterFlow cannot deploy rules if a GCP location hasn’t been selected.
+
+1. In Firebase Console, go to **Project Settings** > **General**.
+2. Under **Default GCP Resource Location**, check if a location is selected.
+
+If it shows **“Not yet selected”**, click the **pencil icon** to complete setup.
+
+
+
+> ⚠️ **Note:** This selection **cannot be changed** later. [Learn more about location selection](https://firebase.google.com/docs/projects/locations).
+
+---
+
+## 🎉 You're Done!
+
+After completing these three checks:
+- ✅ Firestore is created
+- ✅ Permissions are assigned
+- ✅ GCP location is set
+
+...you should now be able to successfully deploy your Firestore database rules from FlutterFlow.
+
diff --git a/docs/troubleshooting/firebase/Can't deploy firestore database indexes..md b/docs/troubleshooting/firebase/Can't deploy firestore database indexes..md
new file mode 100644
index 00000000..51184a81
--- /dev/null
+++ b/docs/troubleshooting/firebase/Can't deploy firestore database indexes..md
@@ -0,0 +1,82 @@
+---
+keywords: ['database', 'firestore', 'deploy']
+author: Unknown
+created_at: '1677502144'
+slug: /can-t-deploy-firestore-database-indexes
+title: Can't Deploy Firestore Database Indexes
+updated_at: '1677879784'
+url: https://intercom.help/flutterflow/en/articles/7034528-can-t-deploy-firestore-database-indexes
+---
+
+# Can't Deploy Firestore Database Indexes
+
+When you add or update a query with new filters in FlutterFlow, the platform prompts you to deploy the necessary Firestore indexes. This process creates the appropriate indexes in your Firebase Firestore database to support those queries.
+
+> 📘 Learn more about Firestore indexes in [this guide](https://docs.flutterflow.io/data/firestore/using-indexes) before proceeding.
+
+
+
+---
+
+## 🛠 Troubleshooting Steps
+
+If you’re unable to deploy indexes, follow these steps to resolve the issue:
+
+### ✅ 1. Enable Email Sign-In
+
+Ensure that **Email/Password** sign-in is enabled in your Firebase Authentication settings.
+
+> 🔗 [Enable Firebase Email Authentication](https://docs.flutterflow.io/integrations/firebase/authentication#emailpassword)
+
+---
+
+### ✅ 2. Assign Required Cloud Permissions
+
+Grant the following roles to `firebase@flutterflow.io` in your Firebase project:
+
+- **Editor**
+- **Cloud Functions Admin**
+- **Service Account User**
+
+> 🔗 [How to assign Firebase roles](https://docs.flutterflow.io/integrations/firebase/permissions)
+
+---
+
+### ✅ 3. Update Firebase Rules
+
+Make sure your Firebase rules allow access for FlutterFlow to deploy indexes.
+
+> 🔗 [Update Firebase Rules](https://docs.flutterflow.io/data/firestore/setting-up-firestore#step-5-update-firestore-rules)
+
+---
+
+### ✅ 4. Refresh FlutterFlow and Clear Cache
+
+- Reload FlutterFlow with `Ctrl + R` (or `Cmd + R` on Mac).
+- Log out and log back in.
+- Clear your browser cache.
+
+---
+
+### ✅ 5. Check Index Limits in Firebase
+
+If you still can't deploy indexes, you may have hit the **index quota limit** for your Firebase plan.
+
+1. Go to the [Firebase Console](https://console.firebase.google.com/).
+2. Select your project.
+3. Navigate to **Firestore Database** > **Indexes**.
+4. Check for any warnings or quota-related errors.
+
+> 🔢 Firebase allows up to **200 composite indexes** by default, though this may vary based on your project or pricing plan.
+
+---
+
+## 🔄 When Index Deployment is Required
+
+Anytime you **modify**, **add**, or **remove** a query in FlutterFlow, you'll be prompted to re-deploy indexes. This ensures your app continues to query data efficiently.
+
+---
+
+## Still Need Help?
+
+If none of these steps resolve the issue, reach out to our support team at [support@flutterflow.io](mailto:support@flutterflow.io).
diff --git a/docs/troubleshooting/firebase/Could not create an account as firebase@flutterflow.io to your firebase project, in CMS - content management.md b/docs/troubleshooting/firebase/Could not create an account as firebase@flutterflow.io to your firebase project, in CMS - content management.md
new file mode 100644
index 00000000..01f7aba1
--- /dev/null
+++ b/docs/troubleshooting/firebase/Could not create an account as firebase@flutterflow.io to your firebase project, in CMS - content management.md
@@ -0,0 +1,42 @@
+---
+keywords: ['firebase', 'error', 'content']
+author: Unknown
+created_at: '1677251582'
+slug: /could-not-create-an-account-as-firebase-flutterflow-io-to-your-firebase-project-in-cms-content-management
+title: Could not create an account as firebase@flutterflow.io to your Firebase project, in CMS - Content Management
+updated_at: '1677251836'
+url: https://intercom.help/flutterflow/en/articles/7030277-could-not-create-an-account-as-firebase-flutterflow-io-to-your-firebase-project-in-cms-content-management
+---
+
+# Could Not Create an Account as firebase@flutterflow.io to Your Firebase Project in CMS – Content Management
+
+If you believe all your configurations are correct or it was working previously and you now see this error:
+
+
+
+## Steps to Resolve
+
+1. Go to your **Firebase Project > Authentication** and search for the **firebase@flutterflow.io** user.
+
+ 
+
+2. Load the user by typing **firebase@flutterflow.io** in the search field and hit **Reload**.
+
+3. Once found, **remove it** from the authentication table.
+
+4. Return to **FlutterFlow CMS** and **refresh the page**. You should now be able to see your database content.
+
+---
+
+## Why Is This Happening?
+
+This issue typically occurs when you connect **more than one FlutterFlow project** to the same Firestore database and manage the CMS data across those projects.
+
+In this scenario, **permission conflicts** may arise. As a result:
+
+- CMS may work when accessed from **Project A**.
+- CMS may **fail** when accessed from **Project B**.
+
+**Solution:**
+By removing the `firebase@flutterflow.io` account from Firebase Authentication, you allow it to be **recreated with the correct permissions** the next time CMS is accessed.
+
diff --git a/docs/troubleshooting/firebase/Error Package name in Firebase Android config must match your app's package name..md b/docs/troubleshooting/firebase/Error Package name in Firebase Android config must match your app's package name..md
new file mode 100644
index 00000000..44482134
--- /dev/null
+++ b/docs/troubleshooting/firebase/Error Package name in Firebase Android config must match your app's package name..md
@@ -0,0 +1,40 @@
+---
+keywords: ['firebase', 'android', 'error']
+author: Unknown
+created_at: '1651199180'
+slug: /error-package-name-in-firebase-android-config-must-match-your-app-s-package-name
+title: 'Error: Package Name in Firebase Android Config Must Match Your App''s Package Name'
+updated_at: '1651241585'
+url: None
+---
+
+# Error: Package Name in Firebase Android Config Must Match Your App's Package Name
+
+## What Does This Error Mean?
+
+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.
+
+## How to Resolve This Issue
+
+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**.
+
+## Still Experiencing Issues?
+
+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/Execution failed for task 'appprocessReleaseGoogleServices'..md b/docs/troubleshooting/firebase/Execution failed for task 'appprocessReleaseGoogleServices'..md
new file mode 100644
index 00000000..6e625b9a
--- /dev/null
+++ b/docs/troubleshooting/firebase/Execution failed for task 'appprocessReleaseGoogleServices'..md
@@ -0,0 +1,49 @@
+---
+keywords: ['firebase', 'error', 'build failure']
+author: Unknown
+created_at: '1661723973'
+slug: /fix-processreleasegoogleservices-error
+title: Fix Execution Failed for Task ':app:processReleaseGoogleServices'
+updated_at: '1713554292'
+url: https://intercom.help/flutterflow/en/articles/6509730-execution-failed-for-task-app-processreleasegoogleservices
+---
+
+# Fix Execution Failed for Task ':app:processReleaseGoogleServices'
+
+This error typically indicates a mismatch in the **Firebase package name** within your FlutterFlow project and the `google-services.json` configuration file.
+
+## :::info[Prerequisites]
+- You must have Firebase already integrated in your FlutterFlow project.
+- Ensure you are using the correct package name under **Settings > General > App Details**.
+:::
+
+## Error Message
+
+```plaintext
+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]'
+```
+
+## Steps to Resolve
+
+1. **Open Your Project in FlutterFlow**
+
+2. **Navigate to** `Settings > Firebase`
+
+ 
+
+3. **Regenerate Firebase Config Files**
+ - Click **Regenerate Config Files**.
+ - Enter the correct package name (as set under **Settings > General**).
+ - Click **Generate File**.
+
+ 
+
+4. **Re-deploy Your App**
+ - After regenerating the config files, deploy the app again to verify if the issue is resolved.
+
+## :::warning
+If the error persists even after regenerating the config files, contact [FlutterFlow Support](mailto:support@flutterflow.io) via **Chat** or **Email**.
+:::
diff --git a/docs/troubleshooting/firebase/Firebase project not configured.Make sure you set up Firebase for your project under Settings Firebase.md b/docs/troubleshooting/firebase/Firebase project not configured.Make sure you set up Firebase for your project under Settings Firebase.md
new file mode 100644
index 00000000..8eb1996c
--- /dev/null
+++ b/docs/troubleshooting/firebase/Firebase project not configured.Make sure you set up Firebase for your project under Settings Firebase.md
@@ -0,0 +1,44 @@
+---
+keywords: ['firebase', 'setup', 'settings']
+author: Unknown
+created_at: '1688966657'
+slug: /fix-firebase-project-not-configured
+title: Fix Firebase Project Not Configured Error in Settings
+updated_at: '1710092417'
+url: null
+---
+
+# Fix Firebase Project Not Configured Error in Settings
+
+This article explains how to resolve the **Firebase project not configured** error that may appear when accessing the Content Manager (CMS) in FlutterFlow.
+
+## :::info[Prerequisites]
+- You must have a Firebase project already set up.
+- Ensure the Firebase project is linked in your FlutterFlow project under **Settings > Firebase**.
+:::
+
+## Steps to Resolve the Issue
+
+1. **Verify Firebase Setup**
+ - In FlutterFlow, go to **Settings > Firebase**.
+ - Confirm that all required Firebase configuration fields are filled.
+
+2. **Trigger a Project Update**
+ - Make a minor, non-breaking change to your project (e.g., add and delete a dummy widget).
+ - This forces FlutterFlow to sync and update your Firebase settings.
+
+3. **Reload the CMS**
+ - Return to the **CMS** tab and reload the page.
+ - Check if the error persists.
+
+ 
+
+4. **Contact Support if Needed**
+ - If the issue continues after performing these steps, contact FlutterFlow Support:
+ - **Email:** [support@flutterflow.io](mailto:support@flutterflow.io)
+ - **Chat:** Available in the FlutterFlow app interface.
+
+## :::note
+This issue typically occurs when Firebase has not been properly initialized in the project settings. Triggering a rebuild helps reestablish the necessary configurations.
+:::
+
diff --git a/docs/troubleshooting/firebase/How To Resolve [Advanced] 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..md b/docs/troubleshooting/firebase/How To Resolve [Advanced] 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..md
new file mode 100644
index 00000000..2f4076cf
--- /dev/null
+++ b/docs/troubleshooting/firebase/How To Resolve [Advanced] 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..md
@@ -0,0 +1,30 @@
+---
+title: Enable Email Sign-In to Resolve Firebase Authentication Issues
+slug: /resolve-firebase-sign-in-email-configuration
+keywords: ['firebase', 'configuration', 'troubleshooting']
+---
+
+# Enable Email Sign-In to Resolve Firebase Authentication Issues
+
+If you see the following error:
+
+> **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:
+
+## How to Fix the Issue
+
+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/firebase/How to change modes in Firestore; from Datastore to Native mode.md b/docs/troubleshooting/firebase/How to change modes in Firestore; from Datastore to Native mode.md
new file mode 100644
index 00000000..bb518fee
--- /dev/null
+++ b/docs/troubleshooting/firebase/How to change modes in Firestore; from Datastore to Native mode.md
@@ -0,0 +1,32 @@
+---
+title: Switch Firestore from Datastore to Native Mode
+slug: /switch-firestore-datastore-to-native-mode
+keywords: ['mode', 'firestore', 'datastore']
+---
+
+# Switch Firestore from Datastore to Native Mode
+
+## Background
+
+In some cases, **Cloud Firestore** is configured in **Datastore Mode** by default. This mode is **not recommended** when working with FlutterFlow. You should switch your Firestore setup to **Native Mode** for full compatibility.
+
+
+
+---
+
+## Steps to Switch to Native Mode
+
+1. Click on **Go to Google Cloud Console**.
+2. In the console, click **Switch To Native Mode**.
+
+
+
+3. After switching the mode, return to Firebase and reload **Cloud Firestore**.
+
+---
+
+
+
+## Troubleshooting
+
+If the error still appears after following the steps above, please reach out to FlutterFlow support via chat or email at [support@flutterflow.io](mailto:support@flutterflow.io).
diff --git a/docs/troubleshooting/firebase/Package name in firebase android config must match your app's package name.md b/docs/troubleshooting/firebase/Package name in firebase android config must match your app's package name.md
new file mode 100644
index 00000000..9a2db8b2
--- /dev/null
+++ b/docs/troubleshooting/firebase/Package name in firebase android config must match your app's package name.md
@@ -0,0 +1,41 @@
+---
+keywords: ['firebase', 'android', 'package']
+slug: /firebase-config-package-name-mismatch
+title: Fix Firebase Config Package Name Mismatch for Android
+---
+
+# Fix Firebase Config Package Name Mismatch for Android
+
+This error occurs when the **package name defined in FlutterFlow** does not match the one used to generate the Firebase configuration files.
+
+> 💡 Ensure the package name matches **exactly** in both FlutterFlow and Firebase — including capitalization and punctuation.
+
+## Cause
+
+This issue typically arises after changing the package name in your FlutterFlow project without updating the corresponding Firebase configuration.
+
+## Resolution Steps
+
+### 1. Open Firebase Settings in FlutterFlow
+
+- In your FlutterFlow project, go to:
+ - **Settings > Firebase**
+
+
+
+### 2. Regenerate Config Files
+
+- Click **Regenerate Config Files**
+- Enter the updated package name
+- Click **Generate File**
+
+
+
+### 3. Re-Test Integration
+
+- Download and include the updated `google-services.json` file if prompted
+- Run or deploy your app again to verify the fix
+
+---
+
+By keeping your package name consistent between FlutterFlow and Firebase, you can avoid configuration errors and ensure proper app functionality.
diff --git a/docs/troubleshooting/google-play-store-deployment/Error The bundle version must be higher than the previously uploaded version.md b/docs/troubleshooting/google-play-store-deployment/Error The bundle version must be higher than the previously uploaded version.md
new file mode 100644
index 00000000..3fb05121
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/Error The bundle version must be higher than the previously uploaded version.md
@@ -0,0 +1,58 @@
+---
+keywords: ['error', 'deployment', 'previously']
+author: Unknown
+created_at: '1718224962'
+slug: /error-the-bundle-version-must-be-higher-than-the-previously-uploaded-version
+title: 'Error: The Bundle Version Must Be Higher Than the Previously Uploaded Version'
+updated_at: '1727117531'
+url: None
+---
+
+# Error: The Bundle Version Must Be Higher Than the Previously Uploaded Version
+
+:::tip
+Not sure which type of error your project has? Check out this article on how to identify your Codemagic error.
+:::
+
+## What Does This Error Mean?
+
+The error you are encountering occurs because the version and build number of the app you are trying to deploy are the same as the previously deployed version. Each new deployment must have a higher build number than the last one to be accepted by the Apple Store.
+
+### Error Message
+
+```text
+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"
+```
+
+
+## How to Resolve the Issue
+
+You need to ensure that the build number is higher than the last deployed version. In **FlutterFlow**, you can configure the build number to automatically increment with each deployment attempt.
+
+### Here’s What to Do:
+
+1. **Check the latest version and build number** uploaded to TestFlight.
+ For example, if your last version was `1.0.1` with build number `12`.
+
+2. Navigate to **FlutterFlow > Settings > Deployment** and find the section where you specify the version and build number.
+ 
+
+3. You have two options:
+ - **Option 1:** Keep the version the same and leave the **build number** field empty, allowing FlutterFlow to automatically increment it for you.
+ - **Option 2:** Manually increment the **build number** by 1.
+ For example, if the last build number was `12`, change it to `13`.
+
+4. If manually incrementing the build number does not resolve the issue, try incrementing the **version number** as well.
+ For instance, change it to `1.0.2` and leave the **build number** field empty, then attempt the deployment again.
+
+## Preventing Future Errors
+
+To avoid this error in future deployments:
+
+- If you prefer to **manually** increment the build number, be sure to increase it by **one (1)** before each new deployment.
+- Alternatively, leave the **build number** field empty altogether, allowing FlutterFlow to handle the increment **automatically**.
+
+## The Issue Was Not Resolved
+
+If this does not resolve the issue, contact FlutterFlow Support at **support@flutterflow.io**
diff --git a/docs/troubleshooting/google-play-store-deployment/Google Play Store deployment error Failed to read key from store tmpkeystore.keystore.md b/docs/troubleshooting/google-play-store-deployment/Google Play Store deployment error Failed to read key from store tmpkeystore.keystore.md
new file mode 100644
index 00000000..01355b85
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/Google Play Store deployment error Failed to read key from store tmpkeystore.keystore.md
@@ -0,0 +1,52 @@
+---
+title: Fix Google Play Deployment Error: Failed to Read Key from Keystore
+slug: /fix-google-play-keystore-deployment-error
+keywords: ['deployment', 'error', 'store']
+---
+
+# Fix Google Play Deployment Error: Failed to Read Key from Keystore
+
+## Error Message
+
+During deployment to the Google Play Store, you may encounter the following error:
+
+```text
+Error: Failed to read key ******** from store "/tmp/keystore.keystore"
+```
+
+
+---
+
+## Why This Happens
+
+This error typically occurs due to a problem with your keystore configuration, such as:
+
+- Incorrect keystore file path
+- Wrong keystore password or alias
+- Corrupted or missing keystore file
+
+---
+
+## How to Resolve
+
+Follow these steps to resolve the issue:
+
+1. **Verify Your Keystore Setup**
+ Check that the keystore file is correctly configured in your FlutterFlow **Project Settings > Android Build** section.
+
+2. **Check Keystore Credentials**
+ Double-check the **keystore password**, **key alias**, and **key password**. Make sure they match what you set when generating the keystore.
+
+3. **Regenerate the Keystore**
+ If the issue persists, consider creating a **new keystore** within FlutterFlow and updating the credentials accordingly.
+
+4. **Ensure File Integrity**
+ Confirm that you've uploaded the correct and **unmodified** keystore file.
+
+---
+
+## Additional Help
+
+Refer to FlutterFlow’s official guide on Android publishing for more details:
+[Publishing Your Android App](https://docs.flutterflow.io)
+
diff --git a/docs/troubleshooting/google-play-store-deployment/Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key. Found SHA1 XXXXXXXX. Expected YYYYYYYY.md b/docs/troubleshooting/google-play-store-deployment/Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key. Found SHA1 XXXXXXXX. Expected YYYYYYYY.md
new file mode 100644
index 00000000..98d89f49
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key. Found SHA1 XXXXXXXX. Expected YYYYYYYY.md
@@ -0,0 +1,48 @@
+
+
+
+It means the bundle is signed with a keystore that doesn’t match the one Google expects.
+
+---
+
+## Why This Happens
+
+This issue usually occurs when:
+- The wrong keystore file was used during signing.
+- You uploaded a bundle signed in debug mode.
+- The app was previously deployed using a different keystore, and the current one doesn't match the expected SHA1.
+
+---
+
+## How To Fix It
+
+### 1. Use the Correct Keystore File
+
+Verify that the **correct keystore file** (the one used when first publishing the app) is being used to sign your app.
+If you're unsure, contact support at [support@flutterflow.io](mailto:support@flutterflow.io).
+
+To generate a new keystore, use the following command:
+
+```bash
+keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
+```
+
+> ⚠️ **If the original keystore has been lost and the app is already published, contact [Google Play Support](https://support.google.com/googleplay/android-developer) for recovery options.**
+
+---
+
+### 2. Verify `build.gradle` Is Properly Configured
+
+Ensure your project’s `build.gradle` file is updated according to the [Google Play signing documentation](https://developer.android.com/studio/publish/app-signing).
+
+---
+
+### 3. Build in Release Mode
+
+Make sure you’re submitting a **release build** and not a debug version.
+
+- Debug builds are not optimized for production and use a debug keystore.
+- Check your build mode and switch to **Release Mode** before uploading.
+
+
+
\ No newline at end of file
diff --git a/docs/troubleshooting/google-play-store-deployment/How to Retrieve and Upload Your Keystore File in FlutterFlow for an Existing Google Play Project.md b/docs/troubleshooting/google-play-store-deployment/How to Retrieve and Upload Your Keystore File in FlutterFlow for an Existing Google Play Project.md
new file mode 100644
index 00000000..30fca800
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/How to Retrieve and Upload Your Keystore File in FlutterFlow for an Existing Google Play Project.md
@@ -0,0 +1,100 @@
+---
+keywords: ['upload', 'existing', 'file']
+slug: /upload-keystore-flutterflow-existing-google-play
+title: Uploading a Keystore to FlutterFlow for an Existing Google Play App
+---
+# Uploading a Keystore to FlutterFlow for an Existing Google Play App
+
+## Introduction
+
+Publishing an updated version of your app using FlutterFlow can be a challenging task, especially when the app was initially published on Google Play using another platform.
+
+This guide walks you through the process of obtaining or resetting keys from Google Play, creating a new keystore on your local machine, uploading it to FlutterFlow, and successfully deploying the app to your existing Google Play project.
+
+If you run into any roadblocks, we recommend reaching out to Google Play support or FlutterFlow Support for further assistance.
+
+
+
+
+
+## Step 1: Create a New Keystore
+
+Open your command line and enter:
+```
+keytool -genkeypair -alias allyou -keyalg RSA -keysize 2048 -validity 10000 -keystore allyou.keystore
+```
+
+This creates `allyou.keystore` with an RSA key, a key size of 2048 bits, and a 10,000-day validity.
+
+## Step 2: Export the PEM Public Key
+
+Then run:
+```
+keytool -export -rfc -keystore allyou.keystore -alias allyou -file allyou.pem
+```
+
+This exports the public key to `allyou.pem`.
+
+## Step 3: Submit the PEM Key to Google Play
+
+Log in to Google Play Console and submit the `allyou.pem` file through the App Signing section.
+
+## Step 4: Wait for Approval
+
+Approval times vary, so check back regularly in your Google Play Console.
+
+## Step 5: Deploy to Google Play Using the Keystore
+
+Once approved, use your `allyou.keystore` when uploading the app via FlutterFlow.
+
+---
+
+## Requesting a New Upload Key (If Necessary)
+
+If your original upload key is lost or compromised, you can request a new one.
+
+1. Log into Google Play Console
+2. Go to **Setup > App Integrity**
+3. Select **Request upload key reset**
+4. Follow on-screen instructions
+
+
+
+
+> **Note**: Only users with proper permissions can request this.
+
+Once Google approves, it takes about 48 hours to receive your new key.
+
+## After Receiving the New Upload Key
+
+You’ll typically receive a `.jks` or `.p12` file.
+
+### 1. Verify the Key
+
+Run:
+```
+keytool -list -v -keystore path/to/your_new_key.jks
+```
+
+### 2. Convert `.p12` to `.jks` (if needed)
+
+```
+keytool -importkeystore -srckeystore your-key.p12 -srcstoretype pkcs12 -destkeystore your-key.jks -deststoretype JKS
+```
+
+### 3. Upload to FlutterFlow
+
+Upload the `.jks` in the **Deploy > Android Settings** section in FlutterFlow. Provide the correct alias and passwords.
+
+
+
+
+Before releasing, do a test build to ensure everything works.
+
+
+
+## Conclusion
+
+Managing keystores is essential in app publishing. Always keep backups and record all passwords securely. If you lose your keystore, the update process becomes significantly more difficult.
+
+Contact FlutterFlow or Google Play Support if needed.
diff --git a/docs/troubleshooting/google-play-store-deployment/advertising_id_declaration_error_google_play.md b/docs/troubleshooting/google-play-store-deployment/advertising_id_declaration_error_google_play.md
new file mode 100644
index 00000000..03d6a175
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/advertising_id_declaration_error_google_play.md
@@ -0,0 +1,69 @@
+---
+keywords: ['android', 'release', 'error']
+slug: advertising-id-declaration-error-google-play
+title: Fix Advertising ID Declaration Error on Google Play
+---
+
+# Fix Advertising ID Declaration Error on Google Play
+
+This error typically occurs when deploying your app through the Google Play Console. It indicates a mismatch between your app’s permissions and your Advertising ID declaration.
+
+## Problem
+
+You may encounter the following error:
+
+```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.
+```
+
+
+This issue can appear even if your app does not contain advertising content, especially when using libraries like Google Analytics that internally reference the advertising ID.
+
+## Cause
+
+The `com.google.android.gms.permission.AD_ID` permission is added automatically if you use services such as:
+
+- Google Analytics
+- Firebase
+- Any SDK referencing the advertising ID
+
+Even if you are not displaying ads, including these SDKs requires an explicit declaration in the Google Play Console.
+
+## Solution
+
+Follow these steps to update your Advertising ID declaration in the Play Console:
+
+1. **Open the Google Play Console**
+ Navigate to your app project.
+
+2. **Go to App Content**
+ From the left panel, scroll down to **Policy and Programs → App Content**.
+
+3. **Update Advertising ID Declaration**
+ - Select **Advertising ID**
+ - Click **Start**
+
+ 
+
+4. **Answer Yes to Advertising ID Use**
+ Even if your app doesn't use ads directly, select **Yes** to indicate use of the AD_ID permission for analytics.
+
+ 
+
+5. **Select Analytics**
+ Check the **Analytics** box under the section that asks how the Advertising ID is used.
+
+6. **Save Changes**
+ Confirm and save the updated declaration.
+
+## Notes
+
+:::info
+If you use Google Analytics or similar services, you must declare the use of the Advertising ID, even if ads are not shown in the app.
+:::
+
+## Troubleshooting
+
+:::warning
+If the error persists after updating the declaration, contact FlutterFlow support via chat or email at [support@flutterflow.io](mailto:support@flutterflow.io).
+:::
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..9d1e5934
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/apk_specifies_a_version_code_that_has_already_been_used.md
@@ -0,0 +1,54 @@
+---
+keywords: ['error', 'deployment', 'build']
+slug: /apk-specifies-a-version-code-that-has-already-been-used
+title: APK Specifies a Version Code That Has Already Been Used
+---
+
+# APK Specifies a Version Code That Has Already Been Used
+
+This error occurs when the version code of the APK being deployed has already been used in a previous release. To successfully publish to the Google Play Store, each APK must have a unique version code.
+
+## Full Error Message
+
+```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"}}
+```
+
+
+## What Causes This Error?
+
+This error means that the application build being uploaded uses a version code already published to Google Play. The version code must be updated before publishing a new build.
+
+## 1. Deploying Directly From FlutterFlow
+
+Navigate to:
+
+**Settings and Integrations → Mobile Deployment**
+
+
+
+- **App Version**: Sets the version name for the app (e.g., `1.0.0`). This is optional but required in some deployment cases.
+- **Build Number**: Each deployment must use a unique build number. Increase this by 1 with each deployment. If left blank, FlutterFlow will auto-increment it.
+
+After updating both the version and build number from the previous release, redeploy the app.
+
+## 2. Deploying From GitHub
+
+Follow these steps to update the version manually:
+
+1. Open the `pubspec.yaml` file.
+2. Locate the `version` line.
+3. Update it using the format:
+ ```yaml
+ version: 1.0.2+2
+ ```
+ The format is version_name+build_number.
+4. Run the following command in the terminal:
+
+ ```js
+ flutter clean
+ ```
+5. Rebuild the app using your standard build command.
+ Use the latest Flutter version when deploying from GitHub to avoid compatibility issues.
+
+If the issue persists after updating both the version and build number, contact: support@flutterflow.io
\ No newline at end of file
diff --git a/docs/troubleshooting/google-play-store-deployment/upload-keystore-flutterflow-2.md b/docs/troubleshooting/google-play-store-deployment/upload-keystore-flutterflow-2.md
new file mode 100644
index 00000000..30fca800
--- /dev/null
+++ b/docs/troubleshooting/google-play-store-deployment/upload-keystore-flutterflow-2.md
@@ -0,0 +1,100 @@
+---
+keywords: ['upload', 'existing', 'file']
+slug: /upload-keystore-flutterflow-existing-google-play
+title: Uploading a Keystore to FlutterFlow for an Existing Google Play App
+---
+# Uploading a Keystore to FlutterFlow for an Existing Google Play App
+
+## Introduction
+
+Publishing an updated version of your app using FlutterFlow can be a challenging task, especially when the app was initially published on Google Play using another platform.
+
+This guide walks you through the process of obtaining or resetting keys from Google Play, creating a new keystore on your local machine, uploading it to FlutterFlow, and successfully deploying the app to your existing Google Play project.
+
+If you run into any roadblocks, we recommend reaching out to Google Play support or FlutterFlow Support for further assistance.
+
+
+
+
+
+## Step 1: Create a New Keystore
+
+Open your command line and enter:
+```
+keytool -genkeypair -alias allyou -keyalg RSA -keysize 2048 -validity 10000 -keystore allyou.keystore
+```
+
+This creates `allyou.keystore` with an RSA key, a key size of 2048 bits, and a 10,000-day validity.
+
+## Step 2: Export the PEM Public Key
+
+Then run:
+```
+keytool -export -rfc -keystore allyou.keystore -alias allyou -file allyou.pem
+```
+
+This exports the public key to `allyou.pem`.
+
+## Step 3: Submit the PEM Key to Google Play
+
+Log in to Google Play Console and submit the `allyou.pem` file through the App Signing section.
+
+## Step 4: Wait for Approval
+
+Approval times vary, so check back regularly in your Google Play Console.
+
+## Step 5: Deploy to Google Play Using the Keystore
+
+Once approved, use your `allyou.keystore` when uploading the app via FlutterFlow.
+
+---
+
+## Requesting a New Upload Key (If Necessary)
+
+If your original upload key is lost or compromised, you can request a new one.
+
+1. Log into Google Play Console
+2. Go to **Setup > App Integrity**
+3. Select **Request upload key reset**
+4. Follow on-screen instructions
+
+
+
+
+> **Note**: Only users with proper permissions can request this.
+
+Once Google approves, it takes about 48 hours to receive your new key.
+
+## After Receiving the New Upload Key
+
+You’ll typically receive a `.jks` or `.p12` file.
+
+### 1. Verify the Key
+
+Run:
+```
+keytool -list -v -keystore path/to/your_new_key.jks
+```
+
+### 2. Convert `.p12` to `.jks` (if needed)
+
+```
+keytool -importkeystore -srckeystore your-key.p12 -srcstoretype pkcs12 -destkeystore your-key.jks -deststoretype JKS
+```
+
+### 3. Upload to FlutterFlow
+
+Upload the `.jks` in the **Deploy > Android Settings** section in FlutterFlow. Provide the correct alias and passwords.
+
+
+
+
+Before releasing, do a test build to ensure everything works.
+
+
+
+## Conclusion
+
+Managing keystores is essential in app publishing. Always keep backups and record all passwords securely. If you lose your keystore, the update process becomes significantly more difficult.
+
+Contact FlutterFlow or Google Play Support if needed.
diff --git a/docs/troubleshooting/notifications/Send Notifications To A Specific Group Of Users.md b/docs/troubleshooting/notifications/Send Notifications To A Specific Group Of Users.md
new file mode 100644
index 00000000..8b3fef81
--- /dev/null
+++ b/docs/troubleshooting/notifications/Send Notifications To A Specific Group Of Users.md
@@ -0,0 +1,71 @@
+---
+keywords: ['firebase', 'users', 'group']
+author: Unknown
+created_at: '1679151141'
+slug: /send-notifications-to-a-specific-group-of-users
+title: Send Notifications to a Specific Group of Users
+updated_at: '1711172233'
+url: null
+---
+
+# Send Notifications to a Specific Group of Users
+
+## Introduction
+
+You can use FlutterFlow to trigger notifications to a filtered group of users based on attributes in your Firebase user collection. For example, you might want to send notifications only to users with a premium account when a new document (e.g., post) is created.
+
+This article provides step-by-step instructions to configure this logic in your FlutterFlow project.
+
+## :::info[Prerequisites]
+- Your project is connected to Firebase.
+- Push Notifications are enabled and deployed.
+- The project is on the Blaze plan.
+- The `firebase@flutterflow.io` service account has full access.
+- A user attribute (e.g., `isPremium`) exists in your `users` collection for filtering.
+:::
+
+## Sample Project
+
+Check out the [sample project](https://app.flutterflow.io/project/auto-notification-2bm5hz) that demonstrates this use case.
+
+## Steps to Send Notifications to a Specific Group
+
+1. **Query the Users Collection**
+ - On your post submission button, add a **Backend Query** action.
+ - Set **Query Type** to `Query Collection`.
+ - Choose the `users` collection.
+ - Set **Query Type** to `List of Documents`, then click **Save**.
+
+2. **Create the New Post Document**
+ - Add a **Create Document** action to save the new post data to Firestore.
+
+3. **Trigger the Notification**
+ - Add a **Trigger Notification** action after the document is created.
+ - Set the **Notification Parameters** (e.g., Title, Message, Initial Page).
+
+4. **Filter the Recipients List**
+ - Under **Recipients**, click **Unset** and choose **User Document** as the data source.
+ - Select **Filter List Items**.
+
+ :::note
+ To filter users correctly, your `users` collection must include a boolean attribute (e.g., `isPremium`) or any similar field.
+ :::
+
+ - Under **Filter Conditions**, click **Unset**.
+ - Select `Items in List`.
+ - Choose the `isPremium` field and set the condition to `True`.
+ - Click **Confirm** to apply the filter.
+
+5. **Map the Filtered List**
+ - In the recipients dialog, select **Map List Items**.
+ - Click **Unset** and select the `Reference` field under **Document Properties**.
+ - Click **Confirm** to finalize the mapping.
+
+6. **Complete the Action Chain**
+ - Close all pop-ups and save your workflow.
+ - The notification will now be triggered automatically whenever a new post is submitted.
+
+## Summary
+
+This setup allows you to send targeted push notifications to specific groups of users based on custom attributes in your Firestore database. Make sure all backend queries and filtering logic are correctly configured for accurate targeting.
+
diff --git a/docs/troubleshooting/notifications/advanced_push_notification_troubleshooting.md b/docs/troubleshooting/notifications/advanced_push_notification_troubleshooting.md
new file mode 100644
index 00000000..c86556ce
--- /dev/null
+++ b/docs/troubleshooting/notifications/advanced_push_notification_troubleshooting.md
@@ -0,0 +1,67 @@
+---
+keywords: ['notification', 'firebase', 'troubleshooting']
+slug: /advanced-push-notification-troubleshooting
+title: Advanced Push Notification Troubleshooting
+---
+
+# Advanced Push Notification Troubleshooting
+
+This guide outlines key steps to resolve common issues with push notifications in FlutterFlow.
+
+:::warning
+Push notifications will not work in the following cases:
+- When using an iOS simulator. Testing must be done on a real device.
+- If the user is not logged into the app.
+- If the app is currently open on the device.
+:::
+
+## 1. Confirm a Push Notification Key Is Created in Apple Developer Console
+
+Apple requires a push notification key to verify the sender. Navigate to:
+
+**Certificates, Identifiers & Profiles → Keys**
+
+
+
+If a key has not been created, one must be added.
+
+:::tip
+Refer to the [Apple documentation](https://developer.apple.com/account/resources/authkeys/list) for steps to create a push notification key.
+:::
+
+## 2. Verify the APN Key Is Uploaded to Firebase
+
+Open the Firebase Console, then go to:
+
+**Project Settings → Cloud Messaging**
+
+Scroll to the iOS section. If no file appears under **APNs Authentication Key**, upload the required key.
+
+
+
+:::tip
+See [Firebase instructions](https://firebase.google.com/docs/cloud-messaging/ios/client) for uploading the APN key.
+:::
+
+## 3. Add a Push Notification Identifier in Apple Developer Console
+
+Navigate to:
+
+**Certificates, Identifiers & Profiles → Identifiers**
+
+
+
+If no identifier is configured for push notifications, create one to enable iOS support post-deployment.
+
+:::tip
+Refer to the [Apple documentation](https://developer.apple.com/documentation/usernotifications/registering_your_app_with_apns) for creating an identifier.
+:::
+
+## 4. Ensure FlutterFlow Is Up to Date
+
+Update FlutterFlow by pressing:
+
+- `Ctrl + R` on Windows
+- `Cmd + R` on Mac
+
+After refreshing, clear your browser cache and log back into FlutterFlow.
diff --git a/docs/troubleshooting/test-mode/Can't see Text when using my app on mobile devices, but Text is visible in RUNTEST mode..md b/docs/troubleshooting/test-mode/Can't see Text when using my app on mobile devices, but Text is visible in RUNTEST mode..md
new file mode 100644
index 00000000..9168cfc6
--- /dev/null
+++ b/docs/troubleshooting/test-mode/Can't see Text when using my app on mobile devices, but Text is visible in RUNTEST mode..md
@@ -0,0 +1,56 @@
+---
+keywords: ['mode', 'mobile', 'text']
+author: Unknown
+created_at: '1677758942'
+slug: /can-t-see-text-when-using-my-app-on-mobile-devices-but-text-is-visible-in-runtest-mode
+title: Can't see Text when using my app on mobile devices, but Text is visible in RUN/TEST mode.
+updated_at: '1678232534'
+url: https://intercom.help/flutterflow/en/articles/7044347-can-t-see-text-when-using-my-app-on-mobile-devices-but-text-is-visible-in-run-test-mode
+---
+
+# Can't See Text When Using My App on Mobile Devices, But Text Is Visible in RUN/TEST Mode
+
+---
+
+## Issue
+
+Text widgets are not appearing when the app is tested on a real mobile device, but they are visible in FlutterFlow's **Run/Test Mode**.
+
+
+
+---
+
+## Troubleshooting This Issue
+
+If you're experiencing this issue, investigate the following potential causes:
+
+---
+
+### ✅ Check Light/Dark Mode Text Colors
+
+The text might be using a color that blends with the background, especially in **dark mode**. To fix this:
+
+1. Navigate to **Settings → Theme → Colors**
+2. Review both light and dark mode color schemes.
+3. Adjust text and background colors to ensure visibility.
+
+
+
+Alternatively, disable dark mode if it’s not needed.
+
+---
+
+### ✅ Ensure No Translations Have Been Missed
+
+When translations are missing, text may appear blank in non-default language settings.
+
+#### Fix it by:
+- Using FlutterFlow’s **automatic translator** to ensure translations exist for all languages.
+- Manually checking for empty translation fields.
+
+
+
+
+---
+
+By addressing both text color visibility and missing translations, you should be able to resolve the issue of disappearing text on real devices.
diff --git a/docs/troubleshooting/test-mode/Missing Purpose String in Info.plist.md b/docs/troubleshooting/test-mode/Missing Purpose String in Info.plist.md
new file mode 100644
index 00000000..1d4063b1
--- /dev/null
+++ b/docs/troubleshooting/test-mode/Missing Purpose String in Info.plist.md
@@ -0,0 +1,85 @@
+---
+keywords: ['permissions', 'error', 'missing']
+slug: /missing-purpose-string-in-info-plist
+title: Missing Purpose String in Info.plist
+---
+
+# Missing Purpose String in Info.plist
+
+If you're seeing the following error while submitting your iOS app, it means your app is referencing APIs that access sensitive user data, but your `Info.plist` file doesn't include a clear explanation (purpose string) for using that data.
+
+> **ITMS-90683: Missing Purpose String in Info.plist**
+> Your app‘s code references one or more APIs that access sensitive user data. The app‘s Info.plist file should contain a [permission] key with a user-facing purpose string explaining clearly and completely why your app needs the data. This includes permissions required by external libraries or SDKs.
+
+---
+
+## Why This Happens
+
+Apple requires a **user-facing explanation** (a “purpose string”) in your app’s `Info.plist` for each permission your app—or any integrated SDK—requests. Without these, your app will be rejected during submission.
+
+---
+
+## How to Fix It
+
+### 1. Identify Required Permissions
+
+Review your app’s functionality and identify any features that access:
+
+- Camera
+- Microphone
+- Location
+- Photo library
+- Contacts
+- Calendars
+- Bluetooth, etc.
+
+### 2. Go to FlutterFlow Settings
+
+- Open your project in **FlutterFlow**
+- Navigate to **Settings > Permissions**
+
+### 3. Add Purpose Strings
+
+For each permission your app uses:
+
+- Enable the permission toggle
+- Add a **clear, descriptive explanation** of how the app uses that feature
+
+> Example:
+> **NSMicrophoneUsageDescription**
+> _“We use your microphone so you can record and send audio notes.”_
+
+> **NSPhotoLibraryUsageDescription**
+> _“This app requires access to your photo library to let you upload images.”_
+
+
+
+### 4. Follow Apple’s Guidelines
+
+- Keep your descriptions **user-friendly**
+- Be **honest and specific**
+- Avoid vague language like “we need this permission for app functionality”
+
+### 5. Test Your App
+
+- Run your app on a physical iOS device
+- Ensure permission prompts appear
+- Confirm your purpose strings are visible and appropriate
+
+---
+
+## Why It Matters
+
+Providing a transparent explanation for data access builds user **trust** and improves the **likelihood of permission approval**. It’s also an Apple App Store requirement.
+
+
+
+---
+
+## Summary
+
+✅ Always add a purpose string in `Info.plist` for **every permission your app (or its SDKs) may access**
+✅ Use clear, respectful, and honest language
+✅ Test all permission flows before app submission
+
+If you’ve done all of this and the error persists, feel free to contact FlutterFlow support for additional help.
diff --git a/docs/troubleshooting/test-mode/My app colors aren't correct when running my application on a real device.md b/docs/troubleshooting/test-mode/My app colors aren't correct when running my application on a real device.md
new file mode 100644
index 00000000..c2783e6c
--- /dev/null
+++ b/docs/troubleshooting/test-mode/My app colors aren't correct when running my application on a real device.md
@@ -0,0 +1,41 @@
+---
+keywords: ['application', 'device', 'real']
+slug: /my-app-colors-aren-t-correct-when-running-my-application-on-a-real-device
+title: My App Colors Aren't Correct When Running My Application on a Real Device
+---
+
+# My App Colors Aren't Correct When Running My Application on a 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**.
+
+## Common Cause
+
+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.
+
+## How to Fix
+
+### 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
+
+## Summary
+
+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/test-mode/Test Mode Won\342\200\231t Load.md" "b/docs/troubleshooting/test-mode/Test Mode Won\342\200\231t Load.md"
new file mode 100644
index 00000000..bd33fb5f
--- /dev/null
+++ "b/docs/troubleshooting/test-mode/Test Mode Won\342\200\231t Load.md"
@@ -0,0 +1,129 @@
+---
+keywords: ['mode', 'load', 'test']
+author: Unknown
+created_at: '1710854314'
+slug: /test-mode-won-t-load
+title: Test Mode Won’t Load
+updated_at: '1712594564'
+url: https://intercom.help/flutterflow/en/articles/9089262-test-mode-won-t-load
+---
+# Test Mode Won’t Load
+
+Introduction
+When developing applications with Flutter, encountering a red screen filled with errors during the test mode is a common challenge. This issue, while alarming at first glance, often stems from a range of causes such as bugs in the code or misconfigurations within the project. To help you navigate through this problem and restore functionality to your test mode, this guide will explore all potential causes and scenarios that might lead to these errors.
+
+Scenarios You May Encounter
+There are several cases that can lead to trouble loading test mode – resulting in a red screen, or even displaying a blank page when testing your project.
+
+**1. Test Mode Infinite Loading**
+
+Service Outage
+When a service outage is experienced, it may cause Test Run to load for a long time.
+To verify this is not a global service outage, test `Test mode` the service with a different project. If this affects more than two different projects, please report this **immediately** to support@flutterflow.io
+
+Custom code method that runs an unsupported implementation (not supported on the web) in the main.dart file
+
+Running a custom code that is not supported on the web platform will result in an Infinite load in test mode
+
+To identify this, open the developer's console and check the logs shown
+
+To open the Console log, use **Option + ⌘ + J** (on macOS) or Shift + CTRL + J (on Windows/Linux). The console will either open up within your existing Chrome window, or in a new window. You may have to select the Console tab.
+
+
+
+
+The plugin causing the error will be indicated in the logs; verify whether the plugin is supported for the web on `pub.dev`. If the plugin used is not supported, you can look for an alternative plugin, here grouped in categories.
+
+To prevent other platform implementation exceptions, check the supported platforms for every third-party library that you are using in the project.
+
+
+
+2. Red Screen – Null Pointer Exceptions
+Accessing null values in the project can also result in a red screen. This could be coming from:
+
+Trying to access a wrong API JSON path
+
+When an API response returns an empty/null value that is passed to a list.
+
+When Page parameters are not passed but used in the destination page
+
+Null values from custom action/function output used in the widgets.
+
+Developed/designed `User Interface` trying to access null values from a database or API
+
+Custom Code trying to access null values that were passed as parameter
+
+Opening the browser console log will help you to point to the page that is causing the error. However, this doesn’t show the actual line of code or the variable that is throwing the error.
+
+
+
+To effectively identify the value that is causing the issue, it is recommended that you download the code and run it locally. You can follow these steps:
+
+Download your code from FlutterFlow
+
+Open the downloaded project in your preferred IDE ( We recommend VS Code – it provides great logs for debugging)
+
+Run the app on your device – make sure you have a Flutter environment set up on your local device and the Flutter SDK is of the same version as the Flutter Version shown in FlutterFlow Builder! (Here are steps for Windows , MacOS, or UNIX .
+
+
+
+The VS Code debugger will break the code execution where the error is, and you can use this information to identify the variable that is injecting a null value to the User interface.
+
+You will need to check the `Breakpoints` `uncaught exception`s in Vscode so that the code execution stops at the line where the bug is.
+
+**Tip**: In some cases, you might have a number of errors in your project. This will result in a number of code execution blocks when the breakpoints are enabled. To effectively identify the null pointer exception, we recommend only enabling the breakpoints just before you navigate to the page that was throwing the error.
+
+
+
+3. Red Screen Error - Type Exception
+Assigning the wrong data type can also result in a red screen when compiling your project in test mode. This can result when;
+
+Trying to assign a wrong type from the API JSON path to a widget or a variable that takes in a different data type than the supplied type
+
+Wrong data type from custom code output
+
+```
+TIP: Note that some type exceptions, like double/int, may not appear in test mode but will when running the project locally. This is because in test mode, the code is compiled to javascript, which is not type sensitive, While dart, which is run on the mobile device, is type strict language
+```
+
+
+
+```
+NOTE: In most cases also this type of exception, it is recommended to download the code locally. Check the steps in the Red screen - Null Pointer Exceptions
+```
+
+4. Build Errors: Test Mode won't Compile (Applies also for Run Mode)
+A number of build failed/ compile errors are a result of bugs in the project. This can result when;
+
+The project has errors in the project that are not shown by the project analyzer
+
+Wrong data type assignment in Builder widgets,i.e., assigning an integer to a label
+
+
+
+Using an Incompatible third-party plugin in the project
+
+Code generation error (report to support for investigation)
+
+If your project shows no compile errors in the builder but cannot be built successfully, please contact the support team for assistance.
+
+5. Blank Screen on Specific Pages While Running Test Mode
+Test mode runs may compile successfully; however, when you navigate to some of your pages in the project, they are blank. This can result because of ;
+
+Wrong flex assignment in the project: This kind of case will result in UI render box constraint issues shown in the console log. To troubleshoot this, we recommend downloading the project locally and navigating to the page that is not showing the content. The debugger will log the actual line number that is causing this render box paint error.
+
+The most common widgets to check that cause this error are Rows With containers / wrapped with containers and scrollable columns.
+
+6. Bonus (Other Known Issues)
+In some cases, the Test mode run may fail due to minor user faults. In these cases, it is recommended to check these steps when troubleshooting the issue
+
+Make sure they read the troubleshooting notes in the test mode in the top left side of the windows
+
+
+
+Make sure to do a TEST build from the same project and check the result
+
+Open the test mode in the same browser that you are logged in to Flutterflow in
+
+Check the custom codes. There could be packages that are not supported on the web in their custom code
+
diff --git a/docs/troubleshooting/test-mode/clear_database_before_running_tests.md b/docs/troubleshooting/test-mode/clear_database_before_running_tests.md
new file mode 100644
index 00000000..bb96a579
--- /dev/null
+++ b/docs/troubleshooting/test-mode/clear_database_before_running_tests.md
@@ -0,0 +1,28 @@
+---
+keywords: ['database', 'clear', 'before']
+slug: clear-database-before-running-tests
+title: Clear Database Before Running Tests
+---
+
+# Clear Database Before Running Tests
+
+When testing or developing your application, previously added records in your database can lead to inconsistencies if the data schema has changed.
+
+## Problem
+
+As your app evolves, you may add new fields to your database collections. Older records might not include these new fields. When the app expects those fields and they are missing, it can lead to errors or unexpected behavior.
+
+## Solution
+
+:::tip
+Clear your database before running significant tests or after making changes to the data schema. This ensures all records follow the latest structure and prevents issues with missing data.
+:::
+
+## Example Scenario
+
+1. A new field such as `profilePicture` is added to a collection.
+2. Older records do not contain this field.
+3. The app expects the `profilePicture` field for all records.
+4. Attempting to display or process old records results in errors or incomplete data.
+
+To resolve this, either update all records to match the new schema or remove outdated entries before running tests or deploying the app.
diff --git a/docs/troubleshooting/test-mode/svg_image_missing_color_on_real_device.md b/docs/troubleshooting/test-mode/svg_image_missing_color_on_real_device.md
new file mode 100644
index 00000000..c623c731
--- /dev/null
+++ b/docs/troubleshooting/test-mode/svg_image_missing_color_on_real_device.md
@@ -0,0 +1,42 @@
+---
+keywords: ['svg', 'images', 'mobile', 'color']
+slug: svg-image-missing-color-mobile
+title: SVG Image Missing Color on Real Device
+---
+
+# SVG Image Missing Color on Real Device
+
+Your SVG images may appear correctly on the web but lose their colors when viewed on a physical mobile device. This guide walks through potential causes and solutions.
+
+## Problem
+
+SVG images render correctly on the web, but when viewed on an actual mobile device, the colors do not appear as expected or are completely missing.
+
+## Common Causes
+
+- **Unsupported color modes**: Devices may not support certain modes like CMYK. Use RGB for best compatibility.
+- **Missing color attributes**: If `fill` or `stroke` values are not defined, the image might appear colorless.
+- **Incorrect display attributes**: Attributes like `display: none;` can prevent parts of the SVG from rendering.
+- **Improper embedding or file path**: The SVG might not be correctly linked or referenced in the project.
+- **Device color settings**: Display settings such as grayscale or color filters may affect SVG rendering.
+
+## Troubleshooting Steps
+
+1. **Test with another SVG**
+ Swap in a different SVG file to check if the issue is file-specific.
+
+2. **Inspect the SVG in a text editor**
+ Confirm the presence of `fill` and `stroke` attributes and ensure valid color values are set.
+
+3. **Open SVG in a mobile browser**
+ See if the issue is specific to the app or also appears in the browser.
+
+4. **Check mobile display settings**
+ Ensure the device's display is not applying grayscale or color filters.
+
+5. **Try alternative software for exporting SVG**
+ If you're exporting from a design tool, experiment with different settings or software to preserve color information.
+
+## Summary
+
+SVG rendering issues on real devices are often due to file structure or device compatibility. Testing with multiple tools and verifying proper color attributes in your SVG file can help resolve this issue.
From 57b7670365b91e4d4635a3c5ac956a27e2c64061 Mon Sep 17 00:00:00 2001
From: mrdavidorok
Date: Wed, 30 Jul 2025 08:00:10 +0100
Subject: [PATCH 02/12] updated content, consolidated and reorganized the
articles
---
...dencies_to_custom_widgets_or_actions_in.md | 39 ------
...nable_image_upload_in_webview_on_device.md | 48 +++----
...'s email address or password is invalid.md | 17 ---
...r-message-for-invalid-login-credentials.md | 30 ++++
.../Can't upload photo to Content Manager.md | 51 -------
...k [ after activating the dynamic link ].md | 40 ------
...g Data Types in App State Variable List.md | 43 ------
...g-data-types-in-app-state-variable-list.md | 26 ++++
.../before-you-begin/build_your_first_app.md | 69 ----------
...onboarding-completion-before-navigation.md | 43 ++++++
docs/intro/before-you-begin/onboarding.md | 36 -----
...mbed a Flutterflow web app into iFrames.md | 25 ----
... performance we create with Flutterflow.md | 58 --------
...mbed-a-flutterflow-web-app-in-an-iframe.md | 41 ++++++
...act-of-editor-performance-on-app-builds.md | 48 +++++++
...et Address From Current Device Location.md | 102 --------------
.../convert-device-location-to-address.md | 100 ++++++++++++++
...input ] and update the same user record.md | 68 ---------
.../update-user-record-from-email-input.md | 50 +++++++
.../widgets/basic-widgets/How To Wrap Text.md | 66 ---------
.../I can't copy-paste widgets..md | 20 ---
...roject Sample How to Create a sub menu.md | 63 ---------
.../create-a-submenu-using-local-state.md | 46 +++++++
...board-permissions-for-widget-copy-paste.md | 22 +++
.../wrap-text-inside-containers.md | 44 ++++++
...Create An SwipeableStack In FlutterFlow.md | 73 ----------
...code_edits_with_flutterflow_github_sync.md | 27 ----
...ect in useEnable Realtime Collaboration.md | 41 ------
...ts-without-overwrites-when-using-github.md | 50 +++++++
.../api/How To Resolve 404 API Call Errors.md | 44 ------
...lient-server_errors_during_the_api_call.md | 27 +++-
... Deploy Button Not Working when Clicked.md | 31 -----
...n a NSPhotoLibraryUsageDescription key.md" | 57 --------
....X' is closed for new build submissions.md | 69 ----------
...file Doesn't Support Push Notifications.md | 69 ----------
...port the Associated Domains capability..md | 72 ----------
...ent team - Flutterflow and Local builds.md | 58 --------
.../fix-app-store-bundle-version-error.md | 43 ++++++
...ioning-profile-error-associated-domains.md | 81 +++++++++++
...fix-app-store-deploy-button-not-working.md | 33 +++++
...ios-signing-error-for-imagenotification.md | 45 ++++++
...e-strings-info-plist-for-ios-permission.md | 89 ++++++++++++
...provisioning_profile_sign_in_with_apple.md | 57 --------
.../sign-in-with-apple-provisioning-error.md | 46 +++++++
...-version-to-fix-pre-release-train-error.md | 56 ++++++++
.../custom_domain_connection_error.md | 91 ++++++++----
.../custom_domain_connection_issues.md | 66 ---------
...loaded from Flutterflow, SHA1 Key Error.md | 51 -------
...de And Published Web application on web.md | 57 --------
.../authentication/fix-google-sign-in-web.md | 58 ++++++++
...or-phone-authentication-on-real-devices.md | 47 +++++++
.../google_signin_not_working_run_test_web.md | 57 --------
...ve-firebase-sign-in-email-configuration.md | 31 +++++
...in the app via the image upload action..md | 36 -----
...ts in FlutterFlow \342\200\223 PayWall.md" | 90 ------------
...in storage, 1 user upload all users see.md | 51 -------
.../fix-image-upload-failure-from-action.md | 50 +++++++
.../backend/share-media-files-across-users.md | 46 +++++++
...ripe-payment-error-cors-region-mismatch.md | 40 ++++++
.../backend/stripe_payment_unknown_error.md | 56 --------
...Functions Admin in the Firebase Console.md | 40 ------
.../grant-cloud-functions-admin-role.md | 46 +++++++
...n't Download APK or Code in FlutterFlow.md | 52 -------
...have exceeded the quota for subdomains..md | 55 --------
...ot find End of Central Directory Record.md | 54 --------
... error NoDecoderForImageFormatException.md | 36 -----
.... Please contact support@flutterflow.io.md | 35 -----
...eted. Unable to locate a Java Runtime..md" | 23 ----
... is not a valid PEM encoded private key.md | 50 -------
...or_loading_project_for_test_or_run_mode.md | 59 --------
.../fix-apk-code-download-permissions.md | 48 +++++++
...-codemagic-format-exception-build-error.md | 33 +++++
...ile-build-error-nodecoderforimageformat.md | 29 ++++
.../fix-sms-code-verification-errors.md | 46 +++++++
...x-subdomain-limit-error-when-publishing.md | 46 +++++++
.../install-java-runtime-missing-error.md | 30 ++++
.../invalid-pem-private-key-error.md | 41 ++++++
...de Locally After Exporting My Code APK.md | 45 ------
...ode-locally-after-exporting-my-code-apk.md | 46 +++++++
.../Can't deploy Firestore Database rules.md | 76 -----------
...an't deploy firestore database indexes..md | 82 -----------
...se project, in CMS - content management.md | 42 ------
...task 'appprocessReleaseGoogleServices'..md | 49 -------
...or your project under Settings Firebase.md | 44 ------
...r your Firebase project, and try again..md | 30 ----
...irestore; from Datastore to Native mode.md | 32 -----
...nfig must match your app's package name.md | 41 ------
.../fix-cms-access-error-firebase-account.md | 33 +++++
...-firebase-android-package-name-mismatch.md | 46 +++++++
.../fix-firebase-project-not-configured.md | 29 ++++
.../fix-firestore-index-deployment-errors.md | 47 +++++++
.../fix-firestore-rules-deployment-errors.md | 67 +++++++++
...-services-config-error-in-android-build.md | 47 +++++++
.../fix-photo-upload-to-content-manager.md | 41 ++++++
.../switch-firestore-to-native-mode.md | 35 +++++
...er than the previously uploaded version.md | 58 --------
...ad key from store tmpkeystore.keystore.md | 52 -------
... Found SHA1 XXXXXXXX. Expected YYYYYYYY.md | 48 -------
...low for an Existing Google Play Project.md | 100 --------------
...tising_id_declaration_error_google_play.md | 69 ----------
.../android-app-bundle-wrong-key-error.md | 53 +++++++
...version_code_that_has_already_been_used.md | 64 +++++----
.../fix-keystore-read-error-on-google-play.md | 41 ++++++
.../play-store-ad-id-permission-error.md | 41 ++++++
...ystore-existing-google-play-flutterflow.md | 128 +++++++++++++++++
.../upload-keystore-flutterflow-2.md | 100 --------------
...ifications To A Specific Group Of Users.md | 71 ----------
...anced_push_notification_troubleshooting.md | 67 ---------
...-ios-push-notifications-for-ios-devices.md | 76 +++++++++++
...h-notifications-in-provisioning-profile.md | 63 +++++++++
.../send-notifications-to-user-groups.md | 61 +++++++++
...s, but Text is visible in RUNTEST mode..md | 56 --------
.../Missing Purpose String in Info.plist.md | 85 ------------
...running my application on a real device.md | 41 ------
.../Test Mode Won\342\200\231t Load.md" | 129 ------------------
.../app-colors-wrong-on-real-device.md | 37 +++++
.../clear_database_before_running_tests.md | 49 ++++---
.../fix-svg-color-not-showing-on-devices.md | 53 +++++++
.../fix-text-not-showing-on-mobile-devices.md | 49 +++++++
...esolve-build-failed-error-run-test-mode.md | 52 +++++++
.../test-mode/slow_test_mode_load.md | 50 -------
.../test-mode/slow_test_mode_loading.md | 114 ++++++++++++++++
.../svg_image_missing_color_on_real_device.md | 42 ------
123 files changed, 2820 insertions(+), 3674 deletions(-)
delete mode 100644 docs/ff-concepts/adding-customization/add_dependencies_to_custom_widgets_or_actions_in.md
delete mode 100644 docs/ff-concepts/alerts/Create an alert if a user's email address or password is invalid.md
create mode 100644 docs/ff-concepts/alerts/display-error-message-for-invalid-login-credentials.md
delete mode 100644 docs/ff-concepts/file-handling/Can't upload photo to Content Manager.md
delete mode 100644 docs/ff-concepts/navigation-routing/How can i access to Page link [ after activating the dynamic link ].md
delete mode 100644 docs/ff-concepts/state-management/Missing Data Types in App State Variable List.md
create mode 100644 docs/ff-concepts/state-management/missing-data-types-in-app-state-variable-list.md
delete mode 100644 docs/intro/before-you-begin/build_your_first_app.md
create mode 100644 docs/intro/before-you-begin/check-onboarding-completion-before-navigation.md
delete mode 100644 docs/intro/before-you-begin/onboarding.md
delete mode 100644 docs/intro/ff-ui/Could we embed a Flutterflow web app into iFrames.md
delete mode 100644 docs/intro/ff-ui/Is low performance of Flutterflow editor could affect the app performance we create with Flutterflow.md
create mode 100644 docs/intro/ff-ui/embed-a-flutterflow-web-app-in-an-iframe.md
create mode 100644 docs/intro/ff-ui/understand-the-impact-of-editor-performance-on-app-builds.md
delete mode 100644 docs/resources/control-flow/backend-logic/backend-query/Get Address From Current Device Location.md
create mode 100644 docs/resources/control-flow/backend-logic/backend-query/convert-device-location-to-address.md
delete mode 100644 docs/resources/control-flow/user-interactivity/How to Take an email from textField [ user input ] and update the same user record.md
create mode 100644 docs/resources/control-flow/user-interactivity/update-user-record-from-email-input.md
delete mode 100644 docs/resources/ui/widgets/basic-widgets/How To Wrap Text.md
delete mode 100644 docs/resources/ui/widgets/basic-widgets/I can't copy-paste widgets..md
delete mode 100644 docs/resources/ui/widgets/basic-widgets/Project Sample How to Create a sub menu.md
create mode 100644 docs/resources/ui/widgets/basic-widgets/create-a-submenu-using-local-state.md
create mode 100644 docs/resources/ui/widgets/basic-widgets/fix-clipboard-permissions-for-widget-copy-paste.md
create mode 100644 docs/resources/ui/widgets/basic-widgets/wrap-text-inside-containers.md
delete mode 100644 docs/resources/ui/widgets/composing-widgets/How To Create An SwipeableStack In FlutterFlow.md
delete mode 100644 docs/testing-deployment-publishing/branching-collaboration/ manage_code_edits_with_flutterflow_github_sync.md
delete mode 100644 docs/testing-deployment-publishing/branching-collaboration/Project in useEnable Realtime Collaboration.md
create mode 100644 docs/troubleshooting/ github/manage-code-edits-without-overwrites-when-using-github.md
delete mode 100644 docs/troubleshooting/api/How To Resolve 404 API Call Errors.md
delete mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/App Store Deploy Button Not Working when Clicked.md
delete mode 100644 "docs/troubleshooting/apple-store-deployment/fetch-signing-files/ITMS-90683 Missing purpose string in Info.plist - The Info.plist file for the \342\200\234Runner.app\342\200\235 bundle should contain a NSPhotoLibraryUsageDescription key.md"
delete mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions.md
delete mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning Profile Doesn't Support Push Notifications.md
delete mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning profile [app store project ID] doesn't support the Associated Domains capability..md
delete mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/Signing for ImageNotification requires a development team - Flutterflow and Local builds.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/apple-store-deployment/fix-app-store-bundle-version-error.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/apple-store-deployment/provisioning-profile-error-associated-domains.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-app-store-deploy-button-not-working.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-ios-signing-error-for-imagenotification.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/fix-missing-purpose-strings-info-plist-for-ios-permission.md
delete mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning_profile_sign_in_with_apple.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/sign-in-with-apple-provisioning-error.md
create mode 100644 docs/troubleshooting/apple-store-deployment/fetch-signing-files/update-version-to-fix-pre-release-train-error.md
delete mode 100644 docs/troubleshooting/apple-store-deployment/publishing/custom_domain_connection_issues.md
delete mode 100644 docs/troubleshooting/authentication/Google Phone Authentication Not Working on Real Devices APK Downloaded from Flutterflow, SHA1 Key Error.md
delete mode 100644 docs/troubleshooting/authentication/Google Sign-In Doesn't Work In RunTest Mode And Published Web application on web.md
create mode 100644 docs/troubleshooting/authentication/fix-google-sign-in-web.md
create mode 100644 docs/troubleshooting/authentication/google-or-phone-authentication-on-real-devices.md
delete mode 100644 docs/troubleshooting/authentication/google_signin_not_working_run_test_web.md
create mode 100644 docs/troubleshooting/authentication/resolve-firebase-sign-in-email-configuration.md
delete mode 100644 docs/troubleshooting/backend/I can't upload an image in the app via the image upload action..md
delete mode 100644 "docs/troubleshooting/backend/RevenueCat for Subscription and One-Time Payments in FlutterFlow \342\200\223 PayWall.md"
delete mode 100644 docs/troubleshooting/backend/Share mediafiles in storage, 1 user upload all users see.md
create mode 100644 docs/troubleshooting/backend/fix-image-upload-failure-from-action.md
create mode 100644 docs/troubleshooting/backend/share-media-files-across-users.md
create mode 100644 docs/troubleshooting/backend/stripe-payment-error-cors-region-mismatch.md
delete mode 100644 docs/troubleshooting/backend/stripe_payment_unknown_error.md
delete mode 100644 docs/troubleshooting/cloud-functions/Don't see Cloud Functions Admin in the Firebase Console.md
create mode 100644 docs/troubleshooting/cloud-functions/grant-cloud-functions-admin-role.md
delete mode 100644 docs/troubleshooting/deployment/Can't Download APK or Code in FlutterFlow.md
delete mode 100644 docs/troubleshooting/deployment/Can't publish to Flutterflow.app as a subdomain. Error Error reserving subdomain. You have exceeded the quota for subdomains..md
delete mode 100644 docs/troubleshooting/deployment/Codemagic build error Format Exception Could not find End of Central Directory Record.md
delete mode 100644 docs/troubleshooting/deployment/DeploymentBuild for mobile error NoDecoderForImageFormatException.md
delete mode 100644 docs/troubleshooting/deployment/Error Failed to create server directory. Please contact support@flutterflow.io.md
delete mode 100644 "docs/troubleshooting/deployment/I get this error The operation couldn\342\200\231t be completed. Unable to locate a Java Runtime..md"
delete mode 100644 docs/troubleshooting/deployment/Provided value is not a valid PEM encoded private key.md
delete mode 100644 docs/troubleshooting/deployment/build_failed_error_loading_project_for_test_or_run_mode.md
create mode 100644 docs/troubleshooting/deployment/fix-apk-code-download-permissions.md
create mode 100644 docs/troubleshooting/deployment/fix-codemagic-format-exception-build-error.md
create mode 100644 docs/troubleshooting/deployment/fix-mobile-build-error-nodecoderforimageformat.md
create mode 100644 docs/troubleshooting/deployment/fix-sms-code-verification-errors.md
create mode 100644 docs/troubleshooting/deployment/fix-subdomain-limit-error-when-publishing.md
create mode 100644 docs/troubleshooting/deployment/install-java-runtime-missing-error.md
create mode 100644 docs/troubleshooting/deployment/invalid-pem-private-key-error.md
delete mode 100644 docs/troubleshooting/exporting-code/Resolve Issues Running Code Locally After Exporting My Code APK.md
create mode 100644 docs/troubleshooting/exporting-code/resolve-issues-running-code-locally-after-exporting-my-code-apk.md
delete mode 100644 docs/troubleshooting/firebase/Can't deploy Firestore Database rules.md
delete mode 100644 docs/troubleshooting/firebase/Can't deploy firestore database indexes..md
delete mode 100644 docs/troubleshooting/firebase/Could not create an account as firebase@flutterflow.io to your firebase project, in CMS - content management.md
delete mode 100644 docs/troubleshooting/firebase/Execution failed for task 'appprocessReleaseGoogleServices'..md
delete mode 100644 docs/troubleshooting/firebase/Firebase project not configured.Make sure you set up Firebase for your project under Settings Firebase.md
delete mode 100644 docs/troubleshooting/firebase/How To Resolve [Advanced] 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..md
delete mode 100644 docs/troubleshooting/firebase/How to change modes in Firestore; from Datastore to Native mode.md
delete mode 100644 docs/troubleshooting/firebase/Package name in firebase android config must match your app's package name.md
create mode 100644 docs/troubleshooting/firebase/fix-cms-access-error-firebase-account.md
create mode 100644 docs/troubleshooting/firebase/fix-firebase-android-package-name-mismatch.md
create mode 100644 docs/troubleshooting/firebase/fix-firebase-project-not-configured.md
create mode 100644 docs/troubleshooting/firebase/fix-firestore-index-deployment-errors.md
create mode 100644 docs/troubleshooting/firebase/fix-firestore-rules-deployment-errors.md
create mode 100644 docs/troubleshooting/firebase/fix-google-services-config-error-in-android-build.md
create mode 100644 docs/troubleshooting/firebase/fix-photo-upload-to-content-manager.md
create mode 100644 docs/troubleshooting/firebase/switch-firestore-to-native-mode.md
delete mode 100644 docs/troubleshooting/google-play-store-deployment/Error The bundle version must be higher than the previously uploaded version.md
delete mode 100644 docs/troubleshooting/google-play-store-deployment/Google Play Store deployment error Failed to read key from store tmpkeystore.keystore.md
delete mode 100644 docs/troubleshooting/google-play-store-deployment/Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key. Found SHA1 XXXXXXXX. Expected YYYYYYYY.md
delete mode 100644 docs/troubleshooting/google-play-store-deployment/How to Retrieve and Upload Your Keystore File in FlutterFlow for an Existing Google Play Project.md
delete mode 100644 docs/troubleshooting/google-play-store-deployment/advertising_id_declaration_error_google_play.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/android-app-bundle-wrong-key-error.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/fix-keystore-read-error-on-google-play.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/play-store-ad-id-permission-error.md
create mode 100644 docs/troubleshooting/google-play-store-deployment/upload-keystore-existing-google-play-flutterflow.md
delete mode 100644 docs/troubleshooting/google-play-store-deployment/upload-keystore-flutterflow-2.md
delete mode 100644 docs/troubleshooting/notifications/Send Notifications To A Specific Group Of Users.md
delete mode 100644 docs/troubleshooting/notifications/advanced_push_notification_troubleshooting.md
create mode 100644 docs/troubleshooting/notifications/enable-ios-push-notifications-for-ios-devices.md
create mode 100644 docs/troubleshooting/notifications/enable-push-notifications-in-provisioning-profile.md
create mode 100644 docs/troubleshooting/notifications/send-notifications-to-user-groups.md
delete mode 100644 docs/troubleshooting/test-mode/Can't see Text when using my app on mobile devices, but Text is visible in RUNTEST mode..md
delete mode 100644 docs/troubleshooting/test-mode/Missing Purpose String in Info.plist.md
delete mode 100644 docs/troubleshooting/test-mode/My app colors aren't correct when running my application on a real device.md
delete mode 100644 "docs/troubleshooting/test-mode/Test Mode Won\342\200\231t Load.md"
create mode 100644 docs/troubleshooting/test-mode/app-colors-wrong-on-real-device.md
create mode 100644 docs/troubleshooting/test-mode/fix-svg-color-not-showing-on-devices.md
create mode 100644 docs/troubleshooting/test-mode/fix-text-not-showing-on-mobile-devices.md
create mode 100644 docs/troubleshooting/test-mode/resolve-build-failed-error-run-test-mode.md
delete mode 100644 docs/troubleshooting/test-mode/slow_test_mode_load.md
create mode 100644 docs/troubleshooting/test-mode/slow_test_mode_loading.md
delete mode 100644 docs/troubleshooting/test-mode/svg_image_missing_color_on_real_device.md
diff --git a/docs/ff-concepts/adding-customization/add_dependencies_to_custom_widgets_or_actions_in.md b/docs/ff-concepts/adding-customization/add_dependencies_to_custom_widgets_or_actions_in.md
deleted file mode 100644
index 322a906f..00000000
--- a/docs/ff-concepts/adding-customization/add_dependencies_to_custom_widgets_or_actions_in.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-keywords: ['dependencies', 'pubspec.yaml', 'custom widgets', 'flutterflow']
-slug: /add-custom-dependencies
-title: Add Dependencies to Custom Widgets or Actions
----
-
-# Add Dependencies to Custom Widgets or Actions
-
-FlutterFlow does not currently support adding dependencies to the entire project via the `pubspec.yaml` file. However, you can include dependencies by associating them with specific **Custom Widgets** or **Custom Actions**.
-
-This approach ensures that only the relevant code includes the necessary packages.
-
-:::info[Prerequisites]
-To use this method, you must have a custom widget or action already created within your FlutterFlow project.
-:::
-
-## Steps to Add a Dependency
-
-1. **Open the Custom Widget or Action**
- Navigate to your custom widget or action in FlutterFlow.
-
-2. **Add the Dependency**
- In the **Dependencies** tab, add the required package name and version.
-
-3. **Refresh the Dependencies**
- Click the **Refresh** icon to update the packages in your `pubspec.yaml` file.
-
-4. **Import the Package**
- Use an import statement in your Dart code, such as:
- ```dart
- import 'package:your_package/your_package.dart';
- ```
-
- 
-
-:::note
-- Dependencies added this way are scoped to the custom code where they are declared.
-- You can repeat these steps for each custom widget or action requiring additional packages.
-:::
\ No newline at end of file
diff --git a/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md b/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md
index ff380806..7d5c5947 100644
--- a/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md
+++ b/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md
@@ -1,43 +1,37 @@
---
-keywords: ['permissions', 'upload', 'view']
-slug: enable-image-upload-in-webview-on-device
+keywords: ['permissions', 'upload', 'webview', 'image']
+slug: enable-image-upload-in-webview-on-real-devices
title: Enable Image Upload in WebView on Real Devices
---
-# Enable Image Upload in WebView on Real Devices
+## Enable Image Upload in WebView on Real Devices
-Image uploads may work in Run/Test mode but fail on real devices due to missing runtime permissions related to accessing the photo library.
+Image uploads may function correctly in Run/Test mode but fail on real devices due to missing runtime permissions required for accessing the photo library. This document outlines the steps to resolve this issue.
-## Problem
+In web preview mode, the browser handles permissions, allowing image uploads to proceed without specific configurations. However, when deploying to physical Android or iOS devices, explicit runtime permissions are necessary to access the device's photo library. If image upload functionality is embedded within a **WebView**, FlutterFlow does not automatically detect this requirement and therefore does not request the required permissions during the build process.
-In web preview mode, permissions are managed by the browser, and image upload typically works without issues. However, on physical devices, accessing the photo library requires explicit runtime permissions.
+To enable image uploads from a **WebView** on a physical device, follow these steps:
-If the image upload is implemented inside a WebView, FlutterFlow does not automatically detect it and therefore does not request the necessary permissions.
+1. **Enable Photo Library Permission:**
-## Solution
+ Navigate to **Settings > [Permissions](/settings-and-integrations/mobile-deployment/permissions)** in your FlutterFlow project and enable the **Photo Library** permission.
-To allow image uploads from a WebView on a physical device, follow these steps:
+ 
-1. **Enable the Required Permission**
- Navigate to **Settings → Permissions** in your FlutterFlow project and enable the **Photo Library** permission.
+2. **Request Permission at Runtime:**
+ Before initiating the image upload action inside the **WebView**, add a **[Get Permission](/actions/widget-actions/permissions/get-permission)** action. Configure this action to explicitly request access to the **Photo Library**. This action should typically be placed on a button tap or an equivalent user interaction that precedes the upload.
- 
+ 
-2. **Request Permission at Runtime**
- Before initiating the upload action inside the WebView, use the **Get Permission** action to explicitly request access to the photo library.
+3. **Reinstall the Application:**
- 
+ After adding and configuring the permission, it is crucial to re-deploy your application to the device:
+ * Uninstall any existing versions of the app from the target device.
+ * Clear the app's cache (if applicable).
+ * Reinstall the updated application. This step ensures that the permission prompt appears when the app is launched for the first time or when the `Get Permission` action is triggered.
-3. **Reinstall the App**
- After adding the permission:
- - Uninstall the app from the device.
- - Clear the app cache.
- - Reinstall the app to ensure the permission prompt appears.
+ :::warning
+ If the permission dialog does not appear on the first launch or when the `Get Permission` action is triggered, the app will not have access to the photo library, and uploads inside the **WebView** will fail. Users may need to manually enable the permission through their device's app settings.
+ :::
-## Notes
-
-:::warning
-If the permission dialog does not appear on first launch, the app will not have access to the photo library, and uploads inside the WebView will fail.
-:::
-
-Once permissions are correctly granted, image uploads inside the WebView will function as expected on physical devices.
+Once permissions are correctly granted, image uploads initiated from within the **WebView** will function as expected on physical devices.
diff --git a/docs/ff-concepts/alerts/Create an alert if a user's email address or password is invalid.md b/docs/ff-concepts/alerts/Create an alert if a user's email address or password is invalid.md
deleted file mode 100644
index 09e7003b..00000000
--- a/docs/ff-concepts/alerts/Create an alert if a user's email address or password is invalid.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-keywords: ['email', 'address', 'alert']
-author: Unknown
-created_at: '1650489334'
-slug: /create-an-alert-if-a-user-s-email-address-or-password-is-invalid
-title: Create an alert if a user's email address or password is invalid
-updated_at: '1721942919'
-url: https://intercom.help/flutterflow/en/articles/6156971-create-an-alert-if-a-user-s-email-address-or-password-is-invalid
----
-
-# Create an Alert if a User's Email Address or Password is Invalid
-
-FlutterFlow automatically displays authentication error messages using a **SnackBar** widget. This means you **do not need to manually create alert dialogs** for common login issues such as an incorrect email or password.
-
-The error messages are shown automatically when a login attempt fails, providing a seamless experience for both the developer and end user.
-
-
diff --git a/docs/ff-concepts/alerts/display-error-message-for-invalid-login-credentials.md b/docs/ff-concepts/alerts/display-error-message-for-invalid-login-credentials.md
new file mode 100644
index 00000000..578720bc
--- /dev/null
+++ b/docs/ff-concepts/alerts/display-error-message-for-invalid-login-credentials.md
@@ -0,0 +1,30 @@
+---
+keywords: ['login', 'authentication', 'snackbar', 'error']
+slug: /display-error-message-for-invalid-login-credentials
+title: Display Error Message for Invalid Login Credentials
+---
+
+# Display Error Message for 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.
+
+**Customize the SnackBar (Optional)**
+
+ To add custom logic or change the appearance:
+
+ 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.
+
+:::tip
+There is no need to manually add alert dialogs for failed login attempts. FlutterFlow handles `SnackBar` display automatically when authentication fails.
+:::
+
+:::note
+To customize the `SnackBar` further, use the **Action Output** and attach additional logic based on the error string.
+:::
\ No newline at end of file
diff --git a/docs/ff-concepts/file-handling/Can't upload photo to Content Manager.md b/docs/ff-concepts/file-handling/Can't upload photo to Content Manager.md
deleted file mode 100644
index 8da8541a..00000000
--- a/docs/ff-concepts/file-handling/Can't upload photo to Content Manager.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-keywords: ['content', 'upload', 'photo']
-author: Unknown
-created_at: '1657225806'
-slug: /can-t-upload-photo-to-content-manager
-title: Can't upload photo to Content Manager
-updated_at: '1659057829'
-url: https://intercom.help/flutterflow/en/articles/6369337-can-t-upload-photo-to-content-manager
----
-
-# Can't Upload Photo to Content Manager
-
-By default, FlutterFlow's CMS does not support image uploads due to restrictive Firebase Storage rules. To enable photo uploads, you need to update your Firestore Security Rules.
-
----
-
-## Steps to Enable Photo Uploads
-
-### 1. Open Firebase Console
-
-In your FlutterFlow project, go to:
-
-**Settings & Integrations → Firebase → Open Firebase Console**
-
-
-
----
-
-### 2. Navigate to Storage Rules
-
-In the Firebase Console, click:
-
-**Storage → Rules**
-
-
-
----
-
-### 3. Update and Publish New Rules
-
-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;
- }
- }
-}
diff --git a/docs/ff-concepts/navigation-routing/How can i access to Page link [ after activating the dynamic link ].md b/docs/ff-concepts/navigation-routing/How can i access to Page link [ after activating the dynamic link ].md
deleted file mode 100644
index cceb8822..00000000
--- a/docs/ff-concepts/navigation-routing/How can i access to Page link [ after activating the dynamic link ].md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-title: Access Page Links After Activating Dynamic Links
-slug: /access-page-link-after-activating-dynamic-link
-keywords: ['access', 'dynamic', 'activating']
----
-
-# Access Page Links After Activating Dynamic Links
-
-Once you've enabled **Deep Linking & Routing** in FlutterFlow, you can also activate **Firebase Dynamic Links**.
-
-> Want to know more about Firebase Dynamic Links?
-> Refer to the Firebase documentation for setup and integration details.
-
-
-
-When you activate dynamic links, you gain access to **page-specific links**. This allows you to share or route users to exact screens within your app.
-
----
-
-## Important Note
-
-If you enable dynamic links, you must use `"https"` for the URL scheme.
-
----
-
-## How to Set Up Dynamic Links in FlutterFlow
-
-To share or use the current page URL, follow these steps:
-
-1. **Add an Action**: Use the `Generate Current Page Link` action to create a dynamic link for the active screen.
-
-2. **Access the Page URL**: Once generated, the page URL becomes accessible through the **Widget State → Current Page Link**.
-
-3. **Use It in Another Action**: For example, on your **Share** button, add:
- - A `Generate Current Page Link` action first
- - Then a `Share` action using `Current Page Link` as the source
-
----
-
-
diff --git a/docs/ff-concepts/state-management/Missing Data Types in App State Variable List.md b/docs/ff-concepts/state-management/Missing Data Types in App State Variable List.md
deleted file mode 100644
index 9914f334..00000000
--- a/docs/ff-concepts/state-management/Missing Data Types in App State Variable List.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-keywords: ['list', 'missing', 'state']
-slug: /missing-data-types-in-app-state-variable-list
-title: Missing Data Types in App State Variable List
----
-
-# Missing Data Types in App State Variable List
-
-When creating an app state variable in FlutterFlow, you should normally see a list of available data types. However, in some cases—especially in **older projects**—these options may not appear.
-
----
-
-## Why This Happens
-
-This issue is often caused by **Deep Linking not being enabled** in the project settings. Without Deep Linking, the data types list may fail to load in the App State configuration.
-
----
-
-## How to Fix It
-
-Follow these steps to enable Deep Linking:
-
-1. Open your project in **FlutterFlow**
-2. Go to **Project Settings**
-3. Scroll to the **App Details** section
-4. Open **Deep Linking & Route**
-5. **Turn on the Deep Linking** option
-
----
-
-
-
-Once Deep Linking is enabled, you should be able to see the full list of data types when creating or editing App State variables.
-
----
-
-## Conclusion
-
-This quick fix resolves a frustrating bug and can save you significant time during development. If enabling Deep Linking doesn't resolve the issue, please contact [FlutterFlow Support](mailto:support@flutterflow.io) for further assistance.
-
-> ✅ Pro Tip: This issue most often affects **legacy or older projects**. For all new projects, Deep Linking is typically enabled by default.
-
-Stay patient, keep building, and happy coding!
diff --git a/docs/ff-concepts/state-management/missing-data-types-in-app-state-variable-list.md b/docs/ff-concepts/state-management/missing-data-types-in-app-state-variable-list.md
new file mode 100644
index 00000000..0c6322d6
--- /dev/null
+++ b/docs/ff-concepts/state-management/missing-data-types-in-app-state-variable-list.md
@@ -0,0 +1,26 @@
+---
+keywords: ['list', 'missing', 'state']
+slug: /missing-data-types-in-app-state-variable-list
+title: Missing Data Types in App State Variable List
+---
+
+# Missing Data Types in App State Variable List
+
+When creating an **App State Variable** in FlutterFlow, you should see a list of available data types. However, in some cases—especially in older projects—these data types may not appear.
+
+This issue is typically caused by the **Deep Linking** setting being turned off in your project. If Deep Linking is disabled, the data type selection list may not populate correctly.
+
+Follow the steps below to enable Deep Linking and restore the missing data types:
+
+ 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.
+
+ 
+
+ After enabling Deep Linking, the list of data types should now be visible when adding or editing an App State Variable.
+
+ :::note
+ This fix is particularly effective for older projects where the setting may be disabled by default.
+ :::
\ No newline at end of file
diff --git a/docs/intro/before-you-begin/build_your_first_app.md b/docs/intro/before-you-begin/build_your_first_app.md
deleted file mode 100644
index 9625015e..00000000
--- a/docs/intro/before-you-begin/build_your_first_app.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-keywords: ['build', 'first']
-slug: build-your-first-app
-title: Build Your First App
----
-
-# Build Your First App
-
-Welcome to FlutterFlow — we're glad you're here!
-In this tutorial, you'll build a simple app in **less than 10 minutes**.
-
----
-
-## 1. Create a New Project
-
-- Select **Create New**.
-
-
-
-- A popup will appear.
- Enter a name for your project (e.g., `MyFirstProject`), then select **Create New** under **Blank App**.
-
-
-
----
-
-## 2. Change the Page Title
-
-- Click where it says **Page Title**.
-- In the **Properties Panel** on the right, change the text to **Home**.
-
-
-
----
-
-## 3. Style the Container
-
-- Drag a **Container** widget onto your app canvas.
-
-
-
-- In the **Padding & Alignment** section of the right panel:
- - Click the lock icon.
- - Enter `16` in the **L** field (this applies 16px padding on all sides).
-
-- In the **Container Properties** section:
- - Set the width to **∞** (original is 100).
- - Click the **Fill Color** square.
- - From the color selector popup, choose **Secondary BG** and click **Use Color**.
-
-- Under **Border Radius**:
- - Click the lock icon.
- - Enter `8` for the **TL** value.
-
----
-
-## 4. Add Content to the Container
-
-- Drag a **Column** inside your container.
-- In the **Padding & Alignment** section, unlock and enter `12`.
-- Drag a **Row** inside the column.
-- Then, drag a **Text** widget inside the row.
-
-- In the **Properties Panel**:
- - Change the text to **Active Projects**.
- - Scroll to the **Text Properties** section.
- - Under **Theme Text Style**, select **Body Text 2**.
-
-
diff --git a/docs/intro/before-you-begin/check-onboarding-completion-before-navigation.md b/docs/intro/before-you-begin/check-onboarding-completion-before-navigation.md
new file mode 100644
index 00000000..f7966bb5
--- /dev/null
+++ b/docs/intro/before-you-begin/check-onboarding-completion-before-navigation.md
@@ -0,0 +1,43 @@
+---
+keywords: ['onboarding', 'state management', 'navigation']
+slug: /check-onboarding-completion-before-navigation
+title: Check Onboarding Completion Before Navigation
+---
+
+# Check Onboarding Completion Before Navigation
+
+This article describes how to validate whether a user has completed onboarding before proceeding to subsequent screens or actions.
+
+To enhance user experience and enforce onboarding completion, you can set up a check that redirects users who haven’t finished onboarding. This is especially helpful before allowing users to:
+
+ - Access the home screen
+ - Proceed to checkout
+ - Use key features in the app
+
+Follow the steps below:
+
+ 1. **Create a Persisted Boolean Variable**
+ - Navigate to **App Settings > State Management > Persisted Values**.
+ - Create a new boolean variable (e.g., `hasCompletedOnboarding`) and set its default to `false`.
+
+ 2. **Update the Variable After Onboarding**
+ - At the final step of your onboarding flow, add an **Action > Update Persisted Value**.
+ - Set `hasCompletedOnboarding` to `true`.
+
+ 3. **Add a Check on Page Load**
+ - On the main screen (e.g., Home or Checkout), open the **Page Load** action.
+ - Add a **Conditional Action**:
+ - **If** `hasCompletedOnboarding == false`
+ - **Then** navigate to the onboarding page.
+
+ 4. **Prevent Navigation Without Onboarding**
+ - Apply similar checks to buttons or flows that require onboarding completion.
+
+ :::tip
+ Use `Local State` when you need to check onboarding status only during the session. For persistent checks across sessions or logins, use `Persisted Values`.
+ :::
+
+ :::note
+ - You can enhance onboarding with tooltips, highlights, and walkthrough modals using the **Onboarding Components**.
+ - Consider tracking completion events using **Firebase Analytics** for additional insights.
+ :::
\ No newline at end of file
diff --git a/docs/intro/before-you-begin/onboarding.md b/docs/intro/before-you-begin/onboarding.md
deleted file mode 100644
index 2a3d11bd..00000000
--- a/docs/intro/before-you-begin/onboarding.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-keywords: ['onboarding']
-slug: onboarding
-title: Onboarding
----
-
-# Onboarding
-
-To manage user onboarding effectively, combine **Local State**, **Persisted Value**, and **On PageLoad** actions.
-
-## Strategy
-
-Use conditional logic to verify whether the user has completed onboarding before allowing access to key parts of your app.
-
-## Implementation Steps
-
-1. **Track Onboarding Completion**
- - Create a **Local State** or **Persisted Value** (e.g., `hasCompletedOnboarding`) to record the user's onboarding status.
-
-2. **Check Status on Page Load**
- - Use an **On Page Load** action to check if the value indicates the user has completed onboarding.
- - If not, navigate the user to the onboarding screen.
-
-3. **Enforce Onboarding Before Critical Actions**
- - Before allowing actions like checkout, data submission, or profile updates:
- - Check the onboarding completion value.
- - If onboarding is incomplete, redirect the user accordingly.
-
-## Why It Matters
-
-This approach ensures users:
-- Do not skip essential setup steps.
-- Receive proper guidance through the app's initial flow.
-- Avoid errors or confusion during key interactions.
-
-> ✅ Use **Persisted Values** if onboarding should persist across app sessions. Use **Local State** if the status should reset after each session.
diff --git a/docs/intro/ff-ui/Could we embed a Flutterflow web app into iFrames.md b/docs/intro/ff-ui/Could we embed a Flutterflow web app into iFrames.md
deleted file mode 100644
index c436644a..00000000
--- a/docs/intro/ff-ui/Could we embed a Flutterflow web app into iFrames.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-keywords: ['could', 'embed', 'iframes']
-author: Unknown
-created_at: '1677842812'
-slug: /could-we-embed-a-flutterflow-web-app-into-iframes
-title: Could we embed a FlutterFlow web app into iFrames?
-updated_at: '1678244479'
-url: None
----
-
-# Could We Embed a FlutterFlow Web App Into iFrames?
-
-FlutterFlow web applications may not load correctly within **iframes** due to their reliance on **local storage**. However, it is possible to embed these apps within iframes by **enabling third-party cookies** from the subdomain where your FlutterFlow app is hosted.
-
-
-
-> ⚠️ **Important Notes:**
->
-> - While enabling third-party cookies may allow the application to load inside an iframe, **some features may not function as expected**.
-> - Many modern browsers and reputable websites intentionally **block iframe embedding** for security reasons.
-
-## Recommendation
-
-If you decide to use this method, **test your embedded application thoroughly** to ensure that all necessary features work correctly.
-
diff --git a/docs/intro/ff-ui/Is low performance of Flutterflow editor could affect the app performance we create with Flutterflow.md b/docs/intro/ff-ui/Is low performance of Flutterflow editor could affect the app performance we create with Flutterflow.md
deleted file mode 100644
index b54eeb80..00000000
--- a/docs/intro/ff-ui/Is low performance of Flutterflow editor could affect the app performance we create with Flutterflow.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-keywords: ['affect', 'could', 'performance']
-slug: /is-low-performance-of-flutterflow-editor-could-affect-the-app-performance-we-create-with-flutterflow
-title: Does FlutterFlow Editor Performance Affect the Final App?
----
-
-# Does FlutterFlow Editor Performance Affect the Final App?
-
-When using a drag-and-drop interface like FlutterFlow to build applications, a significant amount of code is generated behind the scenes. This sometimes raises concerns: _Does sluggish performance in the FlutterFlow editor impact the app's actual performance?_
-
-The short answer: **No, it does not.**
-
-## Understanding the Difference
-
-The performance of the **FlutterFlow editor** is separate from the performance of the **final app**. Just because the editor might be slow on your machine doesn’t mean your app will be slow when built and deployed.
-
-### Analogy
-
-> Think of it like using a photo editor. If Adobe Photoshop runs slowly on your computer, it doesn’t make your exported images blurry — the tool’s speed doesn’t affect the quality of the output.
-
-The same concept applies here. The generated Flutter code may be extensive, but it compiles down efficiently and runs independently of the development environment.
-
----
-
-## Known Editor Performance Factors
-
-Some aspects of the FlutterFlow editor may contribute to slower experience:
-
-### 1. **Typing Long Texts**
-
-Typing directly into large text fields in FlutterFlow can cause CPU spikes because every keystroke triggers real-time updates.
-**Recommendation**: Draft long text in an external editor and paste it into FlutterFlow.
-
-### 2. **Large Projects**
-
-Projects with many pages, components, or text fields may consume more memory and perform slower in the browser.
-
-### 3. **Browser Cache Limitations**
-
-Working in FlutterFlow for extended periods without restarting your browser can lead to performance degradation due to cache limits.
-
----
-
-## Optimization Tips
-
-- Use the **macOS desktop app** version of FlutterFlow when working mostly on UI.
-- Periodically **restart or hard-refresh** your browser to clear temporary data.
-- Consider breaking very large projects into modular parts if needed.
-
----
-
-## Final Thoughts
-
-Despite minor editor slowdowns, FlutterFlow is a robust platform for building performant, real-world apps. To validate performance, simply build your app and run it on a real device — most users experience great results.
-
-For examples and inspiration from real-world projects, visit the [FlutterFlow Experts Directory](https://experts.flutterflow.io/).
-
-By following best practices, you can get the most out of FlutterFlow and continue developing high-quality apps efficiently.
diff --git a/docs/intro/ff-ui/embed-a-flutterflow-web-app-in-an-iframe.md b/docs/intro/ff-ui/embed-a-flutterflow-web-app-in-an-iframe.md
new file mode 100644
index 00000000..ab3dc109
--- /dev/null
+++ b/docs/intro/ff-ui/embed-a-flutterflow-web-app-in-an-iframe.md
@@ -0,0 +1,41 @@
+---
+keywords: ['embed', 'iframe', 'web app', 'flutterflow']
+slug: /embed-a-flutterflow-web-app-in-an-iframe
+title: Embed a FlutterFlow Web App in an Iframe
+---
+
+# Embed a FlutterFlow Web App in an Iframe
+
+Embedding a FlutterFlow web application inside an `iframe` is technically possible, but it may not always work as expected due to browser security restrictions and FlutterFlow’s use of `localStorage`.
+
+:::warning
+Embedding a FlutterFlow web app in an `iframe` may result in **incomplete functionality** or loading issues—particularly if third-party cookies are disabled in the browser.
+:::
+
+Follow the steps below to embed a Web App in an Iframe:
+
+ 1. **Enable Third-Party Cookies**
+ Ensure that third-party cookies are allowed in the browser for the FlutterFlow app’s domain. This is critical for `localStorage` access inside the iframe.
+
+ 2. **Embed the Iframe Code**
+ Use the following HTML snippet in your host page to embed the FlutterFlow app:
+
+ ```html
+
+
+ 
+
+ Replace `https://your-flutterflow-app.web.app` with the actual hosted URL of your FlutterFlow web app.
+
+:::note
+- Some features in your app might not function properly when embedded in an iframe, especially those that rely on session storage or local storage.
+
+- Security policies like `X-Frame-Options` or `Content-Security-Policy` headers can also prevent embedding.
+
+- Many platforms (e.g., Google, LinkedIn) disallow embedding their apps in iframes to prevent clickjacking and other attacks.
+:::
\ No newline at end of file
diff --git a/docs/intro/ff-ui/understand-the-impact-of-editor-performance-on-app-builds.md b/docs/intro/ff-ui/understand-the-impact-of-editor-performance-on-app-builds.md
new file mode 100644
index 00000000..a623125c
--- /dev/null
+++ b/docs/intro/ff-ui/understand-the-impact-of-editor-performance-on-app-builds.md
@@ -0,0 +1,48 @@
+---
+keywords: ['editor', 'performance', 'app speed']
+slug: /understand-the-impact-of-editor-performance-on-app-builds
+title: Understand the Impact of Editor Performance on App Builds
+---
+
+# Understand the Impact of Editor Performance on App Builds
+
+When developing applications using FlutterFlow, the editor may occasionally experience slow performance, especially when working with large projects. However, this does not affect the performance of the final app build.
+
+## Editor Performance vs. App Performance
+
+ FlutterFlow uses a visual interface to generate clean and structured Dart code in the background. While some users may experience delays or UI lag in the FlutterFlow editor, especially when working on complex projects, these editor-side issues do not impact the compiled app’s runtime behavior or performance.
+
+ A helpful analogy is graphic design software: if Adobe Photoshop runs slowly on your computer, it doesn’t make the images blurry. Similarly, FlutterFlow editor lag does not degrade the quality or speed of the app it produces.
+
+## Common Causes of Editor Slowness
+
+ :::info[Editor Performance Factors]
+ The following conditions may lead to lag in the FlutterFlow editor:
+ :::
+
+ - Large projects with many pages, widgets, or custom functions.
+ - Excessive use of long text fields directly inside the editor.
+ - Browsers accumulating cache over long work sessions without restarts.
+
+:::tip[Tips to Improve Editor Responsiveness]
+To ensure smoother performance while using the FlutterFlow editor:
+
+1. **Avoid Typing Long Text Blocks Directly**
+ Write and format long content in a separate text editor, then copy it into FlutterFlow.
+
+2. **Restart Your Browser Regularly**
+ Refresh or relaunch the browser periodically to clear memory and cache.
+
+3. **Use macOS App for UI Workflows**
+ The macOS version of FlutterFlow is optimized for better performance when building UI components.
+
+4. **Close Unused Pages and Widgets**
+ Reducing the number of open tabs and components can free up memory.
+:::
+
+Any lag or slowness in the FlutterFlow editor is limited to the development environment. The compiled app’s performance depends on:
+ - The efficiency of the generated Flutter code.
+ - App logic, API usage, image sizes, and animation complexity.
+ - Device resources and internet connectivity.
+
+ Apps built with FlutterFlow run on Flutter’s framework, which is known for its speed and reliability in production environments.
\ No newline at end of file
diff --git a/docs/resources/control-flow/backend-logic/backend-query/Get Address From Current Device Location.md b/docs/resources/control-flow/backend-logic/backend-query/Get Address From Current Device Location.md
deleted file mode 100644
index e33ad302..00000000
--- a/docs/resources/control-flow/backend-logic/backend-query/Get Address From Current Device Location.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-keywords: ['device location', 'address', 'geocoding', 'google maps']
-slug: /convert-device-location-to-address
-title: Convert Device Location to Address
----
-
-# Convert Device Location to Address
-
-Learn how to convert a device's current geographic location into a readable address using either the Google Maps API or a Dart package.
-
-:::info[Prerequisites]
-- Your project must have location permissions enabled.
-- A Google Maps API key is required if using the Google Maps API method.
-- Basic knowledge of API calls and custom functions in FlutterFlow is recommended.
-:::
-
-## Method 1: Using the Google Maps API
-
-### Step 1: Enable the Google Maps API
-
-Go to the [Google Cloud Console](https://console.cloud.google.com/) and enable the **Geocoding API** for your project.
-
-
-
-### Step 2: Store API Key in Local State
-
-Add your API key to the local app state.
-
-
-
-### Step 3: Configure the API Call
-
-1. Navigate to **API Calls** in the FlutterFlow menu.
-2. Create a new API call:
- - **Base URL:** `https://maps.googleapis.com/maps/api/geocode/json`
- - **Method:** `GET`
-3. Add the following query parameters:
- - `latlng` (String)
- - `apiKey` (String)
-
-
-
-:::tip
-Refer to the [Creating API Calls](/api-calls/create-api-call) guide for step-by-step instructions.
-:::
-
-### Step 4: Create a Custom Function
-
-Create a custom function that accepts a `LatLng` object and returns a formatted string in the form of `latitude,longitude`.
-
-This will be used to populate the `latlng` variable in the API call.
-
-
-
-Add a button to the UI that triggers the backend API call using this custom function.
-
-### Step 5: Extract JSON Data
-
-1. Run the API call.
-2. Use **JSON Path** to extract the address string.
-
-Example JSON path for city name:
-```json
-$.results[0].address_components[1].long_name
-```
-
-
-
-
-Display the result in a `Text` widget using the JSON path result.
-
-
-
----
-
-## Method 2: Using the Geocoding Dart Package
-
-You can also use a custom action that leverages the [geocoding](https://pub.dev/packages/geocoding) Dart plugin.
-
-1. Pass the current device location to the custom action.
-2. Convert it to a formatted address string.
-
-
-
-Set the `Text` widget's value from the result of the custom action.
-
-
-
-:::warning
-Using third-party Dart packages in custom actions requires adding them to your `pubspec.yaml` file.
-:::
-
-For details, refer to the [Adding Dependencies Guide](/custom-functions/add-pubspec-dependencies).
-
----
-
-## Resources
-
-- [Google Geocoding API Documentation](https://developers.google.com/maps/documentation/geocoding/overview)
-- [Creating Custom Actions](/custom-functions/overview)
-- [Creating API Calls in FlutterFlow](/api-calls/create-api-call)
-- [Working with JSON Path](/api-calls/json-path-expressions)
diff --git a/docs/resources/control-flow/backend-logic/backend-query/convert-device-location-to-address.md b/docs/resources/control-flow/backend-logic/backend-query/convert-device-location-to-address.md
new file mode 100644
index 00000000..f4cc835a
--- /dev/null
+++ b/docs/resources/control-flow/backend-logic/backend-query/convert-device-location-to-address.md
@@ -0,0 +1,100 @@
+---
+keywords: ['device', 'address', 'current']
+slug: /convert-device-location-to-address
+title: Convert Device Location to Address
+---
+
+# Convert Device Location to Address in FlutterFlow
+
+This guide explains how to convert a user's device location (latitude and longitude) into a readable address (such as city or street name) in FlutterFlow. You can do this using either the **Google Maps Geocoding API** or 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/resources/control-flow/user-interactivity/How to Take an email from textField [ user input ] and update the same user record.md b/docs/resources/control-flow/user-interactivity/How to Take an email from textField [ user input ] and update the same user record.md
deleted file mode 100644
index 7a53be5d..00000000
--- a/docs/resources/control-flow/user-interactivity/How to Take an email from textField [ user input ] and update the same user record.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-keywords: ['email', 'input', 'update']
-slug: update-user-record-from-email-input
-title: Update a User Record from Email Input
----
-
-# Update a User Record from Email Input
-
-In some cases, you may want users to enter an email address, and if a user with that email exists in your Firebase collection, update their record or associate their reference to another document.
-
-FlutterFlow does not support direct query-based actions out-of-the-box, but you can achieve this using widget queries and local state.
-
-## Prerequisites
-
-Before starting, ensure you have:
-
-- Completed Firebase setup in your project.
-- Created a Firebase collection that contains user documents.
-- Added user data to your Firebase database.
-
-## Step 1: Set Up the TextField
-
-Create a `TextField` widget to accept the email address from the user.
-
-- Enable **Update Page on Change** for the `TextField`. This refreshes the page and allows queries to react to every character typed.
-
-
-
-## Step 2: Add a Query-Driven Result Widget
-
-Next, create a widget (e.g., a container or a button) that shows query results.
-
-- Attach a **Single Document Query** to this widget to search for a user with the provided email.
-- Enable **Hide Widget If No Result** in the query settings. This ensures the widget only appears if a match is found.
-
-
-
-If the widget is visible, it means a matching user was found and their document is available for update.
-
-## Step 3: Add the Update Action
-
-In the button's **Action Flow**, add an **Update Document** action.
-
-- Use the result of the query (user document) as the target.
-- Update the fields you want.
-- Optionally, display a snackbar to confirm the update.
-
-
-
-## Alternative: Use Local State
-
-If you prefer not to use “Update Page on Change”:
-
-1. Store the `TextField` value in **Local State**.
-2. Trigger the local state update using a button.
-3. Use that local state value to filter your query.
-
-This gives you more control over when queries are triggered.
-
-## Example
-
-You can explore a working example in this FlutterFlow project:
-
-👉 [Open Project](https://app.flutterflow.io/project/flutterflow-adcdi2) and check the `UpdateUser` page.
-
----
-
-This method allows you to simulate dynamic queries in FlutterFlow by combining `TextField`, `Single Document Query`, and conditional widget visibility.
diff --git a/docs/resources/control-flow/user-interactivity/update-user-record-from-email-input.md b/docs/resources/control-flow/user-interactivity/update-user-record-from-email-input.md
new file mode 100644
index 00000000..cda04576
--- /dev/null
+++ b/docs/resources/control-flow/user-interactivity/update-user-record-from-email-input.md
@@ -0,0 +1,50 @@
+---
+keywords: ['email', 'input', 'update']
+slug: /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.
+
+ 
+
+:::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/ui/widgets/basic-widgets/How To Wrap Text.md b/docs/resources/ui/widgets/basic-widgets/How To Wrap Text.md
deleted file mode 100644
index dcbaf959..00000000
--- a/docs/resources/ui/widgets/basic-widgets/How To Wrap Text.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-keywords: ['wrap', 'text']
-slug: wrapping-text-in-containers-and-listviews
-title: Wrapping Text in Containers and ListViews
----
-
-# Wrapping Text in Containers and ListViews
-
-When working with text inside containers, `ListView`, or other widgets, you may encounter situations where the text overflows or gets clipped. This is often because the text widget isn’t configured to wrap properly.
-
-## Common Use Case: Text Inside a Container in a ListView
-
-If you have a container inside a `ListView` and text is overflowing, follow these steps to enable wrapping:
-
-### 1. Use a `Text` Widget with `softWrap: true` and `maxLines`
-Ensure your `Text` widget is configured like this:
-
-```dart
-Text(
- 'Your long text here...',
- softWrap: true,
- overflow: TextOverflow.visible,
- maxLines: null,
-)
-```
-
-Also, would be good to outline any other use cases where text would overflow and it might not be clear how to wrap it
-
-
-## 2. Avoid Fixed Widths When Possible
-
-If you're using a fixed width for the container, the text may overflow if it's too long. Instead, use constraints like padding or flexible widgets such as `Expanded` or `Flexible`.
-
-## 3. Wrap Text in a Column or Expanded
-
-If you're placing text in a `Row` or a `Column`, make sure the `Text` widget is wrapped in an `Expanded` or `Flexible` widget so it takes up the available space:
-
-```dart
-Row(
- children: [
- Expanded(
- child: Text(
- 'This is a long line of text that will now wrap correctly.',
- ),
- ),
- ],
-)
-```
-
-## Other Scenarios Where Text Might Overflow
-
-- **Inside Buttons**: When the button size is too small for the text.
-- **In Cards or Custom Widgets**: If the `Text` widget is placed inside a container with hardcoded constraints.
-- **Dialog Boxes**: Particularly when the content is dynamically generated and not sized responsively.
-
-Use proper layout and flexible constraints to ensure text displays correctly on all screen sizes.
-
-## Summary
-
-To prevent text overflow:
-
-- Use `softWrap: true` where needed.
-- Avoid hardcoded widths and heights.
-- Wrap text with layout widgets like `Expanded`, `Flexible`, or `Wrap`.
-
-These practices will help ensure a responsive, consistent, and readable user interface.
diff --git a/docs/resources/ui/widgets/basic-widgets/I can't copy-paste widgets..md b/docs/resources/ui/widgets/basic-widgets/I can't copy-paste widgets..md
deleted file mode 100644
index 6a3340a4..00000000
--- a/docs/resources/ui/widgets/basic-widgets/I can't copy-paste widgets..md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-keywords: ['paste', 'widgets', 'copy']
-slug: unable-to-copy-and-paste-widgets-in-flutterflow
-title: Unable to Copy and Paste Widgets in FlutterFlow
----
-
-# Unable to Copy and Paste Widgets in FlutterFlow
-
-If you're unable to copy and paste widgets, it's likely due to your browser's clipboard permissions.
-
-## How to Fix It
-
-Make sure **Clipboard access** is allowed for FlutterFlow in your browser. If you're using Chrome, follow these steps:
-
-1. Click the **lock icon** next to the website address in the browser's address bar.
-2. A popup will appear. Set **Clipboard** permissions to **Allow**.
-
- 
-
-After adjusting the permissions, try copy-pasting the widget again.
diff --git a/docs/resources/ui/widgets/basic-widgets/Project Sample How to Create a sub menu.md b/docs/resources/ui/widgets/basic-widgets/Project Sample How to Create a sub menu.md
deleted file mode 100644
index 511c9863..00000000
--- a/docs/resources/ui/widgets/basic-widgets/Project Sample How to Create a sub menu.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-keywords: ['menu', 'sample', 'create']
-slug: /create-sub-menu-with-local-state
-title: Create a Sub Menu With Local State
----
-
-# Create a Sub Menu With Local State
-
-This guide demonstrates how to implement a toggleable sub-menu using a boolean local state variable in FlutterFlow.
-
-> **Project Preview**
-> **Editor**: [https://app.flutterflow.io/project/sub-menu-840l5q](https://app.flutterflow.io/project/sub-menu-840l5q)
-> **Run Mode**: [https://app.flutterflow.io/run/LfzBGTaef8WldndHa2x4](https://app.flutterflow.io/run/LfzBGTaef8WldndHa2x4)
-
-
-
-## Overview
-
-You will create a local state variable to control the visibility of the sub-menu. The value `true` means the menu is open, and `false` means it is hidden.
-
-This implementation requires the **Stack** widget to overlay the menu correctly.
-
-## Implementation Steps
-
-### 1. Create a Local State Variable
-
-- Add a **local state variable** of type **boolean**
-- Default value: `false`
-
-This variable will control whether the menu is visible.
-
-### 2. Add the Sub Menu to Your UI
-
-- Place the sub-menu where it best fits your design.
-- Wrap the menu in a **Visibility** widget.
-- Set the visibility condition to your local state variable.
-
-> 💡 Use a **Stack** widget to ensure the menu overlays the main content properly.
-
-### 3. Toggle Menu Visibility With the Menu Icon Button
-
-- Add an **IconButton** to open/close the menu.
-- On tap, add a conditional action:
- - If the local state variable is `false`, set it to `true`.
- - If it is `true`, set it to `false`.
-
-### 4. Hide the Menu After Selecting an Item
-
-- For each menu item:
- - Add your desired navigation or action.
- - After the action, set the local state variable to `false`.
-
-### 5. Close the Menu When Tapping Outside
-
-- Wrap your page’s main widget (usually the body) with a **GestureDetector**.
-- On tap, set the local state variable to `false`.
-
-This ensures the menu closes when users tap anywhere outside of it.
-
----
-
-By following this structure, you can create a dynamic sub-menu that behaves like a typical mobile drawer or contextual menu, using FlutterFlow’s local state system.
-
diff --git a/docs/resources/ui/widgets/basic-widgets/create-a-submenu-using-local-state.md b/docs/resources/ui/widgets/basic-widgets/create-a-submenu-using-local-state.md
new file mode 100644
index 00000000..2378d0a0
--- /dev/null
+++ b/docs/resources/ui/widgets/basic-widgets/create-a-submenu-using-local-state.md
@@ -0,0 +1,46 @@
+---
+keywords: ['menu', 'submenu', 'local state']
+slug: /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/resources/ui/widgets/basic-widgets/fix-clipboard-permissions-for-widget-copy-paste.md b/docs/resources/ui/widgets/basic-widgets/fix-clipboard-permissions-for-widget-copy-paste.md
new file mode 100644
index 00000000..441b1696
--- /dev/null
+++ b/docs/resources/ui/widgets/basic-widgets/fix-clipboard-permissions-for-widget-copy-paste.md
@@ -0,0 +1,22 @@
+---
+keywords: ['paste', 'widgets', 'copy']
+slug: /fix-clipboard-permissions-for-widget-copy-paste
+title: Fix Clipboard Permissions for Copy-Pasting Widgets
+---
+
+# Fix Clipboard Permissions for Copy-Pasting Widgets
+
+If you’re unable to copy and paste widgets in FlutterFlow, the issue may be related to blocked clipboard permissions in your browser.
+
+Follow the steps below 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 copying/pasting the widget again.
+
+ 
+
+:::tip
+For other browsers such as **Firefox**, **Edge**, or **Safari**, refer to that browser’s permission settings to enable clipboard access.
+:::
diff --git a/docs/resources/ui/widgets/basic-widgets/wrap-text-inside-containers.md b/docs/resources/ui/widgets/basic-widgets/wrap-text-inside-containers.md
new file mode 100644
index 00000000..8bca0afc
--- /dev/null
+++ b/docs/resources/ui/widgets/basic-widgets/wrap-text-inside-containers.md
@@ -0,0 +1,44 @@
+---
+keywords: ['wrap', 'text', 'container', 'overflow']
+slug: /wrap-text-inside-containers
+title: Wrap Text Inside Containers
+---
+
+# Wrap Text Inside Containers
+
+When building responsive layouts, text may overflow its container if not properly configured. This guide explains how to wrap text so that it fits within the container, especially in layouts such as ListView or Column.
+
+Follow the steps below to properly wrap text:
+
+ 1. **Select the Text Widget**
+ Choose the text element you want to wrap inside a container.
+
+ 2. **Enable Soft Wrap**
+ In the properties panel, locate the **Text Styling** section and enable **Soft Wrap**. This allows the text to break into multiple lines.
+
+ 3. **Set Max Lines (Optional)**
+ You can optionally set a **Max Lines** limit to control how many lines the text should wrap into before being truncated.
+
+ 4. **Use Expanded or Flexible (When in Row)**
+ If your text is inside a `Row`, wrap it in an `Expanded` or `Flexible` widget to prevent overflow.
+
+ 5. **Adjust Container Width**
+ Ensure the container has a defined or constrained width. Unlimited width will cause the text to expand rather than wrap.
+
+ 6. **Use Overflow Handling (Optional)**
+ Set the **Overflow** property to `ellipsis`, `clip`, or `fade` depending on how you want to handle excess text.
+
+ 
+
+:::tip
+When using a `Row`, wrapping long text will not work unless the text widget is inside an `Expanded` or `Flexible` widget. This ensures the text takes only available space and can wrap as needed.
+:::
+
+:::note
+- Avoid placing long text directly inside a Row without constraints.
+- Soft wrap works best when the container or parent widget has width restrictions.
+:::
+
+:::info[Additional Rescources]
+- [Flutter Text Overflow Class](https://api.flutter.dev/flutter/widgets/TextOverflow-class.html)
+:::
\ No newline at end of file
diff --git a/docs/resources/ui/widgets/composing-widgets/How To Create An SwipeableStack In FlutterFlow.md b/docs/resources/ui/widgets/composing-widgets/How To Create An SwipeableStack In FlutterFlow.md
deleted file mode 100644
index 0599f833..00000000
--- a/docs/resources/ui/widgets/composing-widgets/How To Create An SwipeableStack In FlutterFlow.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: Create a SwipeableStack in FlutterFlow
-slug: /create-swipeablestack-in-flutterflow
-keywords: ['swipeablestack', 'create', 'flutterflow']
----
-
-# Create a SwipeableStack in FlutterFlow
-
-## When to Use a SwipeableStack Widget
-
-A **SwipeableStack** widget is used to create interfaces where multiple cards or elements are stacked and swiped horizontally or vertically by the user. This UI pattern is helpful for:
-
-- **Tinder-like card swiping:** Allow users to swipe left or right to like or dislike items.
-- **Image carousels or galleries:** Let users browse through content one item at a time by swiping.
-- **Onboarding screens:** Present introduction screens that can be swiped sequentially.
-- **Content exploration:** Enable intuitive navigation through items like articles or products.
-
-> **Note:** While a swipeable stack offers interactive UX, ensure it aligns with your design goals and performs well, especially on low-end devices.
-
-## Required Widgets
-
-- **SwipeableStack Widget**
-
-## User Interaction
-
-- **Control SwipeableStack View** (via actions)
-
----
-
-## Steps to Implement
-
-### Step 1: Add a SwipeableStack Widget
-
-Place the **SwipeableStack** widget onto your canvas or screen.
-
-
-
----
-
-### Step 2: Set an Action on Page Load
-
-Assign an action to the `Scaffold` on the **Page Load** event.
-
-
-
----
-
-### Step 3: Define the Control Action
-
-In the **Define Actions** panel, choose **Control Swipeable Stack**.
-
-
-
----
-
-### Step 4: Choose the Swipe Trigger Type
-
-Select one of the following trigger options:
-
-1. **Trigger Left Swipe** – Initiates swipe to the left
-2. **Trigger Right Swipe** – Initiates swipe to the right
-3. **Trigger Up Swipe** – Initiates swipe upwards
-4. **Trigger Down Swipe** – Initiates swipe downwards
-
-
-
-Once selected, the widget will respond using the configured swipe trigger.
-
----
-
-## Need Help?
-
-If you have any questions, feel free to contact support via chat or email at [support@flutterflow.io](mailto:support@flutterflow.io).
diff --git a/docs/testing-deployment-publishing/branching-collaboration/ manage_code_edits_with_flutterflow_github_sync.md b/docs/testing-deployment-publishing/branching-collaboration/ manage_code_edits_with_flutterflow_github_sync.md
deleted file mode 100644
index ca0d19a8..00000000
--- a/docs/testing-deployment-publishing/branching-collaboration/ manage_code_edits_with_flutterflow_github_sync.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-keywords: ['made', 'edits', 'them']
-slug: manage-code-edits-with-flutterflow-github-sync
-title: Manage Code Edits with FlutterFlow GitHub Sync
----
-
-# Manage Code Edits with FlutterFlow GitHub Sync
-
-When syncing your project to GitHub, FlutterFlow always pushes changes to a branch called `flutterflow`. To prevent your manual edits from being overwritten, avoid modifying this branch directly.
-
----
-
-## Recommended Workflow
-
-1. **Push from FlutterFlow to GitHub**
- - FlutterFlow commits code to the `flutterflow` branch.
-
-2. **Create a Working Branch**
- - Merge the `flutterflow` branch into a separate branch (e.g., `main`).
- - Perform local modifications in this working branch.
-
-3. **Preserve Custom Changes**
- - On future pushes, FlutterFlow updates the `flutterflow` branch.
- - Manually merge `flutterflow` into `main` to keep or discard specific changes.
-
-This strategy ensures that local customizations remain safe while benefiting from updates pushed by FlutterFlow.
-
diff --git a/docs/testing-deployment-publishing/branching-collaboration/Project in useEnable Realtime Collaboration.md b/docs/testing-deployment-publishing/branching-collaboration/Project in useEnable Realtime Collaboration.md
deleted file mode 100644
index 21ed1ec1..00000000
--- a/docs/testing-deployment-publishing/branching-collaboration/Project in useEnable Realtime Collaboration.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-keywords: ['firebase', 'android', 'package']
-slug: /firebase-config-package-name-mismatch
-title: Fix Firebase Config Package Name Mismatch for Android
----
-
-# Fix Firebase Config Package Name Mismatch for Android
-
-This error occurs when the **package name in your Firebase configuration file does not match** the package name defined in your FlutterFlow project.
-
-> 💡 This is a common issue when the package name is changed in FlutterFlow but the Firebase config files are not updated accordingly.
-
-## Cause
-
-Firebase uses the **package name** to identify your Android app. If there is a mismatch between the package name in your FlutterFlow project and the one used to generate the Firebase config (`google-services.json`), Firebase integration will fail.
-
-## Resolution Steps
-
-### 1. Open Firebase Settings in FlutterFlow
-
-- In your FlutterFlow project, navigate to:
- - **Settings > Firebase**
-
-> 
-
-### 2. Regenerate Firebase Config Files
-
-- Click on **Regenerate Config Files**
-- Enter the correct package name that matches your FlutterFlow project
-- Click **Generate File**
-
-> 
-
-### 3. Re-Test Firebase Integration
-
-- Download the new `google-services.json` file if needed
-- Deploy or run the app again to verify the error is resolved
-
----
-
-By ensuring the package names match exactly between FlutterFlow and Firebase—including capitalization and formatting—you can resolve this configuration error and restore Firebase functionality.
diff --git a/docs/troubleshooting/ github/manage-code-edits-without-overwrites-when-using-github.md b/docs/troubleshooting/ github/manage-code-edits-without-overwrites-when-using-github.md
new file mode 100644
index 00000000..e2dac4fb
--- /dev/null
+++ b/docs/troubleshooting/ github/manage-code-edits-without-overwrites-when-using-github.md
@@ -0,0 +1,50 @@
+---
+keywords: ['code', 'edits', 'github', 'branches']
+slug: troubleshooting/github/manage-code-edits-without-overwrites-when-using-github
+title: Manage Code Edits Without Overwrites When Using GitHub
+---
+
+# Manage Code Edits Without Overwrites When Using GitHub
+
+When working with GitHub integration in FlutterFlow, it’s important to understand how FlutterFlow manages branches to prevent your custom code edits from being overwritten.
+
+:::info[Prerequisites]
+- A FlutterFlow project linked to a GitHub repository.
+- Basic understanding of Git branches and merge workflows.
+:::
+
+FlutterFlow pushes updates only to the `flutterflow` branch of your GitHub repository. You **should not** make local changes directly to this branch, as they will be **overwritten** every time the project syncs from FlutterFlow.
+
+Follow the steps below to safely make and retain local code changes:
+
+1. **Push from FlutterFlow to GitHub**
+ This sends the latest generated code to the `flutterflow` branch.
+
+2. **Create a New Branch for Local Edits**
+ Checkout a separate branch (e.g., `main`) and copy the code from the `flutterflow` branch into it.
+
+ ```bash
+ git checkout -b main
+ git merge flutterflow
+ ```
+
+3. **Make Changes on Your Custom Branch**
+ Apply any local modifications on the custom branch (not on flutterflow).
+
+4. **Push Again From FlutterFlow When Needed**
+ When you push new changes from FlutterFlow, it will update the flutterflow branch. Your custom branch will remain unchanged.
+
+5. **Merge and Resolve Conflicts**
+ After FlutterFlow updates the flutterflow branch, merge it into your custom branch and resolve any conflicts:
+
+ ```js
+ git checkout main
+ ```
+ ```js
+ git merge flutterflow
+ ```
+ This allows you to selectively retain or discard changes as needed.
+
+:::warning
+Do not make direct changes to the flutterflow branch, as any future push from FlutterFlow will overwrite it.
+:::
\ No newline at end of file
diff --git a/docs/troubleshooting/api/How To Resolve 404 API Call Errors.md b/docs/troubleshooting/api/How To Resolve 404 API Call Errors.md
deleted file mode 100644
index 3f6c263e..00000000
--- a/docs/troubleshooting/api/How To Resolve 404 API Call Errors.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Resolving 404 API Call Errors
-slug: /resolving-404-api-call-errors
-keywords: ['api', 'call', 'errors']
----
-
-# Resolving 404 API Call Errors
-
-Standard API status codes are returned when unsuccessful API calls are made in FlutterFlow. One of the most common errors is the **404 (Resource Not Found)** status code. Here's how to understand and resolve it.
-
-## Understanding the 404 Error
-
-The `404` error means that the requested resource could not be found on the server. This is typically due to:
-
-- An incorrect endpoint URL.
-- A missing resource ID or parameter in the request.
-- Backend service not deployed or incorrectly configured.
-
-
-
-## How to Resolve It
-
-1. **Verify the API URL**
- Double-check that the base URL and endpoint path are correct. Typos or incorrect paths will result in a 404.
-
-2. **Check Request Parameters**
- Ensure that any required query parameters, path variables, or headers are included and properly formatted.
-
-3. **Validate API Key and Authentication**
- Some APIs return a 404 if authentication is missing or incorrect to prevent information leakage.
-
-4. **Ensure the Resource Exists**
- If your call is trying to fetch or modify a specific item, make sure that the resource actually exists in the backend.
-
-5. **Test Outside FlutterFlow**
- Use tools like Postman or curl to test the endpoint directly and confirm that the backend is returning the expected data.
-
-6. **Consult API Documentation**
- Review the API docs to ensure you're using the endpoint correctly, including the HTTP method (GET, POST, etc.).
-
-## Summary
-
-The 404 error is a common but fixable issue when working with APIs in FlutterFlow. By validating URLs, checking resource existence, and ensuring proper parameters, you can quickly debug and resolve these errors.
-
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..c6eac2ed 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,9 +42,30 @@ 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.
+ :::

diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/App Store Deploy Button Not Working when Clicked.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/App Store Deploy Button Not Working when Clicked.md
deleted file mode 100644
index 90c20497..00000000
--- a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/App Store Deploy Button Not Working when Clicked.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# App Store Deploy Button Not Working
-
----
-
-**Problem:**
-When attempting to deploy your application to the App Store, the deploy button may become unresponsive. If you inspect the browser's console, you might see the following error:
-
-```text
-POST https://api.flutterflow.io/v1/codemagicBuildRequest 503
-```
-
----
-
-## Why Does This Happen?
-This error typically occurs when your project contains very large assets (such as videos or large images). If the total project size exceeds the recommended limit, the deployment request is rejected by Codemagic.
-
-- **Recommended project size:** 50 MB or less
-
----
-
-## How to Fix
-1. **Remove Large Assets:**
- - Identify and remove large files (especially videos or high-resolution images) from your project assets.
- - Instead, host these files externally (e.g., on a CDN or cloud storage) and access them via network URLs.
-2. **Check Project Size:**
- - Ensure your project remains under the 50 MB limit.
-
----
-
-## Still Not Working?
-If you have reduced your project size and the issue persists, please contact FlutterFlow support via [Chat](https://flutterflow.io/support) or email: [support@flutterflow.io](mailto:support@flutterflow.io).
\ No newline at end of file
diff --git "a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/ITMS-90683 Missing purpose string in Info.plist - The Info.plist file for the \342\200\234Runner.app\342\200\235 bundle should contain a NSPhotoLibraryUsageDescription key.md" "b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/ITMS-90683 Missing purpose string in Info.plist - The Info.plist file for the \342\200\234Runner.app\342\200\235 bundle should contain a NSPhotoLibraryUsageDescription key.md"
deleted file mode 100644
index 192b1562..00000000
--- "a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/ITMS-90683 Missing purpose string in Info.plist - The Info.plist file for the \342\200\234Runner.app\342\200\235 bundle should contain a NSPhotoLibraryUsageDescription key.md"
+++ /dev/null
@@ -1,57 +0,0 @@
----
-keywords: ['error', 'runner', 'purpose']
-slug: /itms-90683-missing-purpose-string-in-info-plist-the-info-plist-file-for-the-runner-app-bundle-should-contain-a-nsphotolibraryusagedescription-key
-title: 'ITMS-90683: Missing Purpose String in Info.plist – NSPhotoLibraryUsageDescription Required'
----
-
-# ITMS-90683: Missing Purpose String in Info.plist – NSPhotoLibraryUsageDescription Required
-
-## Full Error Message
-
-```text
-Dear Developer,
-We identified one or more issues with a recent delivery for your app, "Gral Wind Orchestra App" 1.0.1 (1). Please correct the following issues, then upload again.
-
-ITMS-90683: Missing purpose string in Info.plist - Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “Runner.app” bundle should contain a NSPhotoLibraryUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. If your app supports multiple locales, you’re now required to provide a purpose string value in the Info.plist file in addition to a valid localized string across each of your app’s localization folders. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required.
-```
-
-
-For details, visit: [Apple Developer Docs](https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources)
-
----
-
-## Background
-
-This error indicates that your app references APIs that access **sensitive user data**, such as the **Photo Library**, but your `Info.plist` does not contain a proper purpose string (specifically, the `NSPhotoLibraryUsageDescription` key).
-
-Apple requires this description to explain to users why the app is requesting access.
-
----
-
-## How to Fix the Issue
-
-1. Open your project in **FlutterFlow**
-2. Go to **Settings & Integrations**
-3. Under **Project Setup**, select **Permissions**
-4. Find the **Photo Library** permission
-5. Add a clear, user-friendly description
- _Example: "We need access to your photo library so you can upload and edit images inside the app."_
-
----
-
-
-
-
----
-
-## Still Not Working?
-
-If you've added the usage description and the error still persists:
-
-- Double-check that you've saved the changes
-- Make sure you're submitting the updated build to the App Store
-- If the issue continues, **contact FlutterFlow Support** via [chat](https://flutterflow.io) or email: support@flutterflow.io
-
----
-
-By properly adding usage descriptions for all sensitive data access, you ensure compliance with App Store guidelines and build trust with your users.
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions.md
deleted file mode 100644
index ae086b26..00000000
--- a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-keywords: ['release', 'build', 'deployment']
-slug: /invalid-pre-release-train-the-train-version-x-x-x-is-closed-for-new-build-submissions
-title: Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions
----
-
-# Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions
-
-If you're submitting a build to the App Store and receive this error, it means that the version you're trying to submit is already closed for new builds. Even if the build number is different, the same app version can't be resubmitted.
-
----
-
-## What Does This Error Mean?
-
-> **Error Message:**
-> _"Invalid Pre-Release Train. The train version 'X.X.X' is closed for new build submissions."_
-
-This means you cannot submit another build using the same version number. Apple requires each new submission to have a unique app version once the current one is closed for submissions.
-
----
-
-## How to Resolve the Issue
-
-You'll need to **increment the app version** in your FlutterFlow deployment settings.
-
-### Steps:
-
-1. Press **Cmd/Ctrl + K**, type **“deployment”**, and hit enter.
- This will open the Deployment page.
-
- 
-
-2. Alternatively, navigate via:
- **Project Settings > Deployment** (under **App Settings**).
-
- 
-
-3. Click the **expand icon** in front of the **Version** section.
-
- 
-
-4. Update the version number.
- For example, change from `1.2.0` to `1.2.1`.
-
- 
-
-Once the version is incremented, try deploying your app again — it should succeed.
-
----
-
-## When to Increment the App Version Number
-
-Use a versioning scheme that works for your team, but **Semantic Versioning** is a widely accepted method:
-
-**Format:** `Major.Minor.Build`
-
-### Breakdown:
-
-- **Major (`1.x.x`)**: Breaking changes or significant revisions.
-- **Minor (`x.1.x`)**: New features or significant, non-breaking updates.
-- **Build (`x.x.1`)**: Bug fixes or small enhancements.
-
-> Example:
-> - `1.2.0` → Add new features (minor)
-> - `1.2.1` → Fix bugs or small patches (build)
-
----
-
-Following these steps will help you avoid version conflicts and ensure a smooth deployment to the App Store.
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning Profile Doesn't Support Push Notifications.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning Profile Doesn't Support Push Notifications.md
deleted file mode 100644
index a5a8cc0d..00000000
--- a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning Profile Doesn't Support Push Notifications.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-keywords: ['push', 'notifications', 'support']
-slug: /provisioning-profile-doesn-t-support-push-notifications
-title: Provisioning Profile Doesn't Support Push Notifications
----
-
-# Provisioning Profile Doesn't Support Push Notifications
-
-This article outlines the troubleshooting steps when encountering issues with push notifications during app deployment. If you're unsure how to enable push notifications in your app identifier via Apple Developer, refer to the step-by-step guide in our documentation.
-
-## Issue Overview
-
-When deploying an app through FlutterFlow to the Apple App Store, developers may encounter this error:
-
-> **Provisioning profile doesn't support the Push Notifications capability**
-
-This occurs when the **Push Notifications** capability hasn't been enabled for your App ID in your Apple Developer account.
-
-## Full Error Message
-
-```text
-Provisioning profile doesn't support the Push Notifications capability.
-```
-
-
-## Common Causes
-
-This error arises when the provisioning profile for your app is missing the necessary push notification entitlements. Push Notifications require **explicit configuration** within your Apple Developer account to function correctly.
-
-## Resolution Steps
-
-### 1. Enable Push Notifications in Apple Developer Account
-
-Follow these steps to configure your App ID properly:
-
-#### Visit Your Apple Developer Account
-
-- Go to the [Apple Developer Console](https://developer.apple.com/account/)
-- Navigate to **Certificates, Identifiers & Profiles**
-- Select **Identifiers**
-
-
-
-#### Select Your App Identifier
-
-- Locate the App ID for your project.
-- Click it to open the identifier details.
-
-#### Enable the Capability
-
-- Scroll down to the **Capabilities** section.
-- Check **Push Notifications**
-
-> No need to generate a new App ID or modify other keys.
-
-
-
-#### Save Changes
-
-- Click **Save** to apply the configuration.
-
-#### Deploy via FlutterFlow
-
-- Return to FlutterFlow and deploy your app again.
-- The updated provisioning profile will now include Push Notifications.
-
-## Summary
-
-By enabling **Push Notifications** in your App ID configuration, you ensure the provisioning profile supports this feature and avoid deployment errors. This is a one-time setup per App ID.
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning profile [app store project ID] doesn't support the Associated Domains capability..md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning profile [app store project ID] doesn't support the Associated Domains capability..md
deleted file mode 100644
index 67617ef1..00000000
--- a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Provisioning profile [app store project ID] doesn't support the Associated Domains capability..md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-keywords: ['error', 'store', 'provisioning']
-slug: /provisioning-profile-app-store-project-id-doesn-t-support-the-associated-domains-capability
-title: Provisioning profile [App Store project ID] doesn't support the Associated Domains capability.
----
-
-# Provisioning Profile [App Store Project ID] Doesn't Support the Associated Domains Capability
-
-When deploying an app through FlutterFlow to the Apple App Store, you might encounter the following error:
-
-> **Provisioning profile [App Store project ID] doesn't support the Associated Domains capability**
-
-This issue typically affects apps using features like **Universal Links**, **App Clips**, or **Firebase Dynamic Links**, which require the **Associated Domains** capability.
-
-## Cause
-
-The error occurs when the **Associated Domains** capability is not enabled for your app's App ID in the Apple Developer portal. This is required to verify domain ownership and enable app-to-site interactions.
-
-> 💡 **Example**: You will see this error when using **dynamic links** in your FlutterFlow project.
-
-## Resolution Steps
-
-### 1. Log Into Apple Developer Account
-
-- Go to the [Apple Developer Console](https://developer.apple.com/account/)
-- Navigate to **Certificates, Identifiers & Profiles**
-- Click **Identifiers**
-
-
-
-### 2. Select Your App Identifier
-
-- Find the App ID for your app.
-- Click it to open its configuration.
-
-### 3. Enable Associated Domains Capability
-
-- In the capabilities list, enable **Associated Domains**
-- No need to create a new key or change the App ID.
-
-
-
-### 4. Save Changes
-
-- Click **Save** to apply the update.
-- This is usually sufficient for the initial setup.
-
-### 5. Redeploy From FlutterFlow
-
-- Go back to FlutterFlow and redeploy your app.
-- The updated provisioning profile will now support Associated Domains.
-
-## Verify Developer Account Subscription
-
-### What Does This Error Really Mean?
-
-This error can also appear if your Apple Developer account is **not on a paid plan**. The **Associated Domains** capability requires an **active paid Apple Developer subscription**.
-
-
-
-### How to Check Your Subscription
-
-- Sign in to the [Apple Developer Console](https://developer.apple.com/account/)
-- Your subscription status will be visible on the dashboard.
- - Active accounts show as **Current**
- - If it’s expiring, you’ll see an **Expiration Date**
-
-> 🔧 Still need help? Reach out to Apple Developer Support at [devsupport@apple.com](mailto:devsupport@apple.com)
-
----
-
-By following these steps, you can resolve the provisioning profile error and ensure your app supports domain-related features like universal links and dynamic links.
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Signing for ImageNotification requires a development team - Flutterflow and Local builds.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Signing for ImageNotification requires a development team - Flutterflow and Local builds.md
deleted file mode 100644
index eb175059..00000000
--- a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/Signing for ImageNotification requires a development team - Flutterflow and Local builds.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-keywords: ['signing', 'ios', 'error']
-slug: /fix-ios-signing-imagenotification
-title: Fix iOS Signing for ImageNotification
----
-
-# Fix iOS Signing for ImageNotification
-
-:::tip
-Not sure which error your project has? Refer to the [Codemagic Error Identification Guide](/deployment/codemagic-error-types) to better understand the issue.
-:::
-
-## Introduction
-
-When configuring the `ImageNotification` capability in an iOS application, build failures can occur due to missing signing credentials. This typically happens when the development team is not correctly set in Xcode or in the FlutterFlow iOS deployment settings.
-
-Proper signing is required to ensure that the application can run on real devices or be submitted to the App Store.
-
-## Error Message
-
-```plaintext
-Signing for "ImageNotification" requires a development team
-```
-
-:::info[Prerequisites]
-- An active Apple Developer Program membership.
-- Access to a Mac with Xcode installed.
-- A configured FlutterFlow project targeting iOS.
-:::
-
-## Steps to Resolve
-
-1. **Open the Project in Xcode**
- - Navigate to the `ios/Runner.xcworkspace` file inside your Flutter project.
- - Open it with Xcode.
-
-2. **Set the Development Team**
- - Go to the **Signing & Capabilities** tab.
- - Under **Team**, select your Apple Developer account.
- - If you don’t see your team, make sure you are logged into Xcode with the correct Apple ID.
-
-3. **Check Provisioning Profiles**
- - Under **Provisioning Profile**, select **Automatic** or use a manually downloaded profile from the [Apple Developer Portal](https://developer.apple.com/account/resources/profiles/list).
-
-4. **Configure iOS Deployment in FlutterFlow**
- - Go to **Settings > iOS Deployment** in FlutterFlow.
- - Add your **Apple Team ID**.
- - Ensure all required fields such as **Bundle Identifier**, **iOS App ID**, and **Team Name** are filled in.
-
-5. **Clean and Rebuild**
- - In Xcode, go to **Product > Clean Build Folder**.
- - Then rebuild the app using **Product > Build**.
-
-## Notes
-
-:::warning
-If your Flutter SDK version in VS Code does not match the version used in FlutterFlow, builds may fail with unrelated errors.
-:::
diff --git a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/apple-store-deployment/fix-app-store-bundle-version-error.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/apple-store-deployment/fix-app-store-bundle-version-error.md
new file mode 100644
index 00000000..e4545c1f
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/apple-store-deployment/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/apple-store-deployment/provisioning-profile-error-associated-domains.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/apple-store-deployment/provisioning-profile-error-associated-domains.md
new file mode 100644
index 00000000..f118990e
--- /dev/null
+++ b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/apple-store-deployment/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/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..0e392228
--- /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: /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..8183db5e
--- /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: /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_sign_in_with_apple.md b/docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning_profile_sign_in_with_apple.md
deleted file mode 100644
index 7ca3a0ce..00000000
--- a/docs/troubleshooting/apple-store-deployment/fetch-signing-files/provisioning_profile_sign_in_with_apple.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-keywords: ['where', 'sign', 'provisioning']
-slug: provisioning-profile-sign-in-with-apple
-title: Fix Provisioning Profile Error for 'Sign in with Apple'
----
-
-# Fix Provisioning Profile Error for 'Sign in with Apple'
-
-When submitting an iOS app to the App Store using FlutterFlow, you may encounter the following error:
-
-> **Provisioning profile doesn't support the Sign in with Apple capability**
-
-This issue arises when your app uses Apple Sign-In, but your Apple Developer account has not properly configured this capability for your app's identifier.
-
-## Cause
-
-The "Sign in with Apple" feature **requires explicit enablement** in your Apple Developer account. If this is not configured, the provisioning profile generated will not include the necessary entitlements, and the build will fail.
-
-## Solution
-
-Follow these steps to enable the **Sign in with Apple** capability:
-
-### 1. Log into Apple Developer Account
-
-- Visit the [Apple Developer Console](https://developer.apple.com/account/)
-- Navigate to **Certificates, Identifiers & Profiles**
-- Click **Identifiers**
-
-
-
-### 2. Select Your App Identifier
-
-- Find the App ID for your application.
-- Click on it to edit its configuration.
-
-### 3. Enable "Sign in with Apple" Capability
-
-- Scroll to the **Capabilities** section.
-- Enable **Sign in with Apple**
-- You do **not** need to create a new key or App ID.
-
-
-
-### 4. Save Changes
-
-- Click **Save** to apply the changes.
-- You do **not** need to modify other fields.
-
-### 5. Re-deploy via FlutterFlow
-
-Return to FlutterFlow and redeploy your app after enabling the capability.
-
-## Still Having Trouble?
-
-If you're still facing issues—or if your app does **not** use Apple Sign-In but the error persists:
-
-- Contact FlutterFlow Support via **Live Chat** or email at [support@flutterflow.io](mailto:support@flutterflow.io)
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..d1830026
--- /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..129feebc
--- /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
index 32cec90c..e2b8c96e 100644
--- a/docs/troubleshooting/apple-store-deployment/publishing/custom_domain_connection_error.md
+++ b/docs/troubleshooting/apple-store-deployment/publishing/custom_domain_connection_error.md
@@ -1,47 +1,92 @@
---
-keywords: ['configuration', 'connect', 'domain']
-slug: /troubleshooting/apple-store-deployment-issues/custom-domain-connection-error
-title: Custom Domain Connection Error
+keywords: ['custom domain', 'dns', 'connection error']
+slug: /fix-custom-domain-connection-error
+title: Fix Custom Domain Connection Error
---
-# Custom Domain Connection Error
+# Fix Custom Domain Connection Errors
-If you encounter the error shown below after clicking **Connect**, follow these steps to resolve it:
-
-
+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).
:::
-**Steps to Resolve the Error:**
+## 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 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.
+ - 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
- For A records, if your DNS provider requires a name, you can use `"@"`. When you see an empty value, it typically refers to `"@"`.
- :::
+ :::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**
- - 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.
+ - 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 removing any existing DNS records, take screenshots and save them for reference.
- :::
+ :::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.
- Below are examples of correct configurations in FlutterFlow and your DNS provider:
+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:
- By following these steps, you can ensure your custom domain is connected correctly.
+ - 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/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/authentication/Google Phone Authentication Not Working on Real Devices APK Downloaded from Flutterflow, SHA1 Key Error.md b/docs/troubleshooting/authentication/Google Phone Authentication Not Working on Real Devices APK Downloaded from Flutterflow, SHA1 Key Error.md
deleted file mode 100644
index 579645e1..00000000
--- a/docs/troubleshooting/authentication/Google Phone Authentication Not Working on Real Devices APK Downloaded from Flutterflow, SHA1 Key Error.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: Fix SHA-1 Key Issues for Google and Phone Auth on Real Devices
-slug: /fix-google-phone-auth-sha1-error
-keywords: ['authentication', 'error', 'real']
----
-
-# Fix SHA-1 Key Issues for Google and Phone Auth on Real Devices
-
-If you're having issues with Google Sign-In or Phone Authentication on real devices after downloading the APK from FlutterFlow, it's likely due to missing or incorrect SHA-1 and SHA-256 keys in your Firebase project.
-
----
-
-## Problem Overview
-
-When you download the APK directly from FlutterFlow (via the source code menu), the necessary SHA-1 and SHA-256 keys may not be auto-generated or included. Without these keys, Firebase cannot authenticate users via social logins or phone number sign-ins.
-
----
-
-## How to Fix It
-
-### Step 1: Download Your APK
-
-1. Go to your FlutterFlow project.
-2. Navigate to the **Source Code** menu.
-3. Download the APK file to your local machine.
-
----
-
-### Step 2: Generate SHA-1 and SHA-256 Keys
-
-1. Open a terminal or command prompt.
-2. Navigate to the folder containing your APK file.
-3. Run the following command:
-
-```bash
-keytool -printcert -jarfile app.apk
-```
-
-This will output the SHA-1 and SHA-256 fingerprints needed for Firebase.
-
-### Step 3: Add Keys to Your Firebase Project
-
-1. Go to the [Firebase Console](https://console.firebase.google.com).
-2. Select your project from the dashboard.
-3. Click the **gear icon** next to **Project Overview** and select **Project settings**.
-4. In the **General** tab, scroll down to the **Your apps** section and click your **Android app**.
-5. Find the **SHA certificate fingerprints** section.
-6. Paste both the **SHA-1** and **SHA-256** keys into their respective fields.
-7. Click **Save** to apply the changes.
-
-> ✅ Once the keys are added, Firebase authentication using Google or Phone Sign-In should work correctly on real devices using the downloaded APK.
diff --git a/docs/troubleshooting/authentication/Google Sign-In Doesn't Work In RunTest Mode And Published Web application on web.md b/docs/troubleshooting/authentication/Google Sign-In Doesn't Work In RunTest Mode And Published Web application on web.md
deleted file mode 100644
index ba95f38d..00000000
--- a/docs/troubleshooting/authentication/Google Sign-In Doesn't Work In RunTest Mode And Published Web application on web.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: Enable Google Sign-In for Run Mode and Published Web Apps
-slug: /enable-google-sign-in-run-test-published-web
-keywords: ['application', 'mode', 'sign']
----
-
-# Enable Google Sign-In for Run Mode and Published Web Apps
-
-If you're using social login features like **Google Sign-In**, **Facebook**, or **Microsoft**, and they’re not working in **Run/Test Mode** or on your **published web application**, you likely need to update your Firebase Authentication settings.
-
-To enable social login in these environments, you must **add your app domain to Firebase Authentication's Authorized Domains list**.
-
----
-
-## Why This Is Required
-
-Adding your domain to Firebase Authentication:
-- Whitelists your app's domain
-- Allows social login to work from that domain as a valid origin
-- Prevents authentication errors caused by unverified origins
-
----
-
-## How to Add Authorized Domains in Firebase
-
-1. Open your [Firebase Console](https://console.firebase.google.com).
-2. Select your project.
-3. Navigate to **Authentication > Settings**.
-4. Go to the **Authorized Domains** section.
-5. Click **Add Domain** and enter the domain you want to authorize.
-
----
-
-## Domains to Whitelist
-
-Depending on where your app is running, add the following:
-
-- For FlutterFlow **Run Mode**:
- `app.flutterflow.io`
-
-- For a **Published Web App** (e.g., your custom subdomain):
- `yourapp.flutterflow.app`
-
-- For **Test Mode**:
- Add the **debug session URL** from the Known Issues panel (copy the exact URL listed there).
-
----
-
-
-
----
-
-## Debug Tip
-
-In **Test Mode**, social login won’t work unless the debug session domain is also added to Firebase. You can find and copy this domain from the **Known Issues** menu.
-
-
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/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/google_signin_not_working_run_test_web.md b/docs/troubleshooting/authentication/google_signin_not_working_run_test_web.md
deleted file mode 100644
index 54c10c1b..00000000
--- a/docs/troubleshooting/authentication/google_signin_not_working_run_test_web.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-keywords: ['google', 'work', 'login']
-slug: google-signin-not-working-run-test-web
-title: Fix Google Sign-In Not Working in Run/Test Mode or Web
-tag: google_signin_run_test_web
----
-
-# Fix Google Sign-In Not Working in Run/Test Mode or Web
-
-If you're using social login features like **Google Sign-In**, **Facebook**, or **Microsoft login** in FlutterFlow and they are not working in **Run**, **Test**, or **Web** mode, the issue is likely due to missing authorized domains in Firebase Authentication.
-
-To enable these login methods, you need to **whitelist your domain** in Firebase.
-
-## Cause
-
-Social logins won't function in web or test modes unless your app’s domain is explicitly listed in Firebase's **Authorized Domains**. Without this, Firebase blocks authentication requests coming from unrecognized sources.
-
-## Solution
-
-Follow these steps to add your domain to Firebase:
-
-### 1. Open Firebase Console
-
-- Go to [Firebase Console](https://console.firebase.google.com/)
-- Select your project
-
-### 2. Navigate to Authentication Settings
-
-- Go to **Authentication** → **Settings** → **Authorized Domains**
-
-### 3. Add Your Domain
-
-- Click **Add Domain**
-- Add the domain where your app runs in Run/Test/Web mode
- - For **Run mode** in FlutterFlow: `app.flutterflow.io`
- - For **published web app**: `yourapp.flutterflow.app`
-
-
-
-## Example
-
-If your app is live at: https://mytestproject.flutterflow.app
-
-Then add: mytestproject.flutterflow.app
-
-
-to the list of Authorized Domains.
-
-## Summary
-
-Adding the correct domains ensures Firebase recognizes them as trusted sources, allowing social login methods to function properly across web, run, and test environments.
-
-For more details, see [Firebase Authentication Documentation](https://firebase.google.com/docs/auth/web/hosting-resolver).
-
-
-
-
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..07eaec84
--- /dev/null
+++ b/docs/troubleshooting/authentication/resolve-firebase-sign-in-email-configuration.md
@@ -0,0 +1,31 @@
+---
+keywords: ['firebase', 'configuration', 'troubleshooting']
+slug: /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/I can't upload an image in the app via the image upload action..md b/docs/troubleshooting/backend/I can't upload an image in the app via the image upload action..md
deleted file mode 100644
index 49b4b985..00000000
--- a/docs/troubleshooting/backend/I can't upload an image in the app via the image upload action..md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-keywords: ['storage', 'upload', 'image']
-slug: image-upload-fails-due-to-firebase-storage-rules
-title: Image Upload Fails Due to Firebase Storage Rules
----
-
-# Image Upload Fails Due to Firebase Storage Rules
-
-This issue commonly occurs due to a misconfiguration in Firebase Storage rules. It can be resolved by updating those rules properly.
-
-## How to Fix
-
-1. Go to the **Storage** section in your Firebase project.
-2. Click on the **Rules** tab.
-
- 
-
-3. Replace the current rules with the following:
- ```js
- rules_version = '2';
- service firebase.storage {
- match /b/{bucket}/o {
- match /{allPaths=**} {
- allow read, write: if request.auth != null;
- }
- }
- }
-```
-
-
-
-
-
-This change should fix the issue with media uploads in your application.
-
-⚠️ If the problem persists, try re-uploading all previously uploaded images from within the app.
\ No newline at end of file
diff --git "a/docs/troubleshooting/backend/RevenueCat for Subscription and One-Time Payments in FlutterFlow \342\200\223 PayWall.md" "b/docs/troubleshooting/backend/RevenueCat for Subscription and One-Time Payments in FlutterFlow \342\200\223 PayWall.md"
deleted file mode 100644
index cfd5de37..00000000
--- "a/docs/troubleshooting/backend/RevenueCat for Subscription and One-Time Payments in FlutterFlow \342\200\223 PayWall.md"
+++ /dev/null
@@ -1,90 +0,0 @@
----
-keywords: ['subscription', 'paywall', 'revenuecat']
-slug: /revenuecat-for-subscription-and-one-time-payments-in-flutterflow-paywall
-title: RevenueCat for Subscription and One-Time Payments in FlutterFlow – PayWall
----
-
-# RevenueCat for Subscription and One-Time Payments in FlutterFlow – PayWall
-
-In-app purchases and subscriptions represent a major revenue opportunity for mobile apps. RevenueCat simplifies the management of these monetization models, especially when integrated with FlutterFlow. This guide explains how to implement paywalls for both subscription and one-time payments, using RevenueCat and FlutterFlow.
-
-## Understanding RevenueCat's Role
-
-RevenueCat acts as a middle layer between your app and the app stores (Google Play and Apple App Store), handling in-app subscriptions and purchases. It abstracts store-specific APIs and provides a unified interface to manage receipts, subscriptions, and user purchases.
-
-## Preparing the App
-
-Before integrating RevenueCat:
-
-- Ensure the app is deployed to both Google Play and Apple App Store.
-- Use **Settings > Integrations > Mobile Deployment** in FlutterFlow to configure deployments.
-- Define all subscription and one-time products in the stores before setting them up in RevenueCat.
-
-## Configuring Products in RevenueCat
-
-### Subscriptions
-
-Subscriptions in RevenueCat are auto-renewable products. Set each with:
-
-- A unique product ID
-- Duration and pricing
-- Tier-level options
-
-### One-Time Purchases
-
-Configure these as non-consumable products in RevenueCat:
-
-- Assign a unique identifier
-- Track and manage separately from subscriptions
-
-
-
-## Entitlements and Offerings
-
-**Entitlements** represent access to features or content. For example, an entitlement named `PremiumAccess` might unlock additional features for subscribed users.
-
-**Offerings** define the products available for purchase and link your UI to what is configured in RevenueCat.
-
-
-
-:::note
-If the user has purchased a one-time product (not a subscription), they still receive an entitlement. The paywall action evaluates both one-time and recurring entitlements equally.
-:::
-
-This makes it possible to allow purchases such as tokens to bypass the paywall via one-time entitlements.
-
-## Implementing the Paywall in FlutterFlow
-
-Create a paywall screen or modal that fetches RevenueCat offerings. Use the following actions:
-
-- **Check Subscription Status**
-- **Initiate Purchase**
-
-
-
-The **Paywall** action returns a boolean. Add a condition after the action:
-
-- If true: trigger content access
-- If false: prompt the user to subscribe (via modal or navigation)
-
-## Managing User Transactions
-
-Use the **Purchase** action in FlutterFlow to start a transaction.
-
-- RevenueCat communicates with the store
-- After purchase, user entitlements are updated
-
-To restore purchases:
-
-- Use **Restore Purchase** action
-- Allows access to purchases across devices or after reinstalling
-
-
-
-The **paymentId** (a string) is returned from the action. Always check:
-
-- If `paymentId` is not null → trigger post-payment actions
-
-## Summary
-
-Integrating RevenueCat with FlutterFlow enables robust handling of subscriptions and one-time payments. By correctly configuring products, entitlements, and offerings, and leveraging FlutterFlow’s paywall and purchase actions, you can provide a smooth user experience and maximize monetization.
diff --git a/docs/troubleshooting/backend/Share mediafiles in storage, 1 user upload all users see.md b/docs/troubleshooting/backend/Share mediafiles in storage, 1 user upload all users see.md
deleted file mode 100644
index 05188cf3..00000000
--- a/docs/troubleshooting/backend/Share mediafiles in storage, 1 user upload all users see.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-keywords: ['storage', 'users', 'upload']
-slug: share_mediafiles_1_user_upload_all_users_see
-title: Share Media/Files in Storage — 1 User Upload, All Users See
-tag: share_storage_upload_all_users
----
-
-# Share Media/Files in Storage — 1 User Upload, All Users See
-
-If a user uploads a file to Firebase Storage but other users can’t see it — even with the same parameters — the issue likely relates to **CORS (Cross-Origin Resource Sharing)** settings on your Firebase Storage bucket.
-
-This guide walks you through how to update the CORS policy so media and files uploaded by one user are accessible by others.
-
-## Problem
-
-Media or files uploaded to Firebase Storage by one user aren’t visible to other users, even though the correct parameters are used in your app.
-
-## Solution
-
-You’ll need to set a public CORS policy on your Firebase Storage bucket using the Google Cloud CLI.
-
-### 1. Install `gsutil`
-
-Follow Google’s guide to install `gsutil`:
-
-👉 [Install gsutil](https://cloud.google.com/storage/docs/gsutil_install)
-
-### 2. Create a `cors.json` file
-
-Save the following JSON content in your project directory as `cors.json`:
-
-```json
-[
- {
- "origin": ["*"],
- "method": ["GET"],
- "maxAgeSeconds": 3600
- }
-]
-```
-
-3. Apply the CORS configuration
- Run the following command in your terminal to set the CORS policy for your Firebase Storage bucket:
-
- ```js
- gsutil cors set cors.json gs://exampleproject.appspot.com
- ```
-
- Replace exampleproject.appspot.com with your actual Firebase project bucket name.
-
- After updating the CORS settings, any file uploaded by one user should now be visible to all users with access, assuming they’re using the same query logic and paths.
\ No newline at end of file
diff --git a/docs/troubleshooting/backend/fix-image-upload-failure-from-action.md b/docs/troubleshooting/backend/fix-image-upload-failure-from-action.md
new file mode 100644
index 00000000..a9a021f2
--- /dev/null
+++ b/docs/troubleshooting/backend/fix-image-upload-failure-from-action.md
@@ -0,0 +1,50 @@
+---
+keywords: ['storage', 'upload', 'image']
+slug: troubleshooting/backend/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/backend/share-media-files-across-users.md b/docs/troubleshooting/backend/share-media-files-across-users.md
new file mode 100644
index 00000000..eecbe538
--- /dev/null
+++ b/docs/troubleshooting/backend/share-media-files-across-users.md
@@ -0,0 +1,46 @@
+---
+keywords: ['storage', 'users', 'upload']
+slug: troubleshooting/backend/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/backend/stripe-payment-error-cors-region-mismatch.md b/docs/troubleshooting/backend/stripe-payment-error-cors-region-mismatch.md
new file mode 100644
index 00000000..61790c6a
--- /dev/null
+++ b/docs/troubleshooting/backend/stripe-payment-error-cors-region-mismatch.md
@@ -0,0 +1,40 @@
+---
+keywords: ['error', 'firebase', 'unknown']
+slug: troubleshooting/backend/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/backend/stripe_payment_unknown_error.md b/docs/troubleshooting/backend/stripe_payment_unknown_error.md
deleted file mode 100644
index 10744ef1..00000000
--- a/docs/troubleshooting/backend/stripe_payment_unknown_error.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-keywords: ['error', 'firebase', 'stripe', 'cors']
-slug: stripe-payment-unknown-error
-title: Stripe Payment Unknown Error
----
-
-# Fix "Stripe Payment Action Error: Unknown Error Occurred"
-
-When integrating Stripe payments in your FlutterFlow app, you may encounter an error that prevents the payment from processing correctly. This guide walks through the cause and steps to resolve it.
-
-## Problem
-
-**Error Message:**
-
-- **Snackbar:** `Unknown Error Occurred`
-- **Console:** Access to fetch at 'https://us-central1-.cloudfunctions.net/initStripeTestPayment'
-from origin 'https://ff-debug-service-frontend-xyz.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.
-
-
-## Cause
-
-This error is caused by a mismatch between the region where your Firebase functions are deployed and the region configured in your FlutterFlow project. The Cloud Function is being called from an incorrect region, leading to a CORS policy error.
-
-## How to Fix It
-
-### Step 1: Set Cloud Functions Region
-
-- Open **Firebase Settings** in FlutterFlow.
-- Click **Show Advanced Settings**.
-- Set the **Cloud Functions Region** to either `[Default]` or the **same region used in Firebase**.
-
-> You can also use ⌘+K (macOS) or Ctrl+K (Windows) and search for “firebase” to quickly find this section.
-
-
-
-### Step 2: Delete Previously Deployed Functions
-
-Remove any previously deployed functions from Firebase that were created using the wrong region.
-
-
-
-### Step 3: Re-deploy Stripe Integration
-
-- Go to your FlutterFlow project settings.
-- Re-deploy Stripe integration using the updated Cloud Functions region.
-
-
-
-## Summary
-
-By aligning the Cloud Function region with your Firebase configuration and re-deploying your Stripe setup, you can resolve the "Unknown Error Occurred" issue related to CORS during Stripe payments.
-
-If the problem persists, contact FlutterFlow support at **support@flutterflow.io**.
-
diff --git a/docs/troubleshooting/cloud-functions/Don't see Cloud Functions Admin in the Firebase Console.md b/docs/troubleshooting/cloud-functions/Don't see Cloud Functions Admin in the Firebase Console.md
deleted file mode 100644
index 1ed5d0c7..00000000
--- a/docs/troubleshooting/cloud-functions/Don't see Cloud Functions Admin in the Firebase Console.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-keywords: ['firebase', 'cloud', 'console']
-author: Unknown
-created_at: '1677585504'
-slug: /don-t-see-cloud-functions-admin-in-the-firebase-console
-title: Don't see Cloud Functions Admin in the Firebase Console
-updated_at: '1678226378'
-url: https://intercom.help/flutterflow/en/articles/7038084-don-t-see-cloud-functions-admin-in-the-firebase-console
----
-
-# Don't See Cloud Functions Admin in the Firebase Console
-
-## Issue
-
-You’re trying to assign `firebase@flutterflow.io` the **Cloud Functions Admin** role but can't find the option in your Firebase Console.
-
-## Background
-
-The **Cloud Functions Admin** permission is necessary for several FlutterFlow features—such as Push Notifications. While assigning this role is optional, **not doing so will limit your ability to use functions that depend on Firebase Cloud Functions.**
-
-> **Note:** You must be on the **Blaze** plan in Firebase to access this feature.
-
-## How to Enable the Blaze Plan in Firebase
-
-To activate the Blaze plan and enable Cloud Functions permissions:
-
-1. Open your [Firebase Console](https://console.firebase.google.com) and go to your project.
-2. Navigate to **Project Settings**.
-3. Click on **Usage and Billing**.
-4. In the **Usage and Billing** section, go to the **Details and Settings** tab.
-5. Confirm that:
- - Your project is on the **Blaze** plan.
- - Your billing account is active and correctly connected.
-
-
-
-
-Once these steps are complete, you'll be able to assign `firebase@flutterflow.io` the Cloud Functions Admin role, granting FlutterFlow access to manage backend functions.
-
-
diff --git a/docs/troubleshooting/cloud-functions/grant-cloud-functions-admin-role.md b/docs/troubleshooting/cloud-functions/grant-cloud-functions-admin-role.md
new file mode 100644
index 00000000..b0bfaf6f
--- /dev/null
+++ b/docs/troubleshooting/cloud-functions/grant-cloud-functions-admin-role.md
@@ -0,0 +1,46 @@
+---
+keywords: ['firebase', 'cloud', 'console']
+slug: troubleshooting/cloud-functions/grant-cloud-functions-admin-role
+title: Grant Cloud Functions Admin Role in Firebase
+---
+
+# Grant Cloud Functions Admin Role in Firebase
+
+To enable FlutterFlow features like Push Notifications, you must assign the `Cloud Functions Admin` role to the `firebase@flutterflow.io` service account. This requires your Firebase project to be on the **Blaze plan**.
+
+:::warning
+Cloud Functions permissions are only available on the Firebase Blaze plan. You will not be able to grant admin access without upgrading your plan.
+:::
+
+:::info[Prerequisites]
+- Access to your Firebase Console.
+- A billing-enabled Firebase project on the Blaze plan.
+:::
+
+**Enable the Blaze Plan**
+
+Follow these steps to activate the Blaze plan:
+
+1. Open your Firebase Console and select your project.
+2. Click the **Settings** gear icon in the left panel.
+3. Select **Usage and Billing**.
+
+ 
+
+4. In the **Details and Settings** tab, confirm that your project is linked to a billing account and has the Blaze plan enabled.
+
+ 
+
+## Assign the Cloud Functions Admin Role
+
+After confirming that your project is on the Blaze plan:
+
+1. Go to the **IAM** section in the **[Google Cloud Console](https://console.cloud.google.com/iam-admin/iam)**.
+2. Click **Grant Access**.
+3. Enter the email: `firebase@flutterflow.io`
+4. In the role selector, search for and select **Cloud Functions Admin**.
+5. Save your changes.
+
+ 
+
+ Once assigned, FlutterFlow will be able to deploy and manage backend functions for your project.
\ No newline at end of file
diff --git a/docs/troubleshooting/deployment/Can't Download APK or Code in FlutterFlow.md b/docs/troubleshooting/deployment/Can't Download APK or Code in FlutterFlow.md
deleted file mode 100644
index ea000130..00000000
--- a/docs/troubleshooting/deployment/Can't Download APK or Code in FlutterFlow.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-keywords: ['permissions', 'download', 'code']
-author: Unknown
-created_at: '1650311880'
-slug: /can-t-download-apk-or-code-in-flutterflow
-title: Can't Download APK or Code in FlutterFlow
-updated_at: '1713554284'
-url: https://intercom.help/flutterflow/en/articles/6150279-can-t-download-apk-or-code-in-flutterflow
----
-
-# Can't Download APK or Code in FlutterFlow
-
----
-
-## 🧪 Check Your Browser Permissions
-
-The most common cause of download issues (APK or project code) is **insufficient browser permissions**. Make sure **pop-ups and redirects** are allowed for FlutterFlow.
-
-### ✅ For Chrome:
-1. Click the **lock icon** in the address bar.
-2. A pop-up will appear — ensure **Pop-ups and redirects** is set to **Allow**.
-3. Also set **Clipboard** to **Allow** (used for copy-pasting widgets inside FlutterFlow).
-4. Try downloading again.
-
-> 💡 **Tip:** Downloads will be saved in your browser’s **default download folder**.
-
-
-
----
-
-## ❗ Resolve Project Errors
-
-You won’t be able to download APK or code if your project has **unresolved errors**.
-
-If you see a **red indicator** in the top toolbar or project issues pane, it means you must fix errors before building or downloading.
-
-
-
-> Once all errors are resolved, you should be able to download your APK or source code successfully.
-
----
-
-## 📩 Need More Help?
-
-If you still face issues:
-- Contact us at [support@flutterflow.io](mailto:support@flutterflow.io)
-
----
-
-## 🎥 Additional Resources
-
-- [YouTube Tutorial: Download Code](https://intercom.help/flutterflow/en/articles/6150279-can-t-download-apk-or-code-in-flutterflow)
diff --git a/docs/troubleshooting/deployment/Can't publish to Flutterflow.app as a subdomain. Error Error reserving subdomain. You have exceeded the quota for subdomains..md b/docs/troubleshooting/deployment/Can't publish to Flutterflow.app as a subdomain. Error Error reserving subdomain. You have exceeded the quota for subdomains..md
deleted file mode 100644
index 740e810c..00000000
--- a/docs/troubleshooting/deployment/Can't publish to Flutterflow.app as a subdomain. Error Error reserving subdomain. You have exceeded the quota for subdomains..md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-keywords: ['error', 'exceeded', 'subdomains']
-author: Unknown
-created_at: '1677756386'
-slug: /can-t-publish-to-flutterflow-app-as-a-subdomain-error-error-reserving-subdomain-you-have-exceeded-the-quota-for-subdomains
-title: "Can't publish to Flutterflow.app as a subdomain. Error: Error reserving subdomain. You have exceeded the quota for subdomains."
-updated_at: '1678233842'
-url: https://intercom.help/flutterflow/en/articles/7044258-can-t-publish-to-flutterflow-app-as-a-subdomain-error-error-reserving-subdomain-you-have-exceeded-the-quota-for-subdomains
----
-
-# Can't Publish to `flutterflow.app` Subdomain
-
----
-
-## ❗ Issue
-
-You are trying to publish your web app to the `.flutterflow.app` domain and encounter the following error:
-
-```text
-Error reserving subdomain. You have exceeded the quota for subdomains.
-```
-
-
-
----
-
-## 🧠 Why You Are Seeing This Error
-
-There is a limit to how many **custom subdomains** you can publish under the `flutterflow.app` domain:
-
-- **Free plan:** up to **3 subdomains**
-- **Paid plan:** up to **10 subdomains**
-
-> **Note:** Only *custom* subdomains count toward this quota. If your subdomain uses the **project ID**, it does **not** count.
-
----
-
-## ✅ Solutions
-
-### 1. Change the Subdomain Name to Your Project ID
-
-Use your **project ID** as the subdomain name (set in the “Site URL” field). This avoids counting against your quota.
-
-
-
----
-
-### 2. Unpublish Other Projects
-
-If you've reached your subdomain quota, unpublish some of your existing projects:
-
-1. Go to **Web Publishing**
-2. Click the **Unpublish** button on older projects.
-
-
diff --git a/docs/troubleshooting/deployment/Codemagic build error Format Exception Could not find End of Central Directory Record.md b/docs/troubleshooting/deployment/Codemagic build error Format Exception Could not find End of Central Directory Record.md
deleted file mode 100644
index 2871fc14..00000000
--- a/docs/troubleshooting/deployment/Codemagic build error Format Exception Could not find End of Central Directory Record.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-keywords: ['error', 'build', 'format']
-author: Unknown
-created_at: '1678978452'
-slug: /codemagic-build-error-format-exception-could-not-find-end-of-central-directory-record
-title: 'Codemagic build error: Format Exception: Could not find End of Central Directory Record'
-updated_at: '1679121584'
-url: None
----
-
-# Codemagic Build Error: Format Exception – Could Not Find End of Central Directory Record
-
-> **Tip:** Not sure which type of error your project has? Check out [this article](https://intercom.help/flutterflow/en/articles/6146843-how-to-identify-your-codemagic-error) on how to identify your Codemagic error.
-
-## What Does This Error Mean?
-
-This error usually means that the **branch name** was entered incorrectly in the Codemagic settings for your GitHub repo.
-
----
-
-## Full Error Message
-
-```text
-Codemagic build error: Format Exception: Could not find End of Central Directory Record
-```
-
-
----
-
-## How to Resolve This Issue
-
-To fix this, make sure you're **only entering the branch name**, and **not the full `repo-name/branch-name` path**, because the project is already connected to the correct GitHub repo.
-
-Incorrect (❌): repo-name/branch-name
-
-
-Correct (✅): branch-name
-
-
-### Example
-
-Incorrect:
-
-
-Correct:
-
-
----
-
-## The Issue Was Not Resolved
-
-If the error still persists after correcting the branch name, please contact **FlutterFlow Support** via chat or email at [support@flutterflow.io](mailto:support@flutterflow.io).
-
-
diff --git a/docs/troubleshooting/deployment/DeploymentBuild for mobile error NoDecoderForImageFormatException.md b/docs/troubleshooting/deployment/DeploymentBuild for mobile error NoDecoderForImageFormatException.md
deleted file mode 100644
index 080139f2..00000000
--- a/docs/troubleshooting/deployment/DeploymentBuild for mobile error NoDecoderForImageFormatException.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-keywords: ['error', 'deployment', 'build']
-author: Unknown
-created_at: '1677591886'
-slug: /deploymentbuild-for-mobile-error-nodecoderforimageformatexception
-title: 'Deployment/Build for mobile error: NoDecoderForImageFormatException'
-updated_at: '1677592263'
-url: https://intercom.help/flutterflow/en/articles/7038400-deployment-build-for-mobile-error-nodecoderforimageformatexception
----
-
-# Deployment/Build for Mobile Error: `NoDecoderForImageFormatException`
-
-## What does this error mean?
-
-This error occurs during deployment or build when the icon launcher image you selected is in an unsupported format or has invalid properties. For example, if the icon is an **SVG file**, the build will fail because FlutterFlow cannot generate launcher icons from unsupported formats.
-
-## How to Fix It
-
-1. Navigate to **Settings > App Assets** in FlutterFlow.
-2. Replace both your **App Icon** and **Splash Image**.
-
-### Requirements for App Icon:
-
-- Use **PNG** or **JPEG** format (❌ Avoid SVG and other formats).
-- The recommended minimum size is **1024×1024 pixels**.
-- Ensure the file size isn’t too large.
-- **Avoid transparent areas** in the PNG if targeting iOS.
-
-> ⚠️ FlutterFlow uses the same icon asset to generate both Android and iOS icons, so it must comply with the guidelines of **both platforms**.
-
-## Additional Resources
-
-- [Android Icon Design Specifications](https://developer.android.com/distribute/google-play/resources/icon-design-specifications)
-- [Apple App Icon Guidelines](https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/)
-
-
diff --git a/docs/troubleshooting/deployment/Error Failed to create server directory. Please contact support@flutterflow.io.md b/docs/troubleshooting/deployment/Error Failed to create server directory. Please contact support@flutterflow.io.md
deleted file mode 100644
index 14014fe2..00000000
--- a/docs/troubleshooting/deployment/Error Failed to create server directory. Please contact support@flutterflow.io.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-keywords: ['error', 'verify']
-author: Unknown
-created_at: '1651736299'
-slug: /error-in-verify-sms
-title: Error in Verify SMS
-updated_at: '1651736360'
-url: None
----
-
-# Error in Verify SMS
-
-## What Does This Error Mean?
-
-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/deployment/I get this error The operation couldn\342\200\231t be completed. Unable to locate a Java Runtime..md" "b/docs/troubleshooting/deployment/I get this error The operation couldn\342\200\231t be completed. Unable to locate a Java Runtime..md"
deleted file mode 100644
index 0dcf05f7..00000000
--- "a/docs/troubleshooting/deployment/I get this error The operation couldn\342\200\231t be completed. Unable to locate a Java Runtime..md"
+++ /dev/null
@@ -1,23 +0,0 @@
----
-keywords: ['error', 'java', 'couldn']
-slug: i-get-this-error-the-operation-couldn-t-be-completed-unable-to-locate-a-java-runtime
-title: I get this error: The operation couldn’t be completed. Unable to locate a Java Runtime.
----
-
-# I get this error: The operation couldn’t be completed. Unable to locate a Java Runtime.
-
-This error means your system does not have a Java Runtime Environment (JRE) installed or it cannot be located.
-
-## How to Fix It
-
-To resolve the issue:
-
-1. Visit the official Java website: [https://www.java.com](https://www.java.com)
-2. Download the latest version of Java for your operating system.
-3. Install the Java Runtime Environment (JRE).
-4. Restart your computer if needed and try running the operation again.
-
-If you're using macOS and still see the error, you may need to install a specific version of the Java Development Kit (JDK) from [Oracle's JDK Downloads](https://www.oracle.com/java/technologies/javase-downloads.html).
-
-> 💡 Ensure that Java is added to your system’s PATH if you continue encountering issues.
-
diff --git a/docs/troubleshooting/deployment/Provided value is not a valid PEM encoded private key.md b/docs/troubleshooting/deployment/Provided value is not a valid PEM encoded private key.md
deleted file mode 100644
index a38d5f95..00000000
--- a/docs/troubleshooting/deployment/Provided value is not a valid PEM encoded private key.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-keywords: ['deployment', 'error', 'value']
-slug: /provided-value-is-not-a-valid-pem-encoded-private-key
-title: Provided Value Is Not a Valid PEM Encoded Private Key
----
-
-# Provided Value Is Not a Valid PEM Encoded Private Key
-
-When deploying an iOS build from FlutterFlow, you may encounter the following error:
-
-> **app-store-connect: error: argument --private-key: Provided value is not a valid PEM encoded private key**
-
-This issue typically appears when the App Store private key is either missing, incorrectly formatted, or invalid.
-
-## Cause
-
-The error occurs when the private key uploaded to FlutterFlow is not in the proper `.p8` PEM format expected by App Store Connect. The private key must be the original file downloaded from the Apple Developer portal without modification.
-
-## Resolution Steps
-
-### 1. Go to Mobile Deployment Settings
-
-- In FlutterFlow, navigate to **App Settings > Mobile Deployment > App Store**
-- If you have not already uploaded a private key, the field will appear blank.
-
-
-
-### 2. Reupload the Private Key
-
-- Locate the original `.p8` private key file downloaded from [Apple Developer → Keys](https://developer.apple.com/account/resources/authkeys/list)
-- Click **Upload** and select the correct `.p8` file
-
-> ⚠️ The key file must include both:
-> `-----BEGIN PRIVATE KEY-----`
-> `-----END PRIVATE KEY-----`
-
-### 3. Save and Redeploy
-
-- After uploading, save your changes
-- Redeploy your iOS app from FlutterFlow
-
-## If the Issue Persists
-
-If you have uploaded a valid key and the error continues:
-
-- Make sure the `.p8` file is not corrupted or modified
-- Do not paste the key into a text field—use the file upload option
-- Try re-downloading the key from Apple Developer and uploading again
-
-> 🛠️ **Still stuck?** Contact FlutterFlow support at [support@flutterflow.io](mailto:support@flutterflow.io) for further help.
diff --git a/docs/troubleshooting/deployment/build_failed_error_loading_project_for_test_or_run_mode.md b/docs/troubleshooting/deployment/build_failed_error_loading_project_for_test_or_run_mode.md
deleted file mode 100644
index ac587417..00000000
--- a/docs/troubleshooting/deployment/build_failed_error_loading_project_for_test_or_run_mode.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-keywords: ['error', 'build', 'failed']
-slug: build-failed-error-loading-project-for-test-or-run-mode
-title: Build Failed Error Loading Project for Test or Run Mode
----
-
-# Build Failed: Error Loading Project for Test or Run Mode
-
-When trying to build your project in **Run** or **Test** mode, you may receive a **Build Failed** error, even when no issues are visible in the FlutterFlow editor.
-
-
-
----
-
-## What This Error Means
-
-This error indicates that your project contains a compilation issue that is not being flagged in the FlutterFlow interface.
-
-FlutterFlow usually highlights potential problems through the **Debug** menu. However, some errors may not yet be automatically detected.
-
----
-
-## Common Causes of This Error
-
-
-
-- Copy/pasting a widget with many actions or visibility rules
-- Copy/pasting widgets that include animations or animation actions
-- Copy/pasting entire pages or components
-- Using a data source that doesn’t exist at build time (e.g., a periodic action referenced before it's created)
-- A potential bug in FlutterFlow
-
-If you suspect a bug, report it via the [FlutterFlow GitHub issue tracker](https://github.com/FlutterFlow/flutterflow/issues).
-
----
-
-## Troubleshooting Steps
-
-1. **Download and Run Locally**
- - If you have access to the downloaded code, run the project on your local machine.
- - Review the compilation error directly in your IDE to identify the root cause.
-
-2. **Use Snapshots to Track Changes**
- - Check your recent snapshots to identify what changes may have introduced the error.
- - Focus on duplicated pages, modified actions, or new widgets added right before the error started.
-
-3. **Inspect Visibility Rules and Actions**
- - Even if no error is visible, some issues may be buried within conditions.
-
-Example:
-
-
-
-At first glance, this rule appears valid. However, opening the condition reveals the issue:
-
-
-
-The second value is unset and highlighted in red. Errors like these can prevent the build from succeeding.
-
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..790ebc9e
--- /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..5f2c1fd8
--- /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-nodecoderforimageformat.md b/docs/troubleshooting/deployment/fix-mobile-build-error-nodecoderforimageformat.md
new file mode 100644
index 00000000..9426ecd4
--- /dev/null
+++ b/docs/troubleshooting/deployment/fix-mobile-build-error-nodecoderforimageformat.md
@@ -0,0 +1,29 @@
+---
+keywords: ['error', 'deployment', 'build']
+slug: troubleshooting/deployment/fix-mobile-build-error-nodecoderforimageformat
+title: Fix Mobile Build Error Nocodeerforimageformat
+---
+
+# Fix Mobile Build Error Nocodeerforimageformat
+
+This error typically occurs when the mobile app build fails due to an unsupported icon file format.
+
+The build process cannot generate a launcher icon from the provided app icon asset. This often happens when the selected file is in an unsupported format such as SVG.
+
+
+
+Follow these steps to fix the error:
+
+ 1. Go to **Settings > App Assets** in your FlutterFlow project.
+ 2. Replace the current app icon and splash image with supported formats.
+ 3. Ensure that:
+ - The asset file is **not too large** (recommended size is 1024×1024 pixels).
+ - The icon file is in **PNG or JPEG** format (SVG is not supported).
+ 4. Avoid PNG icons with transparency if building for iOS.
+
+:::info[Recommended Guidelines]
+- Use **PNG or JPEG** formats only.
+- Use an icon of at least **1024×1024 pixels**.
+- Avoid transparent PNGs for iOS builds.
+- Ensure the image adheres to platform-specific design standards.
+:::
\ No newline at end of file
diff --git a/docs/troubleshooting/deployment/fix-sms-code-verification-errors.md b/docs/troubleshooting/deployment/fix-sms-code-verification-errors.md
new file mode 100644
index 00000000..c6f93895
--- /dev/null
+++ b/docs/troubleshooting/deployment/fix-sms-code-verification-errors.md
@@ -0,0 +1,46 @@
+---
+keywords: ['sms', 'verification', 'text field']
+slug: troubleshooting/deployment/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/deployment/fix-subdomain-limit-error-when-publishing.md b/docs/troubleshooting/deployment/fix-subdomain-limit-error-when-publishing.md
new file mode 100644
index 00000000..7f6c2cb3
--- /dev/null
+++ b/docs/troubleshooting/deployment/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/deployment/install-java-runtime-missing-error.md b/docs/troubleshooting/deployment/install-java-runtime-missing-error.md
new file mode 100644
index 00000000..130bbf1e
--- /dev/null
+++ b/docs/troubleshooting/deployment/install-java-runtime-missing-error.md
@@ -0,0 +1,30 @@
+---
+keywords: ['java', 'runtime', 'error']
+slug: /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..4f036ff4
--- /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/exporting-code/Resolve Issues Running Code Locally After Exporting My Code APK.md b/docs/troubleshooting/exporting-code/Resolve Issues Running Code Locally After Exporting My Code APK.md
deleted file mode 100644
index 3c56a986..00000000
--- a/docs/troubleshooting/exporting-code/Resolve Issues Running Code Locally After Exporting My Code APK.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-keywords: ['build', 'locally', 'after']
-slug: /resolve-issues-running-code-locally-after-exporting-my-code-apk
-title: Resolve Issues Running Code Locally After Exporting My Code / APK
----
-
-# Resolve Issues Running Code Locally After Exporting My Code / APK
-
-If APKs downloaded from FlutterFlow are not functioning as expected, follow the steps below to ensure proper project configuration and build execution. This process will also help identify any local compiler errors that may not be visible within FlutterFlow.
-
-## Steps to Resolve
-
-1. **Resolve All Project Issues**
- - In FlutterFlow, check the project for any unresolved issues.
- - Resolve errors before proceeding to build.
-
- 
-
-2. **Save the Project**
- - Use `Ctrl + S` or `Cmd + S` to save all recent changes.
-
- 
-
-3. **Rebuild the APK**
- - Use the Build tab to generate a new APK.
- - Download the APK after the build completes.
-
- 
-
-4. **Run the APK or Project Locally**
- - Download the full project code and run it using your local machine.
- - This allows visibility into any compilation or runtime errors.
-
-5. **Run Required Commands**
- - Open a terminal and execute all necessary build commands (e.g., `flutter pub get`, `flutter build apk`).
-
-## :::note[Firebase Configuration Consideration]
-
-When building locally, some features—like Google Sign-In—may not work unless you configure the SHA1 key in Firebase.
-
-- Go to the Firebase Console.
-- Add your local machine’s SHA1 fingerprint to your Android app configuration.
-- Redeploy after the change.
-
-:::
diff --git a/docs/troubleshooting/exporting-code/resolve-issues-running-code-locally-after-exporting-my-code-apk.md b/docs/troubleshooting/exporting-code/resolve-issues-running-code-locally-after-exporting-my-code-apk.md
new file mode 100644
index 00000000..c42ef2a2
--- /dev/null
+++ b/docs/troubleshooting/exporting-code/resolve-issues-running-code-locally-after-exporting-my-code-apk.md
@@ -0,0 +1,46 @@
+---
+keywords: ['build', 'locally', 'after']
+slug: /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/firebase/Can't deploy Firestore Database rules.md b/docs/troubleshooting/firebase/Can't deploy Firestore Database rules.md
deleted file mode 100644
index 6b707015..00000000
--- a/docs/troubleshooting/firebase/Can't deploy Firestore Database rules.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-keywords: ['database', 'firebase', 'permissions']
-author: Unknown
-created_at: '1677245210'
-slug: /can-t-deploy-firestore-database-rules
-title: Can't Deploy Firestore Database Rules
-updated_at: '1677274905'
-url: https://intercom.help/flutterflow/en/articles/7030020-can-t-deploy-firestore-database-rules
----
-
-# Can't Deploy Firestore Database Rules
-
-If you're having trouble deploying Firestore Database rules in FlutterFlow, follow the steps below to troubleshoot the issue.
-
----
-
-## ✅ Step 1: Validate That Firestore Database Has Been Created
-
-FlutterFlow cannot deploy rules if a **Firestore database** has not been created in your Firebase project.
-
-1. Go to the [Firebase Console](https://console.firebase.google.com).
-2. Select your project.
-3. Click **Create Database** under Firestore.
-
-
-
-> 🎥 **Video Reference:**
-> _Create a Firestore database in Firebase_ — watch from **1:50 to 2:05**
-
----
-
-## ✅ Step 2: Verify Required Permissions
-
-To deploy Firestore rules, you must assign the following roles to `firebase@flutterflow.io`:
-
-- **Editor**
-- **Cloud Functions Admin**
-- **Service Account User**
-
-### To check or update roles:
-1. Go to **Project Settings** > **Users & Permissions** in your Firebase Console.
-2. Locate the `firebase@flutterflow.io` service account.
-3. Confirm that the three required roles are assigned.
-
-> 📌 If any of the roles are missing, follow [this guide](https://intercom.help/flutterflow/en/articles/7030020-can-t-deploy-firestore-database-rules) to add them.
-
-
-
-
-
----
-
-## ✅ Step 3: Confirm GCP Location is Selected
-
-FlutterFlow cannot deploy rules if a GCP location hasn’t been selected.
-
-1. In Firebase Console, go to **Project Settings** > **General**.
-2. Under **Default GCP Resource Location**, check if a location is selected.
-
-If it shows **“Not yet selected”**, click the **pencil icon** to complete setup.
-
-
-
-> ⚠️ **Note:** This selection **cannot be changed** later. [Learn more about location selection](https://firebase.google.com/docs/projects/locations).
-
----
-
-## 🎉 You're Done!
-
-After completing these three checks:
-- ✅ Firestore is created
-- ✅ Permissions are assigned
-- ✅ GCP location is set
-
-...you should now be able to successfully deploy your Firestore database rules from FlutterFlow.
-
diff --git a/docs/troubleshooting/firebase/Can't deploy firestore database indexes..md b/docs/troubleshooting/firebase/Can't deploy firestore database indexes..md
deleted file mode 100644
index 51184a81..00000000
--- a/docs/troubleshooting/firebase/Can't deploy firestore database indexes..md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-keywords: ['database', 'firestore', 'deploy']
-author: Unknown
-created_at: '1677502144'
-slug: /can-t-deploy-firestore-database-indexes
-title: Can't Deploy Firestore Database Indexes
-updated_at: '1677879784'
-url: https://intercom.help/flutterflow/en/articles/7034528-can-t-deploy-firestore-database-indexes
----
-
-# Can't Deploy Firestore Database Indexes
-
-When you add or update a query with new filters in FlutterFlow, the platform prompts you to deploy the necessary Firestore indexes. This process creates the appropriate indexes in your Firebase Firestore database to support those queries.
-
-> 📘 Learn more about Firestore indexes in [this guide](https://docs.flutterflow.io/data/firestore/using-indexes) before proceeding.
-
-
-
----
-
-## 🛠 Troubleshooting Steps
-
-If you’re unable to deploy indexes, follow these steps to resolve the issue:
-
-### ✅ 1. Enable Email Sign-In
-
-Ensure that **Email/Password** sign-in is enabled in your Firebase Authentication settings.
-
-> 🔗 [Enable Firebase Email Authentication](https://docs.flutterflow.io/integrations/firebase/authentication#emailpassword)
-
----
-
-### ✅ 2. Assign Required Cloud Permissions
-
-Grant the following roles to `firebase@flutterflow.io` in your Firebase project:
-
-- **Editor**
-- **Cloud Functions Admin**
-- **Service Account User**
-
-> 🔗 [How to assign Firebase roles](https://docs.flutterflow.io/integrations/firebase/permissions)
-
----
-
-### ✅ 3. Update Firebase Rules
-
-Make sure your Firebase rules allow access for FlutterFlow to deploy indexes.
-
-> 🔗 [Update Firebase Rules](https://docs.flutterflow.io/data/firestore/setting-up-firestore#step-5-update-firestore-rules)
-
----
-
-### ✅ 4. Refresh FlutterFlow and Clear Cache
-
-- Reload FlutterFlow with `Ctrl + R` (or `Cmd + R` on Mac).
-- Log out and log back in.
-- Clear your browser cache.
-
----
-
-### ✅ 5. Check Index Limits in Firebase
-
-If you still can't deploy indexes, you may have hit the **index quota limit** for your Firebase plan.
-
-1. Go to the [Firebase Console](https://console.firebase.google.com/).
-2. Select your project.
-3. Navigate to **Firestore Database** > **Indexes**.
-4. Check for any warnings or quota-related errors.
-
-> 🔢 Firebase allows up to **200 composite indexes** by default, though this may vary based on your project or pricing plan.
-
----
-
-## 🔄 When Index Deployment is Required
-
-Anytime you **modify**, **add**, or **remove** a query in FlutterFlow, you'll be prompted to re-deploy indexes. This ensures your app continues to query data efficiently.
-
----
-
-## Still Need Help?
-
-If none of these steps resolve the issue, reach out to our support team at [support@flutterflow.io](mailto:support@flutterflow.io).
diff --git a/docs/troubleshooting/firebase/Could not create an account as firebase@flutterflow.io to your firebase project, in CMS - content management.md b/docs/troubleshooting/firebase/Could not create an account as firebase@flutterflow.io to your firebase project, in CMS - content management.md
deleted file mode 100644
index 01f7aba1..00000000
--- a/docs/troubleshooting/firebase/Could not create an account as firebase@flutterflow.io to your firebase project, in CMS - content management.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-keywords: ['firebase', 'error', 'content']
-author: Unknown
-created_at: '1677251582'
-slug: /could-not-create-an-account-as-firebase-flutterflow-io-to-your-firebase-project-in-cms-content-management
-title: Could not create an account as firebase@flutterflow.io to your Firebase project, in CMS - Content Management
-updated_at: '1677251836'
-url: https://intercom.help/flutterflow/en/articles/7030277-could-not-create-an-account-as-firebase-flutterflow-io-to-your-firebase-project-in-cms-content-management
----
-
-# Could Not Create an Account as firebase@flutterflow.io to Your Firebase Project in CMS – Content Management
-
-If you believe all your configurations are correct or it was working previously and you now see this error:
-
-
-
-## Steps to Resolve
-
-1. Go to your **Firebase Project > Authentication** and search for the **firebase@flutterflow.io** user.
-
- 
-
-2. Load the user by typing **firebase@flutterflow.io** in the search field and hit **Reload**.
-
-3. Once found, **remove it** from the authentication table.
-
-4. Return to **FlutterFlow CMS** and **refresh the page**. You should now be able to see your database content.
-
----
-
-## Why Is This Happening?
-
-This issue typically occurs when you connect **more than one FlutterFlow project** to the same Firestore database and manage the CMS data across those projects.
-
-In this scenario, **permission conflicts** may arise. As a result:
-
-- CMS may work when accessed from **Project A**.
-- CMS may **fail** when accessed from **Project B**.
-
-**Solution:**
-By removing the `firebase@flutterflow.io` account from Firebase Authentication, you allow it to be **recreated with the correct permissions** the next time CMS is accessed.
-
diff --git a/docs/troubleshooting/firebase/Execution failed for task 'appprocessReleaseGoogleServices'..md b/docs/troubleshooting/firebase/Execution failed for task 'appprocessReleaseGoogleServices'..md
deleted file mode 100644
index 6e625b9a..00000000
--- a/docs/troubleshooting/firebase/Execution failed for task 'appprocessReleaseGoogleServices'..md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-keywords: ['firebase', 'error', 'build failure']
-author: Unknown
-created_at: '1661723973'
-slug: /fix-processreleasegoogleservices-error
-title: Fix Execution Failed for Task ':app:processReleaseGoogleServices'
-updated_at: '1713554292'
-url: https://intercom.help/flutterflow/en/articles/6509730-execution-failed-for-task-app-processreleasegoogleservices
----
-
-# Fix Execution Failed for Task ':app:processReleaseGoogleServices'
-
-This error typically indicates a mismatch in the **Firebase package name** within your FlutterFlow project and the `google-services.json` configuration file.
-
-## :::info[Prerequisites]
-- You must have Firebase already integrated in your FlutterFlow project.
-- Ensure you are using the correct package name under **Settings > General > App Details**.
-:::
-
-## Error Message
-
-```plaintext
-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]'
-```
-
-## Steps to Resolve
-
-1. **Open Your Project in FlutterFlow**
-
-2. **Navigate to** `Settings > Firebase`
-
- 
-
-3. **Regenerate Firebase Config Files**
- - Click **Regenerate Config Files**.
- - Enter the correct package name (as set under **Settings > General**).
- - Click **Generate File**.
-
- 
-
-4. **Re-deploy Your App**
- - After regenerating the config files, deploy the app again to verify if the issue is resolved.
-
-## :::warning
-If the error persists even after regenerating the config files, contact [FlutterFlow Support](mailto:support@flutterflow.io) via **Chat** or **Email**.
-:::
diff --git a/docs/troubleshooting/firebase/Firebase project not configured.Make sure you set up Firebase for your project under Settings Firebase.md b/docs/troubleshooting/firebase/Firebase project not configured.Make sure you set up Firebase for your project under Settings Firebase.md
deleted file mode 100644
index 8eb1996c..00000000
--- a/docs/troubleshooting/firebase/Firebase project not configured.Make sure you set up Firebase for your project under Settings Firebase.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-keywords: ['firebase', 'setup', 'settings']
-author: Unknown
-created_at: '1688966657'
-slug: /fix-firebase-project-not-configured
-title: Fix Firebase Project Not Configured Error in Settings
-updated_at: '1710092417'
-url: null
----
-
-# Fix Firebase Project Not Configured Error in Settings
-
-This article explains how to resolve the **Firebase project not configured** error that may appear when accessing the Content Manager (CMS) in FlutterFlow.
-
-## :::info[Prerequisites]
-- You must have a Firebase project already set up.
-- Ensure the Firebase project is linked in your FlutterFlow project under **Settings > Firebase**.
-:::
-
-## Steps to Resolve the Issue
-
-1. **Verify Firebase Setup**
- - In FlutterFlow, go to **Settings > Firebase**.
- - Confirm that all required Firebase configuration fields are filled.
-
-2. **Trigger a Project Update**
- - Make a minor, non-breaking change to your project (e.g., add and delete a dummy widget).
- - This forces FlutterFlow to sync and update your Firebase settings.
-
-3. **Reload the CMS**
- - Return to the **CMS** tab and reload the page.
- - Check if the error persists.
-
- 
-
-4. **Contact Support if Needed**
- - If the issue continues after performing these steps, contact FlutterFlow Support:
- - **Email:** [support@flutterflow.io](mailto:support@flutterflow.io)
- - **Chat:** Available in the FlutterFlow app interface.
-
-## :::note
-This issue typically occurs when Firebase has not been properly initialized in the project settings. Triggering a rebuild helps reestablish the necessary configurations.
-:::
-
diff --git a/docs/troubleshooting/firebase/How To Resolve [Advanced] 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..md b/docs/troubleshooting/firebase/How To Resolve [Advanced] 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..md
deleted file mode 100644
index 2f4076cf..00000000
--- a/docs/troubleshooting/firebase/How To Resolve [Advanced] 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..md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Enable Email Sign-In to Resolve Firebase Authentication Issues
-slug: /resolve-firebase-sign-in-email-configuration
-keywords: ['firebase', 'configuration', 'troubleshooting']
----
-
-# Enable Email Sign-In to Resolve Firebase Authentication Issues
-
-If you see the following error:
-
-> **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:
-
-## How to Fix the Issue
-
-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/firebase/How to change modes in Firestore; from Datastore to Native mode.md b/docs/troubleshooting/firebase/How to change modes in Firestore; from Datastore to Native mode.md
deleted file mode 100644
index bb518fee..00000000
--- a/docs/troubleshooting/firebase/How to change modes in Firestore; from Datastore to Native mode.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: Switch Firestore from Datastore to Native Mode
-slug: /switch-firestore-datastore-to-native-mode
-keywords: ['mode', 'firestore', 'datastore']
----
-
-# Switch Firestore from Datastore to Native Mode
-
-## Background
-
-In some cases, **Cloud Firestore** is configured in **Datastore Mode** by default. This mode is **not recommended** when working with FlutterFlow. You should switch your Firestore setup to **Native Mode** for full compatibility.
-
-
-
----
-
-## Steps to Switch to Native Mode
-
-1. Click on **Go to Google Cloud Console**.
-2. In the console, click **Switch To Native Mode**.
-
-
-
-3. After switching the mode, return to Firebase and reload **Cloud Firestore**.
-
----
-
-
-
-## Troubleshooting
-
-If the error still appears after following the steps above, please reach out to FlutterFlow support via chat or email at [support@flutterflow.io](mailto:support@flutterflow.io).
diff --git a/docs/troubleshooting/firebase/Package name in firebase android config must match your app's package name.md b/docs/troubleshooting/firebase/Package name in firebase android config must match your app's package name.md
deleted file mode 100644
index 9a2db8b2..00000000
--- a/docs/troubleshooting/firebase/Package name in firebase android config must match your app's package name.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-keywords: ['firebase', 'android', 'package']
-slug: /firebase-config-package-name-mismatch
-title: Fix Firebase Config Package Name Mismatch for Android
----
-
-# Fix Firebase Config Package Name Mismatch for Android
-
-This error occurs when the **package name defined in FlutterFlow** does not match the one used to generate the Firebase configuration files.
-
-> 💡 Ensure the package name matches **exactly** in both FlutterFlow and Firebase — including capitalization and punctuation.
-
-## Cause
-
-This issue typically arises after changing the package name in your FlutterFlow project without updating the corresponding Firebase configuration.
-
-## Resolution Steps
-
-### 1. Open Firebase Settings in FlutterFlow
-
-- In your FlutterFlow project, go to:
- - **Settings > Firebase**
-
-
-
-### 2. Regenerate Config Files
-
-- Click **Regenerate Config Files**
-- Enter the updated package name
-- Click **Generate File**
-
-
-
-### 3. Re-Test Integration
-
-- Download and include the updated `google-services.json` file if prompted
-- Run or deploy your app again to verify the fix
-
----
-
-By keeping your package name consistent between FlutterFlow and Firebase, you can avoid configuration errors and ensure proper app functionality.
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..8b86cfb2
--- /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..ffeb700d
--- /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..48eb102f
--- /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..00129b49
--- /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..70f11cb9
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-firestore-rules-deployment-errors.md
@@ -0,0 +1,67 @@
+---
+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..17163477
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-google-services-config-error-in-android-build.md
@@ -0,0 +1,47 @@
+---
+keywords: ['firebase', 'error', 'failed']
+slug: /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-photo-upload-to-content-manager.md b/docs/troubleshooting/firebase/fix-photo-upload-to-content-manager.md
new file mode 100644
index 00000000..9db93d04
--- /dev/null
+++ b/docs/troubleshooting/firebase/fix-photo-upload-to-content-manager.md
@@ -0,0 +1,41 @@
+---
+keywords: ['content', 'upload', 'photo']
+slug: troubleshooting/backend/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/switch-firestore-to-native-mode.md b/docs/troubleshooting/firebase/switch-firestore-to-native-mode.md
new file mode 100644
index 00000000..b21a8ff9
--- /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/Error The bundle version must be higher than the previously uploaded version.md b/docs/troubleshooting/google-play-store-deployment/Error The bundle version must be higher than the previously uploaded version.md
deleted file mode 100644
index 3fb05121..00000000
--- a/docs/troubleshooting/google-play-store-deployment/Error The bundle version must be higher than the previously uploaded version.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-keywords: ['error', 'deployment', 'previously']
-author: Unknown
-created_at: '1718224962'
-slug: /error-the-bundle-version-must-be-higher-than-the-previously-uploaded-version
-title: 'Error: The Bundle Version Must Be Higher Than the Previously Uploaded Version'
-updated_at: '1727117531'
-url: None
----
-
-# Error: The Bundle Version Must Be Higher Than the Previously Uploaded Version
-
-:::tip
-Not sure which type of error your project has? Check out this article on how to identify your Codemagic error.
-:::
-
-## What Does This Error Mean?
-
-The error you are encountering occurs because the version and build number of the app you are trying to deploy are the same as the previously deployed version. Each new deployment must have a higher build number than the last one to be accepted by the Apple Store.
-
-### Error Message
-
-```text
-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"
-```
-
-
-## How to Resolve the Issue
-
-You need to ensure that the build number is higher than the last deployed version. In **FlutterFlow**, you can configure the build number to automatically increment with each deployment attempt.
-
-### Here’s What to Do:
-
-1. **Check the latest version and build number** uploaded to TestFlight.
- For example, if your last version was `1.0.1` with build number `12`.
-
-2. Navigate to **FlutterFlow > Settings > Deployment** and find the section where you specify the version and build number.
- 
-
-3. You have two options:
- - **Option 1:** Keep the version the same and leave the **build number** field empty, allowing FlutterFlow to automatically increment it for you.
- - **Option 2:** Manually increment the **build number** by 1.
- For example, if the last build number was `12`, change it to `13`.
-
-4. If manually incrementing the build number does not resolve the issue, try incrementing the **version number** as well.
- For instance, change it to `1.0.2` and leave the **build number** field empty, then attempt the deployment again.
-
-## Preventing Future Errors
-
-To avoid this error in future deployments:
-
-- If you prefer to **manually** increment the build number, be sure to increase it by **one (1)** before each new deployment.
-- Alternatively, leave the **build number** field empty altogether, allowing FlutterFlow to handle the increment **automatically**.
-
-## The Issue Was Not Resolved
-
-If this does not resolve the issue, contact FlutterFlow Support at **support@flutterflow.io**
diff --git a/docs/troubleshooting/google-play-store-deployment/Google Play Store deployment error Failed to read key from store tmpkeystore.keystore.md b/docs/troubleshooting/google-play-store-deployment/Google Play Store deployment error Failed to read key from store tmpkeystore.keystore.md
deleted file mode 100644
index 01355b85..00000000
--- a/docs/troubleshooting/google-play-store-deployment/Google Play Store deployment error Failed to read key from store tmpkeystore.keystore.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Fix Google Play Deployment Error: Failed to Read Key from Keystore
-slug: /fix-google-play-keystore-deployment-error
-keywords: ['deployment', 'error', 'store']
----
-
-# Fix Google Play Deployment Error: Failed to Read Key from Keystore
-
-## Error Message
-
-During deployment to the Google Play Store, you may encounter the following error:
-
-```text
-Error: Failed to read key ******** from store "/tmp/keystore.keystore"
-```
-
-
----
-
-## Why This Happens
-
-This error typically occurs due to a problem with your keystore configuration, such as:
-
-- Incorrect keystore file path
-- Wrong keystore password or alias
-- Corrupted or missing keystore file
-
----
-
-## How to Resolve
-
-Follow these steps to resolve the issue:
-
-1. **Verify Your Keystore Setup**
- Check that the keystore file is correctly configured in your FlutterFlow **Project Settings > Android Build** section.
-
-2. **Check Keystore Credentials**
- Double-check the **keystore password**, **key alias**, and **key password**. Make sure they match what you set when generating the keystore.
-
-3. **Regenerate the Keystore**
- If the issue persists, consider creating a **new keystore** within FlutterFlow and updating the credentials accordingly.
-
-4. **Ensure File Integrity**
- Confirm that you've uploaded the correct and **unmodified** keystore file.
-
----
-
-## Additional Help
-
-Refer to FlutterFlow’s official guide on Android publishing for more details:
-[Publishing Your Android App](https://docs.flutterflow.io)
-
diff --git a/docs/troubleshooting/google-play-store-deployment/Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key. Found SHA1 XXXXXXXX. Expected YYYYYYYY.md b/docs/troubleshooting/google-play-store-deployment/Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key. Found SHA1 XXXXXXXX. Expected YYYYYYYY.md
deleted file mode 100644
index 98d89f49..00000000
--- a/docs/troubleshooting/google-play-store-deployment/Google Play failed to upload artefacts. The Android App Bundle was signed with the wrong key. Found SHA1 XXXXXXXX. Expected YYYYYYYY.md
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-It means the bundle is signed with a keystore that doesn’t match the one Google expects.
-
----
-
-## Why This Happens
-
-This issue usually occurs when:
-- The wrong keystore file was used during signing.
-- You uploaded a bundle signed in debug mode.
-- The app was previously deployed using a different keystore, and the current one doesn't match the expected SHA1.
-
----
-
-## How To Fix It
-
-### 1. Use the Correct Keystore File
-
-Verify that the **correct keystore file** (the one used when first publishing the app) is being used to sign your app.
-If you're unsure, contact support at [support@flutterflow.io](mailto:support@flutterflow.io).
-
-To generate a new keystore, use the following command:
-
-```bash
-keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
-```
-
-> ⚠️ **If the original keystore has been lost and the app is already published, contact [Google Play Support](https://support.google.com/googleplay/android-developer) for recovery options.**
-
----
-
-### 2. Verify `build.gradle` Is Properly Configured
-
-Ensure your project’s `build.gradle` file is updated according to the [Google Play signing documentation](https://developer.android.com/studio/publish/app-signing).
-
----
-
-### 3. Build in Release Mode
-
-Make sure you’re submitting a **release build** and not a debug version.
-
-- Debug builds are not optimized for production and use a debug keystore.
-- Check your build mode and switch to **Release Mode** before uploading.
-
-
-
\ No newline at end of file
diff --git a/docs/troubleshooting/google-play-store-deployment/How to Retrieve and Upload Your Keystore File in FlutterFlow for an Existing Google Play Project.md b/docs/troubleshooting/google-play-store-deployment/How to Retrieve and Upload Your Keystore File in FlutterFlow for an Existing Google Play Project.md
deleted file mode 100644
index 30fca800..00000000
--- a/docs/troubleshooting/google-play-store-deployment/How to Retrieve and Upload Your Keystore File in FlutterFlow for an Existing Google Play Project.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-keywords: ['upload', 'existing', 'file']
-slug: /upload-keystore-flutterflow-existing-google-play
-title: Uploading a Keystore to FlutterFlow for an Existing Google Play App
----
-# Uploading a Keystore to FlutterFlow for an Existing Google Play App
-
-## Introduction
-
-Publishing an updated version of your app using FlutterFlow can be a challenging task, especially when the app was initially published on Google Play using another platform.
-
-This guide walks you through the process of obtaining or resetting keys from Google Play, creating a new keystore on your local machine, uploading it to FlutterFlow, and successfully deploying the app to your existing Google Play project.
-
-If you run into any roadblocks, we recommend reaching out to Google Play support or FlutterFlow Support for further assistance.
-
-
-
-
-
-## Step 1: Create a New Keystore
-
-Open your command line and enter:
-```
-keytool -genkeypair -alias allyou -keyalg RSA -keysize 2048 -validity 10000 -keystore allyou.keystore
-```
-
-This creates `allyou.keystore` with an RSA key, a key size of 2048 bits, and a 10,000-day validity.
-
-## Step 2: Export the PEM Public Key
-
-Then run:
-```
-keytool -export -rfc -keystore allyou.keystore -alias allyou -file allyou.pem
-```
-
-This exports the public key to `allyou.pem`.
-
-## Step 3: Submit the PEM Key to Google Play
-
-Log in to Google Play Console and submit the `allyou.pem` file through the App Signing section.
-
-## Step 4: Wait for Approval
-
-Approval times vary, so check back regularly in your Google Play Console.
-
-## Step 5: Deploy to Google Play Using the Keystore
-
-Once approved, use your `allyou.keystore` when uploading the app via FlutterFlow.
-
----
-
-## Requesting a New Upload Key (If Necessary)
-
-If your original upload key is lost or compromised, you can request a new one.
-
-1. Log into Google Play Console
-2. Go to **Setup > App Integrity**
-3. Select **Request upload key reset**
-4. Follow on-screen instructions
-
-
-
-
-> **Note**: Only users with proper permissions can request this.
-
-Once Google approves, it takes about 48 hours to receive your new key.
-
-## After Receiving the New Upload Key
-
-You’ll typically receive a `.jks` or `.p12` file.
-
-### 1. Verify the Key
-
-Run:
-```
-keytool -list -v -keystore path/to/your_new_key.jks
-```
-
-### 2. Convert `.p12` to `.jks` (if needed)
-
-```
-keytool -importkeystore -srckeystore your-key.p12 -srcstoretype pkcs12 -destkeystore your-key.jks -deststoretype JKS
-```
-
-### 3. Upload to FlutterFlow
-
-Upload the `.jks` in the **Deploy > Android Settings** section in FlutterFlow. Provide the correct alias and passwords.
-
-
-
-
-Before releasing, do a test build to ensure everything works.
-
-
-
-## Conclusion
-
-Managing keystores is essential in app publishing. Always keep backups and record all passwords securely. If you lose your keystore, the update process becomes significantly more difficult.
-
-Contact FlutterFlow or Google Play Support if needed.
diff --git a/docs/troubleshooting/google-play-store-deployment/advertising_id_declaration_error_google_play.md b/docs/troubleshooting/google-play-store-deployment/advertising_id_declaration_error_google_play.md
deleted file mode 100644
index 03d6a175..00000000
--- a/docs/troubleshooting/google-play-store-deployment/advertising_id_declaration_error_google_play.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-keywords: ['android', 'release', 'error']
-slug: advertising-id-declaration-error-google-play
-title: Fix Advertising ID Declaration Error on Google Play
----
-
-# Fix Advertising ID Declaration Error on Google Play
-
-This error typically occurs when deploying your app through the Google Play Console. It indicates a mismatch between your app’s permissions and your Advertising ID declaration.
-
-## Problem
-
-You may encounter the following error:
-
-```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.
-```
-
-
-This issue can appear even if your app does not contain advertising content, especially when using libraries like Google Analytics that internally reference the advertising ID.
-
-## Cause
-
-The `com.google.android.gms.permission.AD_ID` permission is added automatically if you use services such as:
-
-- Google Analytics
-- Firebase
-- Any SDK referencing the advertising ID
-
-Even if you are not displaying ads, including these SDKs requires an explicit declaration in the Google Play Console.
-
-## Solution
-
-Follow these steps to update your Advertising ID declaration in the Play Console:
-
-1. **Open the Google Play Console**
- Navigate to your app project.
-
-2. **Go to App Content**
- From the left panel, scroll down to **Policy and Programs → App Content**.
-
-3. **Update Advertising ID Declaration**
- - Select **Advertising ID**
- - Click **Start**
-
- 
-
-4. **Answer Yes to Advertising ID Use**
- Even if your app doesn't use ads directly, select **Yes** to indicate use of the AD_ID permission for analytics.
-
- 
-
-5. **Select Analytics**
- Check the **Analytics** box under the section that asks how the Advertising ID is used.
-
-6. **Save Changes**
- Confirm and save the updated declaration.
-
-## Notes
-
-:::info
-If you use Google Analytics or similar services, you must declare the use of the Advertising ID, even if ads are not shown in the app.
-:::
-
-## Troubleshooting
-
-:::warning
-If the error persists after updating the declaration, contact FlutterFlow support via chat or email at [support@flutterflow.io](mailto:support@flutterflow.io).
-:::
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..80718db4
--- /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
index 9d1e5934..e29df5cf 100644
--- 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
@@ -1,54 +1,52 @@
---
keywords: ['error', 'deployment', 'build']
-slug: /apk-specifies-a-version-code-that-has-already-been-used
-title: APK Specifies a Version Code That Has Already Been Used
+slug: /fix-version-code-conflict-apk-upload
+title: Fix Version Code Conflict When Uploading APK to Google Play
---
-# APK Specifies a Version Code That Has Already Been Used
+# Fix Version Code Conflict When Uploading APK to Google Play
-This error occurs when the version code of the APK being deployed has already been used in a previous release. To successfully publish to the Google Play Store, each APK must have a unique version code.
-
-## Full Error Message
+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"}}
+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**.
-## What Causes This Error?
-
-This error means that the application build being uploaded uses a version code already published to Google Play. The version code must be updated before publishing a new build.
+:::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.
+:::
-## 1. Deploying Directly From FlutterFlow
+## Updating Version Code in FlutterFlow
-Navigate to:
+To resolve the issue when deploying directly from FlutterFlow:
-**Settings and Integrations → Mobile Deployment**
+ 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.
-- **App Version**: Sets the version name for the app (e.g., `1.0.0`). This is optional but required in some deployment cases.
-- **Build Number**: Each deployment must use a unique build number. Increase this by 1 with each deployment. If left blank, FlutterFlow will auto-increment it.
+ 3. Increase the **Build Number**. If left empty, FlutterFlow will increment it automatically.
-After updating both the version and build number from the previous release, redeploy the app.
+ 4. Save your changes and deploy again.
-## 2. Deploying From GitHub
+## Updating Version Code When Using GitHub
-Follow these steps to update the version manually:
+ If deploying through GitHub, follow these steps:
-1. Open the `pubspec.yaml` file.
-2. Locate the `version` line.
-3. Update it using the format:
- ```yaml
- version: 1.0.2+2
- ```
- The format is version_name+build_number.
-4. Run the following command in the terminal:
+ 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
- ```js
- flutter clean
- ```
-5. Rebuild the app using your standard build command.
- Use the latest Flutter version when deploying from GitHub to avoid compatibility issues.
+ 4. Run the following command to clean the build:
+ ```js
+ flutter clean
+ ```
-If the issue persists after updating both the version and build number, contact: support@flutterflow.io
\ No newline at end of file
+ 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..09d0d8c8
--- /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..ba3bbaad
--- /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..1468834e
--- /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/google-play-store-deployment/upload-keystore-flutterflow-2.md b/docs/troubleshooting/google-play-store-deployment/upload-keystore-flutterflow-2.md
deleted file mode 100644
index 30fca800..00000000
--- a/docs/troubleshooting/google-play-store-deployment/upload-keystore-flutterflow-2.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-keywords: ['upload', 'existing', 'file']
-slug: /upload-keystore-flutterflow-existing-google-play
-title: Uploading a Keystore to FlutterFlow for an Existing Google Play App
----
-# Uploading a Keystore to FlutterFlow for an Existing Google Play App
-
-## Introduction
-
-Publishing an updated version of your app using FlutterFlow can be a challenging task, especially when the app was initially published on Google Play using another platform.
-
-This guide walks you through the process of obtaining or resetting keys from Google Play, creating a new keystore on your local machine, uploading it to FlutterFlow, and successfully deploying the app to your existing Google Play project.
-
-If you run into any roadblocks, we recommend reaching out to Google Play support or FlutterFlow Support for further assistance.
-
-
-
-
-
-## Step 1: Create a New Keystore
-
-Open your command line and enter:
-```
-keytool -genkeypair -alias allyou -keyalg RSA -keysize 2048 -validity 10000 -keystore allyou.keystore
-```
-
-This creates `allyou.keystore` with an RSA key, a key size of 2048 bits, and a 10,000-day validity.
-
-## Step 2: Export the PEM Public Key
-
-Then run:
-```
-keytool -export -rfc -keystore allyou.keystore -alias allyou -file allyou.pem
-```
-
-This exports the public key to `allyou.pem`.
-
-## Step 3: Submit the PEM Key to Google Play
-
-Log in to Google Play Console and submit the `allyou.pem` file through the App Signing section.
-
-## Step 4: Wait for Approval
-
-Approval times vary, so check back regularly in your Google Play Console.
-
-## Step 5: Deploy to Google Play Using the Keystore
-
-Once approved, use your `allyou.keystore` when uploading the app via FlutterFlow.
-
----
-
-## Requesting a New Upload Key (If Necessary)
-
-If your original upload key is lost or compromised, you can request a new one.
-
-1. Log into Google Play Console
-2. Go to **Setup > App Integrity**
-3. Select **Request upload key reset**
-4. Follow on-screen instructions
-
-
-
-
-> **Note**: Only users with proper permissions can request this.
-
-Once Google approves, it takes about 48 hours to receive your new key.
-
-## After Receiving the New Upload Key
-
-You’ll typically receive a `.jks` or `.p12` file.
-
-### 1. Verify the Key
-
-Run:
-```
-keytool -list -v -keystore path/to/your_new_key.jks
-```
-
-### 2. Convert `.p12` to `.jks` (if needed)
-
-```
-keytool -importkeystore -srckeystore your-key.p12 -srcstoretype pkcs12 -destkeystore your-key.jks -deststoretype JKS
-```
-
-### 3. Upload to FlutterFlow
-
-Upload the `.jks` in the **Deploy > Android Settings** section in FlutterFlow. Provide the correct alias and passwords.
-
-
-
-
-Before releasing, do a test build to ensure everything works.
-
-
-
-## Conclusion
-
-Managing keystores is essential in app publishing. Always keep backups and record all passwords securely. If you lose your keystore, the update process becomes significantly more difficult.
-
-Contact FlutterFlow or Google Play Support if needed.
diff --git a/docs/troubleshooting/notifications/Send Notifications To A Specific Group Of Users.md b/docs/troubleshooting/notifications/Send Notifications To A Specific Group Of Users.md
deleted file mode 100644
index 8b3fef81..00000000
--- a/docs/troubleshooting/notifications/Send Notifications To A Specific Group Of Users.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-keywords: ['firebase', 'users', 'group']
-author: Unknown
-created_at: '1679151141'
-slug: /send-notifications-to-a-specific-group-of-users
-title: Send Notifications to a Specific Group of Users
-updated_at: '1711172233'
-url: null
----
-
-# Send Notifications to a Specific Group of Users
-
-## Introduction
-
-You can use FlutterFlow to trigger notifications to a filtered group of users based on attributes in your Firebase user collection. For example, you might want to send notifications only to users with a premium account when a new document (e.g., post) is created.
-
-This article provides step-by-step instructions to configure this logic in your FlutterFlow project.
-
-## :::info[Prerequisites]
-- Your project is connected to Firebase.
-- Push Notifications are enabled and deployed.
-- The project is on the Blaze plan.
-- The `firebase@flutterflow.io` service account has full access.
-- A user attribute (e.g., `isPremium`) exists in your `users` collection for filtering.
-:::
-
-## Sample Project
-
-Check out the [sample project](https://app.flutterflow.io/project/auto-notification-2bm5hz) that demonstrates this use case.
-
-## Steps to Send Notifications to a Specific Group
-
-1. **Query the Users Collection**
- - On your post submission button, add a **Backend Query** action.
- - Set **Query Type** to `Query Collection`.
- - Choose the `users` collection.
- - Set **Query Type** to `List of Documents`, then click **Save**.
-
-2. **Create the New Post Document**
- - Add a **Create Document** action to save the new post data to Firestore.
-
-3. **Trigger the Notification**
- - Add a **Trigger Notification** action after the document is created.
- - Set the **Notification Parameters** (e.g., Title, Message, Initial Page).
-
-4. **Filter the Recipients List**
- - Under **Recipients**, click **Unset** and choose **User Document** as the data source.
- - Select **Filter List Items**.
-
- :::note
- To filter users correctly, your `users` collection must include a boolean attribute (e.g., `isPremium`) or any similar field.
- :::
-
- - Under **Filter Conditions**, click **Unset**.
- - Select `Items in List`.
- - Choose the `isPremium` field and set the condition to `True`.
- - Click **Confirm** to apply the filter.
-
-5. **Map the Filtered List**
- - In the recipients dialog, select **Map List Items**.
- - Click **Unset** and select the `Reference` field under **Document Properties**.
- - Click **Confirm** to finalize the mapping.
-
-6. **Complete the Action Chain**
- - Close all pop-ups and save your workflow.
- - The notification will now be triggered automatically whenever a new post is submitted.
-
-## Summary
-
-This setup allows you to send targeted push notifications to specific groups of users based on custom attributes in your Firestore database. Make sure all backend queries and filtering logic are correctly configured for accurate targeting.
-
diff --git a/docs/troubleshooting/notifications/advanced_push_notification_troubleshooting.md b/docs/troubleshooting/notifications/advanced_push_notification_troubleshooting.md
deleted file mode 100644
index c86556ce..00000000
--- a/docs/troubleshooting/notifications/advanced_push_notification_troubleshooting.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-keywords: ['notification', 'firebase', 'troubleshooting']
-slug: /advanced-push-notification-troubleshooting
-title: Advanced Push Notification Troubleshooting
----
-
-# Advanced Push Notification Troubleshooting
-
-This guide outlines key steps to resolve common issues with push notifications in FlutterFlow.
-
-:::warning
-Push notifications will not work in the following cases:
-- When using an iOS simulator. Testing must be done on a real device.
-- If the user is not logged into the app.
-- If the app is currently open on the device.
-:::
-
-## 1. Confirm a Push Notification Key Is Created in Apple Developer Console
-
-Apple requires a push notification key to verify the sender. Navigate to:
-
-**Certificates, Identifiers & Profiles → Keys**
-
-
-
-If a key has not been created, one must be added.
-
-:::tip
-Refer to the [Apple documentation](https://developer.apple.com/account/resources/authkeys/list) for steps to create a push notification key.
-:::
-
-## 2. Verify the APN Key Is Uploaded to Firebase
-
-Open the Firebase Console, then go to:
-
-**Project Settings → Cloud Messaging**
-
-Scroll to the iOS section. If no file appears under **APNs Authentication Key**, upload the required key.
-
-
-
-:::tip
-See [Firebase instructions](https://firebase.google.com/docs/cloud-messaging/ios/client) for uploading the APN key.
-:::
-
-## 3. Add a Push Notification Identifier in Apple Developer Console
-
-Navigate to:
-
-**Certificates, Identifiers & Profiles → Identifiers**
-
-
-
-If no identifier is configured for push notifications, create one to enable iOS support post-deployment.
-
-:::tip
-Refer to the [Apple documentation](https://developer.apple.com/documentation/usernotifications/registering_your_app_with_apns) for creating an identifier.
-:::
-
-## 4. Ensure FlutterFlow Is Up to Date
-
-Update FlutterFlow by pressing:
-
-- `Ctrl + R` on Windows
-- `Cmd + R` on Mac
-
-After refreshing, clear your browser cache and log back into FlutterFlow.
diff --git a/docs/troubleshooting/notifications/enable-ios-push-notifications-for-ios-devices.md b/docs/troubleshooting/notifications/enable-ios-push-notifications-for-ios-devices.md
new file mode 100644
index 00000000..c2cc2c96
--- /dev/null
+++ b/docs/troubleshooting/notifications/enable-ios-push-notifications-for-ios-devices.md
@@ -0,0 +1,76 @@
+---
+keywords: ['notification', 'firebase', 'ios', 'push']
+slug: /enable-ios-push-notifications-for-ios-devices
+title: Enable Push Notifications for iOS Devices
+---
+
+# Enable Push Notifications for iOS Devices
+
+This guide outlines the steps required to ensure push notifications work correctly on iOS devices.
+
+:::info[Prerequisites]
+- A registered Apple Developer account
+- An app integrated with Firebase
+- A real iOS device for testing (not a simulator)
+:::
+
+:::warning
+Push notifications will **not** work in the following situations:
+
+- The app is running on an iOS simulator.
+- The user is not logged in to the app.
+- The app is currently open on the device.
+:::
+
+Follow the steps below to enable push Notifications for iOS Devices:
+
+1. **Create an APNs Authentication Key in Apple Developer Account**
+
+ To send push notifications to iOS devices, Apple requires an APNs key.
+
+ 1. Log in to your **[Apple Developer Account](https://developer.apple.com/account)**.
+ 2. Navigate to **Certificates, Identifiers & Profiles > Keys**.
+ 3. If no push key is listed, create one.
+
+ 
+
+ :::tip
+ Make sure to download the `.p8` file and note your **Key ID** and **Team ID** after generating the key.
+ :::
+2. **Upload the APNs Key to Firebase**
+
+ 1. Go to your **[Firebase Console](https://console.firebase.google.com/)** and open your project.
+ 2. Navigate to **Project Settings > Cloud Messaging**.
+ 3. Scroll to the **iOS app configuration** section.
+ 4. If no APNs key is listed, upload the `.p8` file you downloaded earlier.
+
+ 
+
+ :::tip
+ This step connects your Firebase backend to Apple’s notification system.
+ :::
+
+3. **Add a Push Notification Identifier**
+
+ 1. Log back in to your **[Apple Developer Account](https://developer.apple.com/account)**.
+ 2. Navigate to **Certificates, Identifiers & Profiles > Identifiers**.
+ 3. Select your app’s identifier.
+ 4. Enable the **Push Notifications** capability.
+
+ 
+
+ If this step is skipped, push notifications will not be delivered to iOS devices after deployment.
+
+4. **Refresh Your FlutterFlow Workspace**
+
+ To ensure your environment reflects the latest settings:
+
+ - Press `Ctrl + R` (Windows) or `Cmd + R` (Mac) to refresh the FlutterFlow editor.
+ - Clear your browser cache.
+ - Log out and log back in.
+
+:::note
+- Ensure your app permissions for notifications are enabled under **iOS Settings > Notifications**.
+- Always test push notifications on a **real device** after deployment.
+- Ensure that Firebase Cloud Messaging is correctly set up and linked to your project.
+:::
\ No newline at end of file
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..aa6ff98e
--- /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](/notifications/push-notifications)** 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..dcc7f34a
--- /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/overview)**
+
+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/test-mode/Can't see Text when using my app on mobile devices, but Text is visible in RUNTEST mode..md b/docs/troubleshooting/test-mode/Can't see Text when using my app on mobile devices, but Text is visible in RUNTEST mode..md
deleted file mode 100644
index 9168cfc6..00000000
--- a/docs/troubleshooting/test-mode/Can't see Text when using my app on mobile devices, but Text is visible in RUNTEST mode..md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-keywords: ['mode', 'mobile', 'text']
-author: Unknown
-created_at: '1677758942'
-slug: /can-t-see-text-when-using-my-app-on-mobile-devices-but-text-is-visible-in-runtest-mode
-title: Can't see Text when using my app on mobile devices, but Text is visible in RUN/TEST mode.
-updated_at: '1678232534'
-url: https://intercom.help/flutterflow/en/articles/7044347-can-t-see-text-when-using-my-app-on-mobile-devices-but-text-is-visible-in-run-test-mode
----
-
-# Can't See Text When Using My App on Mobile Devices, But Text Is Visible in RUN/TEST Mode
-
----
-
-## Issue
-
-Text widgets are not appearing when the app is tested on a real mobile device, but they are visible in FlutterFlow's **Run/Test Mode**.
-
-
-
----
-
-## Troubleshooting This Issue
-
-If you're experiencing this issue, investigate the following potential causes:
-
----
-
-### ✅ Check Light/Dark Mode Text Colors
-
-The text might be using a color that blends with the background, especially in **dark mode**. To fix this:
-
-1. Navigate to **Settings → Theme → Colors**
-2. Review both light and dark mode color schemes.
-3. Adjust text and background colors to ensure visibility.
-
-
-
-Alternatively, disable dark mode if it’s not needed.
-
----
-
-### ✅ Ensure No Translations Have Been Missed
-
-When translations are missing, text may appear blank in non-default language settings.
-
-#### Fix it by:
-- Using FlutterFlow’s **automatic translator** to ensure translations exist for all languages.
-- Manually checking for empty translation fields.
-
-
-
-
----
-
-By addressing both text color visibility and missing translations, you should be able to resolve the issue of disappearing text on real devices.
diff --git a/docs/troubleshooting/test-mode/Missing Purpose String in Info.plist.md b/docs/troubleshooting/test-mode/Missing Purpose String in Info.plist.md
deleted file mode 100644
index 1d4063b1..00000000
--- a/docs/troubleshooting/test-mode/Missing Purpose String in Info.plist.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-keywords: ['permissions', 'error', 'missing']
-slug: /missing-purpose-string-in-info-plist
-title: Missing Purpose String in Info.plist
----
-
-# Missing Purpose String in Info.plist
-
-If you're seeing the following error while submitting your iOS app, it means your app is referencing APIs that access sensitive user data, but your `Info.plist` file doesn't include a clear explanation (purpose string) for using that data.
-
-> **ITMS-90683: Missing Purpose String in Info.plist**
-> Your app‘s code references one or more APIs that access sensitive user data. The app‘s Info.plist file should contain a [permission] key with a user-facing purpose string explaining clearly and completely why your app needs the data. This includes permissions required by external libraries or SDKs.
-
----
-
-## Why This Happens
-
-Apple requires a **user-facing explanation** (a “purpose string”) in your app’s `Info.plist` for each permission your app—or any integrated SDK—requests. Without these, your app will be rejected during submission.
-
----
-
-## How to Fix It
-
-### 1. Identify Required Permissions
-
-Review your app’s functionality and identify any features that access:
-
-- Camera
-- Microphone
-- Location
-- Photo library
-- Contacts
-- Calendars
-- Bluetooth, etc.
-
-### 2. Go to FlutterFlow Settings
-
-- Open your project in **FlutterFlow**
-- Navigate to **Settings > Permissions**
-
-### 3. Add Purpose Strings
-
-For each permission your app uses:
-
-- Enable the permission toggle
-- Add a **clear, descriptive explanation** of how the app uses that feature
-
-> Example:
-> **NSMicrophoneUsageDescription**
-> _“We use your microphone so you can record and send audio notes.”_
-
-> **NSPhotoLibraryUsageDescription**
-> _“This app requires access to your photo library to let you upload images.”_
-
-
-
-### 4. Follow Apple’s Guidelines
-
-- Keep your descriptions **user-friendly**
-- Be **honest and specific**
-- Avoid vague language like “we need this permission for app functionality”
-
-### 5. Test Your App
-
-- Run your app on a physical iOS device
-- Ensure permission prompts appear
-- Confirm your purpose strings are visible and appropriate
-
----
-
-## Why It Matters
-
-Providing a transparent explanation for data access builds user **trust** and improves the **likelihood of permission approval**. It’s also an Apple App Store requirement.
-
-
-
----
-
-## Summary
-
-✅ Always add a purpose string in `Info.plist` for **every permission your app (or its SDKs) may access**
-✅ Use clear, respectful, and honest language
-✅ Test all permission flows before app submission
-
-If you’ve done all of this and the error persists, feel free to contact FlutterFlow support for additional help.
diff --git a/docs/troubleshooting/test-mode/My app colors aren't correct when running my application on a real device.md b/docs/troubleshooting/test-mode/My app colors aren't correct when running my application on a real device.md
deleted file mode 100644
index c2783e6c..00000000
--- a/docs/troubleshooting/test-mode/My app colors aren't correct when running my application on a real device.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-keywords: ['application', 'device', 'real']
-slug: /my-app-colors-aren-t-correct-when-running-my-application-on-a-real-device
-title: My App Colors Aren't Correct When Running My Application on a Real Device
----
-
-# My App Colors Aren't Correct When Running My Application on a 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**.
-
-## Common Cause
-
-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.
-
-## How to Fix
-
-### 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
-
-## Summary
-
-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/test-mode/Test Mode Won\342\200\231t Load.md" "b/docs/troubleshooting/test-mode/Test Mode Won\342\200\231t Load.md"
deleted file mode 100644
index bd33fb5f..00000000
--- "a/docs/troubleshooting/test-mode/Test Mode Won\342\200\231t Load.md"
+++ /dev/null
@@ -1,129 +0,0 @@
----
-keywords: ['mode', 'load', 'test']
-author: Unknown
-created_at: '1710854314'
-slug: /test-mode-won-t-load
-title: Test Mode Won’t Load
-updated_at: '1712594564'
-url: https://intercom.help/flutterflow/en/articles/9089262-test-mode-won-t-load
----
-# Test Mode Won’t Load
-
-Introduction
-When developing applications with Flutter, encountering a red screen filled with errors during the test mode is a common challenge. This issue, while alarming at first glance, often stems from a range of causes such as bugs in the code or misconfigurations within the project. To help you navigate through this problem and restore functionality to your test mode, this guide will explore all potential causes and scenarios that might lead to these errors.
-
-Scenarios You May Encounter
-There are several cases that can lead to trouble loading test mode – resulting in a red screen, or even displaying a blank page when testing your project.
-
-**1. Test Mode Infinite Loading**
-
-Service Outage
-When a service outage is experienced, it may cause Test Run to load for a long time.
-To verify this is not a global service outage, test `Test mode` the service with a different project. If this affects more than two different projects, please report this **immediately** to support@flutterflow.io
-
-Custom code method that runs an unsupported implementation (not supported on the web) in the main.dart file
-
-Running a custom code that is not supported on the web platform will result in an Infinite load in test mode
-
-To identify this, open the developer's console and check the logs shown
-
-To open the Console log, use **Option + ⌘ + J** (on macOS) or Shift + CTRL + J (on Windows/Linux). The console will either open up within your existing Chrome window, or in a new window. You may have to select the Console tab.
-
-
-
-
-The plugin causing the error will be indicated in the logs; verify whether the plugin is supported for the web on `pub.dev`. If the plugin used is not supported, you can look for an alternative plugin, here grouped in categories.
-
-To prevent other platform implementation exceptions, check the supported platforms for every third-party library that you are using in the project.
-
-
-
-2. Red Screen – Null Pointer Exceptions
-Accessing null values in the project can also result in a red screen. This could be coming from:
-
-Trying to access a wrong API JSON path
-
-When an API response returns an empty/null value that is passed to a list.
-
-When Page parameters are not passed but used in the destination page
-
-Null values from custom action/function output used in the widgets.
-
-Developed/designed `User Interface` trying to access null values from a database or API
-
-Custom Code trying to access null values that were passed as parameter
-
-Opening the browser console log will help you to point to the page that is causing the error. However, this doesn’t show the actual line of code or the variable that is throwing the error.
-
-
-
-To effectively identify the value that is causing the issue, it is recommended that you download the code and run it locally. You can follow these steps:
-
-Download your code from FlutterFlow
-
-Open the downloaded project in your preferred IDE ( We recommend VS Code – it provides great logs for debugging)
-
-Run the app on your device – make sure you have a Flutter environment set up on your local device and the Flutter SDK is of the same version as the Flutter Version shown in FlutterFlow Builder! (Here are steps for Windows , MacOS, or UNIX .
-
-
-
-The VS Code debugger will break the code execution where the error is, and you can use this information to identify the variable that is injecting a null value to the User interface.
-
-You will need to check the `Breakpoints` `uncaught exception`s in Vscode so that the code execution stops at the line where the bug is.
-
-**Tip**: In some cases, you might have a number of errors in your project. This will result in a number of code execution blocks when the breakpoints are enabled. To effectively identify the null pointer exception, we recommend only enabling the breakpoints just before you navigate to the page that was throwing the error.
-
-
-
-3. Red Screen Error - Type Exception
-Assigning the wrong data type can also result in a red screen when compiling your project in test mode. This can result when;
-
-Trying to assign a wrong type from the API JSON path to a widget or a variable that takes in a different data type than the supplied type
-
-Wrong data type from custom code output
-
-```
-TIP: Note that some type exceptions, like double/int, may not appear in test mode but will when running the project locally. This is because in test mode, the code is compiled to javascript, which is not type sensitive, While dart, which is run on the mobile device, is type strict language
-```
-
-
-
-```
-NOTE: In most cases also this type of exception, it is recommended to download the code locally. Check the steps in the Red screen - Null Pointer Exceptions
-```
-
-4. Build Errors: Test Mode won't Compile (Applies also for Run Mode)
-A number of build failed/ compile errors are a result of bugs in the project. This can result when;
-
-The project has errors in the project that are not shown by the project analyzer
-
-Wrong data type assignment in Builder widgets,i.e., assigning an integer to a label
-
-
-
-Using an Incompatible third-party plugin in the project
-
-Code generation error (report to support for investigation)
-
-If your project shows no compile errors in the builder but cannot be built successfully, please contact the support team for assistance.
-
-5. Blank Screen on Specific Pages While Running Test Mode
-Test mode runs may compile successfully; however, when you navigate to some of your pages in the project, they are blank. This can result because of ;
-
-Wrong flex assignment in the project: This kind of case will result in UI render box constraint issues shown in the console log. To troubleshoot this, we recommend downloading the project locally and navigating to the page that is not showing the content. The debugger will log the actual line number that is causing this render box paint error.
-
-The most common widgets to check that cause this error are Rows With containers / wrapped with containers and scrollable columns.
-
-6. Bonus (Other Known Issues)
-In some cases, the Test mode run may fail due to minor user faults. In these cases, it is recommended to check these steps when troubleshooting the issue
-
-Make sure they read the troubleshooting notes in the test mode in the top left side of the windows
-
-
-
-Make sure to do a TEST build from the same project and check the result
-
-Open the test mode in the same browser that you are logged in to Flutterflow in
-
-Check the custom codes. There could be packages that are not supported on the web in their custom code
-
diff --git a/docs/troubleshooting/test-mode/app-colors-wrong-on-real-device.md b/docs/troubleshooting/test-mode/app-colors-wrong-on-real-device.md
new file mode 100644
index 00000000..862193b9
--- /dev/null
+++ b/docs/troubleshooting/test-mode/app-colors-wrong-on-real-device.md
@@ -0,0 +1,37 @@
+---
+keywords: ['application', 'device', 'real']
+Slug: /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/test-mode/clear_database_before_running_tests.md b/docs/troubleshooting/test-mode/clear_database_before_running_tests.md
index bb96a579..914b64d7 100644
--- a/docs/troubleshooting/test-mode/clear_database_before_running_tests.md
+++ b/docs/troubleshooting/test-mode/clear_database_before_running_tests.md
@@ -1,28 +1,45 @@
---
-keywords: ['database', 'clear', 'before']
-slug: clear-database-before-running-tests
-title: Clear Database Before Running Tests
+keywords: ['database', 'clear', 'testing']
+slug: troubleshooting/test-mode/prepare-database-before-tests
+title: Prepare Database Before Running Tests
---
-# Clear Database Before Running Tests
+# Prepare Database Before Running Tests
-When testing or developing your application, previously added records in your database can lead to inconsistencies if the data schema has changed.
+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.
-## Problem
+## The Issue with Outdated Records
-As your app evolves, you may add new fields to your database collections. Older records might not include these new fields. When the app expects those fields and they are missing, it can lead to errors or unexpected behavior.
+As new fields are introduced to collections, existing records may become incomplete. This can cause:
-## Solution
+ - Runtime errors
+ - Inconsistent or missing UI elements
+ - Unexpected test behavior or broken features
-:::tip
-Clear your database before running significant tests or after making changes to the data schema. This ensures all records follow the latest structure and prevents issues with missing data.
+:::info[Prerequisites]
+Ensure that you have access to the Firestore database and understand the current schema changes made in the project.
:::
-## Example Scenario
+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.
-1. A new field such as `profilePicture` is added to a collection.
-2. Older records do not contain this field.
-3. The app expects the `profilePicture` field for all records.
-4. Attempting to display or process old records results in errors or incomplete data.
+Here is an example scenario:
-To resolve this, either update all records to match the new schema or remove outdated entries before running tests or deploying the app.
+ 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..124fd1f2
--- /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..fe0776ce
--- /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..2b41b56f
--- /dev/null
+++ b/docs/troubleshooting/test-mode/resolve-build-failed-error-run-test-mode.md
@@ -0,0 +1,52 @@
+---
+keywords: ['error', 'build', 'failed']
+slug: /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.
+
+ :::note[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.
+ :::
\ 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.
diff --git a/docs/troubleshooting/test-mode/svg_image_missing_color_on_real_device.md b/docs/troubleshooting/test-mode/svg_image_missing_color_on_real_device.md
deleted file mode 100644
index c623c731..00000000
--- a/docs/troubleshooting/test-mode/svg_image_missing_color_on_real_device.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-keywords: ['svg', 'images', 'mobile', 'color']
-slug: svg-image-missing-color-mobile
-title: SVG Image Missing Color on Real Device
----
-
-# SVG Image Missing Color on Real Device
-
-Your SVG images may appear correctly on the web but lose their colors when viewed on a physical mobile device. This guide walks through potential causes and solutions.
-
-## Problem
-
-SVG images render correctly on the web, but when viewed on an actual mobile device, the colors do not appear as expected or are completely missing.
-
-## Common Causes
-
-- **Unsupported color modes**: Devices may not support certain modes like CMYK. Use RGB for best compatibility.
-- **Missing color attributes**: If `fill` or `stroke` values are not defined, the image might appear colorless.
-- **Incorrect display attributes**: Attributes like `display: none;` can prevent parts of the SVG from rendering.
-- **Improper embedding or file path**: The SVG might not be correctly linked or referenced in the project.
-- **Device color settings**: Display settings such as grayscale or color filters may affect SVG rendering.
-
-## Troubleshooting Steps
-
-1. **Test with another SVG**
- Swap in a different SVG file to check if the issue is file-specific.
-
-2. **Inspect the SVG in a text editor**
- Confirm the presence of `fill` and `stroke` attributes and ensure valid color values are set.
-
-3. **Open SVG in a mobile browser**
- See if the issue is specific to the app or also appears in the browser.
-
-4. **Check mobile display settings**
- Ensure the device's display is not applying grayscale or color filters.
-
-5. **Try alternative software for exporting SVG**
- If you're exporting from a design tool, experiment with different settings or software to preserve color information.
-
-## Summary
-
-SVG rendering issues on real devices are often due to file structure or device compatibility. Testing with multiple tools and verifying proper color attributes in your SVG file can help resolve this issue.
From 5fa6aa06378c75c85cfc4c557603676ded8948f7 Mon Sep 17 00:00:00 2001
From: mrdavidorok
Date: Thu, 31 Jul 2025 18:59:04 +0100
Subject: [PATCH 03/12] abridged files from new standlone articles and placed
them in suitable articles by properly consolidating them
---
...nable_image_upload_in_webview_on_device.md | 37 --------------
...r-message-for-invalid-login-credentials.md | 30 ------------
.../file-handling/displaying-media.md | 11 +++++
...g-data-types-in-app-state-variable-list.md | 26 ----------
.../firebase-auth/auth-actions.md | 23 +++++++++
.../convert-device-location-to-address.md | 0
docs/generated-code/state-mgmt-gen-code.md | 20 ++++++++
...onboarding-completion-before-navigation.md | 43 -----------------
docs/intro/ff-ui/builder.md | 23 ++++++++-
docs/intro/ff-ui/canvas.md | 18 +++++++
...mbed-a-flutterflow-web-app-in-an-iframe.md | 41 ----------------
...act-of-editor-performance-on-app-builds.md | 48 -------------------
.../update-user-record-from-email-input.md | 0
.../create-a-submenu-using-local-state.md | 0
.../data-representation/app-state.md | 19 ++++++++
...board-permissions-for-widget-copy-paste.md | 22 ---------
.../ui/widgets/basic-widgets/text.md | 37 ++++++++++++++
.../wrap-text-inside-containers.md | 44 -----------------
.../publishing/web-publishing.md | 27 +++++++++++
19 files changed, 177 insertions(+), 292 deletions(-)
delete mode 100644 docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md
delete mode 100644 docs/ff-concepts/alerts/display-error-message-for-invalid-login-credentials.md
delete mode 100644 docs/ff-concepts/state-management/missing-data-types-in-app-state-variable-list.md
rename docs/{resources/control-flow/backend-logic/backend-query => ff-integrations/maps}/convert-device-location-to-address.md (100%)
delete mode 100644 docs/intro/before-you-begin/check-onboarding-completion-before-navigation.md
delete mode 100644 docs/intro/ff-ui/embed-a-flutterflow-web-app-in-an-iframe.md
delete mode 100644 docs/intro/ff-ui/understand-the-impact-of-editor-performance-on-app-builds.md
rename docs/resources/control-flow/{user-interactivity => backend-logic/backend-query}/update-user-record-from-email-input.md (100%)
rename docs/resources/{ui/widgets/basic-widgets => control-flow}/create-a-submenu-using-local-state.md (100%)
delete mode 100644 docs/resources/ui/widgets/basic-widgets/fix-clipboard-permissions-for-widget-copy-paste.md
delete mode 100644 docs/resources/ui/widgets/basic-widgets/wrap-text-inside-containers.md
diff --git a/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md b/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md
deleted file mode 100644
index 7d5c5947..00000000
--- a/docs/ff-concepts/adding-customization/enable_image_upload_in_webview_on_device.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-keywords: ['permissions', 'upload', 'webview', 'image']
-slug: enable-image-upload-in-webview-on-real-devices
-title: Enable Image Upload in WebView on Real Devices
----
-
-## Enable Image Upload in WebView on Real Devices
-
-Image uploads may function correctly in Run/Test mode but fail on real devices due to missing runtime permissions required for accessing the photo library. This document outlines the steps to resolve this issue.
-
-In web preview mode, the browser handles permissions, allowing image uploads to proceed without specific configurations. However, when deploying to physical Android or iOS devices, explicit runtime permissions are necessary to access the device's photo library. If image upload functionality is embedded within a **WebView**, FlutterFlow does not automatically detect this requirement and therefore does not request the required permissions during the build process.
-
-To enable image uploads from a **WebView** on a physical device, follow these steps:
-
-1. **Enable Photo Library Permission:**
-
- Navigate to **Settings > [Permissions](/settings-and-integrations/mobile-deployment/permissions)** in your FlutterFlow project and enable the **Photo Library** permission.
-
- 
-
-2. **Request Permission at Runtime:**
- Before initiating the image upload action inside the **WebView**, add a **[Get Permission](/actions/widget-actions/permissions/get-permission)** action. Configure this action to explicitly request access to the **Photo Library**. This action should typically be placed on a button tap or an equivalent user interaction that precedes the upload.
-
- 
-
-3. **Reinstall the Application:**
-
- After adding and configuring the permission, it is crucial to re-deploy your application to the device:
- * Uninstall any existing versions of the app from the target device.
- * Clear the app's cache (if applicable).
- * Reinstall the updated application. This step ensures that the permission prompt appears when the app is launched for the first time or when the `Get Permission` action is triggered.
-
- :::warning
- If the permission dialog does not appear on the first launch or when the `Get Permission` action is triggered, the app will not have access to the photo library, and uploads inside the **WebView** will fail. Users may need to manually enable the permission through their device's app settings.
- :::
-
-Once permissions are correctly granted, image uploads initiated from within the **WebView** will function as expected on physical devices.
diff --git a/docs/ff-concepts/alerts/display-error-message-for-invalid-login-credentials.md b/docs/ff-concepts/alerts/display-error-message-for-invalid-login-credentials.md
deleted file mode 100644
index 578720bc..00000000
--- a/docs/ff-concepts/alerts/display-error-message-for-invalid-login-credentials.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-keywords: ['login', 'authentication', 'snackbar', 'error']
-slug: /display-error-message-for-invalid-login-credentials
-title: Display Error Message for Invalid Login Credentials
----
-
-# Display Error Message for 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.
-
-**Customize the SnackBar (Optional)**
-
- To add custom logic or change the appearance:
-
- 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.
-
-:::tip
-There is no need to manually add alert dialogs for failed login attempts. FlutterFlow handles `SnackBar` display automatically when authentication fails.
-:::
-
-:::note
-To customize the `SnackBar` further, use the **Action Output** and attach additional logic based on the error string.
-:::
\ No newline at end of file
diff --git a/docs/ff-concepts/file-handling/displaying-media.md b/docs/ff-concepts/file-handling/displaying-media.md
index 7adef3fb..dd393909 100644
--- a/docs/ff-concepts/file-handling/displaying-media.md
+++ b/docs/ff-concepts/file-handling/displaying-media.md
@@ -50,6 +50,17 @@ For more details on how assets are stored in your project, see the directory [**
You can also access media files within your app that are stored temporarily in your application. For example, if you'd like to preview an image before sending it to cloud storage, you can do so by setting the source to **Widget State -> Uploaded Local File**.
+:::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
diff --git a/docs/ff-concepts/state-management/missing-data-types-in-app-state-variable-list.md b/docs/ff-concepts/state-management/missing-data-types-in-app-state-variable-list.md
deleted file mode 100644
index 0c6322d6..00000000
--- a/docs/ff-concepts/state-management/missing-data-types-in-app-state-variable-list.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-keywords: ['list', 'missing', 'state']
-slug: /missing-data-types-in-app-state-variable-list
-title: Missing Data Types in App State Variable List
----
-
-# Missing Data Types in App State Variable List
-
-When creating an **App State Variable** in FlutterFlow, you should see a list of available data types. However, in some cases—especially in older projects—these data types may not appear.
-
-This issue is typically caused by the **Deep Linking** setting being turned off in your project. If Deep Linking is disabled, the data type selection list may not populate correctly.
-
-Follow the steps below to enable Deep Linking and restore the missing data types:
-
- 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.
-
- 
-
- After enabling Deep Linking, the list of data types should now be visible when adding or editing an App State Variable.
-
- :::note
- This fix is particularly effective for older projects where the setting may be disabled by default.
- :::
\ No newline at end of file
diff --git a/docs/ff-integrations/authentication/firebase-auth/auth-actions.md b/docs/ff-integrations/authentication/firebase-auth/auth-actions.md
index 1dc7bc27..ef7e1751 100644
--- a/docs/ff-integrations/authentication/firebase-auth/auth-actions.md
+++ b/docs/ff-integrations/authentication/firebase-auth/auth-actions.md
@@ -22,6 +22,29 @@ Follow the steps below to add this action:

+## 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/resources/control-flow/backend-logic/backend-query/convert-device-location-to-address.md b/docs/ff-integrations/maps/convert-device-location-to-address.md
similarity index 100%
rename from docs/resources/control-flow/backend-logic/backend-query/convert-device-location-to-address.md
rename to docs/ff-integrations/maps/convert-device-location-to-address.md
diff --git a/docs/generated-code/state-mgmt-gen-code.md b/docs/generated-code/state-mgmt-gen-code.md
index c8f20237..db04d955 100644
--- a/docs/generated-code/state-mgmt-gen-code.md
+++ b/docs/generated-code/state-mgmt-gen-code.md
@@ -73,6 +73,26 @@ 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.
:::
+## Example: Check Onboarding Completion Using App State
+
+Use a persisted app state variable to ensure users complete onboarding before accessing certain parts of your app (e.g., home screen, checkout).
+
+Follow the steps below:
+
+ 1. **Create a Boolean Variable**
+ - Go to **App Settings > State Management > Persisted Values**.
+ - Create a boolean variable like `hasCompletedOnboarding`, default: `false`.
+
+ 2. **Update After Onboarding**
+ - On the final onboarding screen, add an **Update Persisted Value** action to set `hasCompletedOnboarding = true`.
+
+ 3. **Add Conditional Navigation**
+ - On the target page’s **Page Load**, add a **Conditional Action**:
+ - If `hasCompletedOnboarding == false` → Navigate to the onboarding page.
+
+ :::tip
+ Use `Local State` for session-only checks; use `Persisted` for cross-session logic.
+ :::
## Global State
diff --git a/docs/intro/before-you-begin/check-onboarding-completion-before-navigation.md b/docs/intro/before-you-begin/check-onboarding-completion-before-navigation.md
deleted file mode 100644
index f7966bb5..00000000
--- a/docs/intro/before-you-begin/check-onboarding-completion-before-navigation.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-keywords: ['onboarding', 'state management', 'navigation']
-slug: /check-onboarding-completion-before-navigation
-title: Check Onboarding Completion Before Navigation
----
-
-# Check Onboarding Completion Before Navigation
-
-This article describes how to validate whether a user has completed onboarding before proceeding to subsequent screens or actions.
-
-To enhance user experience and enforce onboarding completion, you can set up a check that redirects users who haven’t finished onboarding. This is especially helpful before allowing users to:
-
- - Access the home screen
- - Proceed to checkout
- - Use key features in the app
-
-Follow the steps below:
-
- 1. **Create a Persisted Boolean Variable**
- - Navigate to **App Settings > State Management > Persisted Values**.
- - Create a new boolean variable (e.g., `hasCompletedOnboarding`) and set its default to `false`.
-
- 2. **Update the Variable After Onboarding**
- - At the final step of your onboarding flow, add an **Action > Update Persisted Value**.
- - Set `hasCompletedOnboarding` to `true`.
-
- 3. **Add a Check on Page Load**
- - On the main screen (e.g., Home or Checkout), open the **Page Load** action.
- - Add a **Conditional Action**:
- - **If** `hasCompletedOnboarding == false`
- - **Then** navigate to the onboarding page.
-
- 4. **Prevent Navigation Without Onboarding**
- - Apply similar checks to buttons or flows that require onboarding completion.
-
- :::tip
- Use `Local State` when you need to check onboarding status only during the session. For persistent checks across sessions or logins, use `Persisted Values`.
- :::
-
- :::note
- - You can enhance onboarding with tooltips, highlights, and walkthrough modals using the **Onboarding Components**.
- - Consider tracking completion events using **Firebase Analytics** for additional insights.
- :::
\ No newline at end of file
diff --git a/docs/intro/ff-ui/builder.md b/docs/intro/ff-ui/builder.md
index ef411a38..d1966e72 100644
--- a/docs/intro/ff-ui/builder.md
+++ b/docs/intro/ff-ui/builder.md
@@ -13,6 +13,26 @@ keywords: [App Builder, FlutterFlow, UI, Design]
On opening the project, you'll see the App Builder, which consists of four main sections:
[Navigation Menu](#navigation-menu), [Toolbar](#toolbar), [Canvas](#canvas-area), and [Properties Panel](#properties-panel).
+:::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
@@ -54,4 +74,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..3cae74fb 100644
--- a/docs/intro/ff-ui/canvas.md
+++ b/docs/intro/ff-ui/canvas.md
@@ -18,6 +18,24 @@ It allows zoom level adjustments and previews in light or dark mode. It also inc
This is the canvas of the device screen where you can build the user interface. You can customize the screen by adding widgets using drag and drop from the [Widget Palette](../../intro/ff-ui/widget-palette.md) and by applying properties present in the [Properties Panel](../../intro/ff-ui/builder.md#properties-panel).
+### Troubleshooting Copy-Paste Issues
+
+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.
+ :::
+
+
## Show or hide Navigation Menu
From here, you can open or close the
diff --git a/docs/intro/ff-ui/embed-a-flutterflow-web-app-in-an-iframe.md b/docs/intro/ff-ui/embed-a-flutterflow-web-app-in-an-iframe.md
deleted file mode 100644
index ab3dc109..00000000
--- a/docs/intro/ff-ui/embed-a-flutterflow-web-app-in-an-iframe.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-keywords: ['embed', 'iframe', 'web app', 'flutterflow']
-slug: /embed-a-flutterflow-web-app-in-an-iframe
-title: Embed a FlutterFlow Web App in an Iframe
----
-
-# Embed a FlutterFlow Web App in an Iframe
-
-Embedding a FlutterFlow web application inside an `iframe` is technically possible, but it may not always work as expected due to browser security restrictions and FlutterFlow’s use of `localStorage`.
-
-:::warning
-Embedding a FlutterFlow web app in an `iframe` may result in **incomplete functionality** or loading issues—particularly if third-party cookies are disabled in the browser.
-:::
-
-Follow the steps below to embed a Web App in an Iframe:
-
- 1. **Enable Third-Party Cookies**
- Ensure that third-party cookies are allowed in the browser for the FlutterFlow app’s domain. This is critical for `localStorage` access inside the iframe.
-
- 2. **Embed the Iframe Code**
- Use the following HTML snippet in your host page to embed the FlutterFlow app:
-
- ```html
-
-
- 
-
- Replace `https://your-flutterflow-app.web.app` with the actual hosted URL of your FlutterFlow web app.
-
-:::note
-- Some features in your app might not function properly when embedded in an iframe, especially those that rely on session storage or local storage.
-
-- Security policies like `X-Frame-Options` or `Content-Security-Policy` headers can also prevent embedding.
-
-- Many platforms (e.g., Google, LinkedIn) disallow embedding their apps in iframes to prevent clickjacking and other attacks.
-:::
\ No newline at end of file
diff --git a/docs/intro/ff-ui/understand-the-impact-of-editor-performance-on-app-builds.md b/docs/intro/ff-ui/understand-the-impact-of-editor-performance-on-app-builds.md
deleted file mode 100644
index a623125c..00000000
--- a/docs/intro/ff-ui/understand-the-impact-of-editor-performance-on-app-builds.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-keywords: ['editor', 'performance', 'app speed']
-slug: /understand-the-impact-of-editor-performance-on-app-builds
-title: Understand the Impact of Editor Performance on App Builds
----
-
-# Understand the Impact of Editor Performance on App Builds
-
-When developing applications using FlutterFlow, the editor may occasionally experience slow performance, especially when working with large projects. However, this does not affect the performance of the final app build.
-
-## Editor Performance vs. App Performance
-
- FlutterFlow uses a visual interface to generate clean and structured Dart code in the background. While some users may experience delays or UI lag in the FlutterFlow editor, especially when working on complex projects, these editor-side issues do not impact the compiled app’s runtime behavior or performance.
-
- A helpful analogy is graphic design software: if Adobe Photoshop runs slowly on your computer, it doesn’t make the images blurry. Similarly, FlutterFlow editor lag does not degrade the quality or speed of the app it produces.
-
-## Common Causes of Editor Slowness
-
- :::info[Editor Performance Factors]
- The following conditions may lead to lag in the FlutterFlow editor:
- :::
-
- - Large projects with many pages, widgets, or custom functions.
- - Excessive use of long text fields directly inside the editor.
- - Browsers accumulating cache over long work sessions without restarts.
-
-:::tip[Tips to Improve Editor Responsiveness]
-To ensure smoother performance while using the FlutterFlow editor:
-
-1. **Avoid Typing Long Text Blocks Directly**
- Write and format long content in a separate text editor, then copy it into FlutterFlow.
-
-2. **Restart Your Browser Regularly**
- Refresh or relaunch the browser periodically to clear memory and cache.
-
-3. **Use macOS App for UI Workflows**
- The macOS version of FlutterFlow is optimized for better performance when building UI components.
-
-4. **Close Unused Pages and Widgets**
- Reducing the number of open tabs and components can free up memory.
-:::
-
-Any lag or slowness in the FlutterFlow editor is limited to the development environment. The compiled app’s performance depends on:
- - The efficiency of the generated Flutter code.
- - App logic, API usage, image sizes, and animation complexity.
- - Device resources and internet connectivity.
-
- Apps built with FlutterFlow run on Flutter’s framework, which is known for its speed and reliability in production environments.
\ No newline at end of file
diff --git a/docs/resources/control-flow/user-interactivity/update-user-record-from-email-input.md b/docs/resources/control-flow/backend-logic/backend-query/update-user-record-from-email-input.md
similarity index 100%
rename from docs/resources/control-flow/user-interactivity/update-user-record-from-email-input.md
rename to docs/resources/control-flow/backend-logic/backend-query/update-user-record-from-email-input.md
diff --git a/docs/resources/ui/widgets/basic-widgets/create-a-submenu-using-local-state.md b/docs/resources/control-flow/create-a-submenu-using-local-state.md
similarity index 100%
rename from docs/resources/ui/widgets/basic-widgets/create-a-submenu-using-local-state.md
rename to docs/resources/control-flow/create-a-submenu-using-local-state.md
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/fix-clipboard-permissions-for-widget-copy-paste.md b/docs/resources/ui/widgets/basic-widgets/fix-clipboard-permissions-for-widget-copy-paste.md
deleted file mode 100644
index 441b1696..00000000
--- a/docs/resources/ui/widgets/basic-widgets/fix-clipboard-permissions-for-widget-copy-paste.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-keywords: ['paste', 'widgets', 'copy']
-slug: /fix-clipboard-permissions-for-widget-copy-paste
-title: Fix Clipboard Permissions for Copy-Pasting Widgets
----
-
-# Fix Clipboard Permissions for Copy-Pasting Widgets
-
-If you’re unable to copy and paste widgets in FlutterFlow, the issue may be related to blocked clipboard permissions in your browser.
-
-Follow the steps below 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 copying/pasting the widget again.
-
- 
-
-:::tip
-For other browsers such as **Firefox**, **Edge**, or **Safari**, refer to that browser’s permission settings to enable clipboard access.
-:::
diff --git a/docs/resources/ui/widgets/basic-widgets/text.md b/docs/resources/ui/widgets/basic-widgets/text.md
index c4c71c52..9e22af59 100644
--- a/docs/resources/ui/widgets/basic-widgets/text.md
+++ b/docs/resources/ui/widgets/basic-widgets/text.md
@@ -120,6 +120,43 @@ 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 TextOverflow Class](https://api.flutter.dev/flutter/widgets/TextOverflow-class.html)
+ :::
+
+
### Adding Gradient color
diff --git a/docs/resources/ui/widgets/basic-widgets/wrap-text-inside-containers.md b/docs/resources/ui/widgets/basic-widgets/wrap-text-inside-containers.md
deleted file mode 100644
index 8bca0afc..00000000
--- a/docs/resources/ui/widgets/basic-widgets/wrap-text-inside-containers.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-keywords: ['wrap', 'text', 'container', 'overflow']
-slug: /wrap-text-inside-containers
-title: Wrap Text Inside Containers
----
-
-# Wrap Text Inside Containers
-
-When building responsive layouts, text may overflow its container if not properly configured. This guide explains how to wrap text so that it fits within the container, especially in layouts such as ListView or Column.
-
-Follow the steps below to properly wrap text:
-
- 1. **Select the Text Widget**
- Choose the text element you want to wrap inside a container.
-
- 2. **Enable Soft Wrap**
- In the properties panel, locate the **Text Styling** section and enable **Soft Wrap**. This allows the text to break into multiple lines.
-
- 3. **Set Max Lines (Optional)**
- You can optionally set a **Max Lines** limit to control how many lines the text should wrap into before being truncated.
-
- 4. **Use Expanded or Flexible (When in Row)**
- If your text is inside a `Row`, wrap it in an `Expanded` or `Flexible` widget to prevent overflow.
-
- 5. **Adjust Container Width**
- Ensure the container has a defined or constrained width. Unlimited width will cause the text to expand rather than wrap.
-
- 6. **Use Overflow Handling (Optional)**
- Set the **Overflow** property to `ellipsis`, `clip`, or `fade` depending on how you want to handle excess text.
-
- 
-
-:::tip
-When using a `Row`, wrapping long text will not work unless the text widget is inside an `Expanded` or `Flexible` widget. This ensures the text takes only available space and can wrap as needed.
-:::
-
-:::note
-- Avoid placing long text directly inside a Row without constraints.
-- Soft wrap works best when the container or parent widget has width restrictions.
-:::
-
-:::info[Additional Rescources]
-- [Flutter Text Overflow Class](https://api.flutter.dev/flutter/widgets/TextOverflow-class.html)
-:::
\ No newline at end of file
diff --git a/docs/testing-deployment-publishing/publishing/web-publishing.md b/docs/testing-deployment-publishing/publishing/web-publishing.md
index 6b960048..9f6c34e2 100644
--- a/docs/testing-deployment-publishing/publishing/web-publishing.md
+++ b/docs/testing-deployment-publishing/publishing/web-publishing.md
@@ -167,6 +167,33 @@ To view the live version of your app, click the **eye icon** next to the 'Publis
---
+## 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.
+
## 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.
From 6133e9a2f8dbb74f1fc3bbc73161efbba6010e5c Mon Sep 17 00:00:00 2001
From: mrdavidorok
Date: Mon, 4 Aug 2025 00:09:34 +0100
Subject: [PATCH 04/12] updated assets
---
.../imgs/20250430121519975010.gif | Bin 0 -> 1113516 bytes
.../convert-device-location-to-address.md | 8 ++++----
.../maps/imgs/20250430121231440026.gif | Bin 0 -> 1102097 bytes
.../maps/imgs/20250430121231812590.png | Bin 0 -> 205752 bytes
.../maps/imgs/20250430121232082585.png | Bin 0 -> 390480 bytes
.../maps/imgs/20250430121232452872.png | Bin 0 -> 294067 bytes
docs/intro/ff-ui/canvas.md | 2 +-
.../intro/ff-ui/imgs/20250430121511630414.png | Bin 0 -> 110058 bytes
.../imgs/20250430121457209095.gif | Bin 0 -> 1199422 bytes
.../imgs/20250430121457646837.png | Bin 0 -> 163000 bytes
.../imgs/20250430121457985825.png | Bin 0 -> 197441 bytes
.../imgs/20250430121458204938.png | Bin 0 -> 38432 bytes
.../create-a-submenu-using-local-state.md | 2 +-
.../functions/img/20250430121319778896.gif | Bin 0 -> 501703 bytes
.../ui/widgets/basic-widgets/text.md | 2 +-
.../imgs/20250430121501151202.png | Bin 0 -> 134049 bytes
.../fix-app-store-bundle-version-error.md | 2 +-
...ioning-profile-error-associated-domains.md | 0
.../assets/20250430121110741307.png | Bin 0 -> 109708 bytes
.../assets/20250430121158393454.png | Bin 0 -> 97356 bytes
.../assets/20250430121201175857.png | Bin 0 -> 97529 bytes
.../assets/20250430121201415199.png | Bin 0 -> 99263 bytes
.../assets/20250430121201673795.png | Bin 0 -> 99263 bytes
.../assets/20250430121201908772.png | Bin 0 -> 60935 bytes
.../assets/20250430121202201523.png | Bin 0 -> 144176 bytes
.../assets/20250430121202456192.png | Bin 0 -> 57047 bytes
.../assets/20250430121202663162.png | Bin 0 -> 21024 bytes
.../assets/20250430121202861692.png | Bin 0 -> 59840 bytes
.../assets/20250430121204990541.png | Bin 0 -> 77962 bytes
.../assets/20250430121205509269.png | Bin 0 -> 420442 bytes
.../assets/20250430121205798445.png | Bin 0 -> 56594 bytes
.../assets/20250430121206162085.png | Bin 0 -> 81771 bytes
.../assets/20250430121225466053.png | Bin 0 -> 122059 bytes
.../assets/20250430121225764598.png | Bin 0 -> 487911 bytes
.../assets/20250430121226481647.png | Bin 0 -> 228762 bytes
.../assets/20250430121226777130.png | Bin 0 -> 471673 bytes
.../assets/20250430121227109718.png | Bin 0 -> 478978 bytes
.../assets/20250430121227744579.png | Bin 0 -> 188871 bytes
.../assets/20250430121227989568.png | Bin 0 -> 27321 bytes
.../assets/20250430121235746050.png | Bin 0 -> 282453 bytes
.../assets/20250430121235981602.png | Bin 0 -> 11663 bytes
.../assets/20250430121236782215.png | Bin 0 -> 34851 bytes
.../assets/20250430121236976235.png | Bin 0 -> 58788 bytes
.../assets/20250430121237764753.png | Bin 0 -> 383290 bytes
.../assets/20250430121238081846.png | Bin 0 -> 122107 bytes
.../assets/20250430121238384085.png | Bin 0 -> 53034 bytes
.../assets/20250430121238656194.png | Bin 0 -> 324991 bytes
.../assets/20250430121245553425.png | Bin 0 -> 125741 bytes
.../assets/20250430121246143405.png | Bin 0 -> 241638 bytes
.../assets/20250430121246510364.png | Bin 0 -> 343468 bytes
.../assets/20250430121247111572.png | Bin 0 -> 259460 bytes
.../assets/20250430121247467739.png | Bin 0 -> 89138 bytes
.../assets/20250430121251986970.png | Bin 0 -> 153450 bytes
.../assets/20250430121253789974.png | Bin 0 -> 122984 bytes
.../assets/20250430121254079048.png | Bin 0 -> 150349 bytes
.../assets/20250430121254348087.png | Bin 0 -> 84406 bytes
.../assets/20250430121254635672.png | Bin 0 -> 51418 bytes
.../assets/20250430121255479960.png | Bin 0 -> 260234 bytes
.../assets/20250430121255810538.png | Bin 0 -> 70923 bytes
.../assets/20250430121256121119.png | Bin 0 -> 18896 bytes
.../assets/20250430121258715184.png | Bin 0 -> 257811 bytes
.../assets/20250430121259325933.png | Bin 0 -> 261217 bytes
.../assets/20250430121301671136.png | Bin 0 -> 71526 bytes
.../assets/20250430121302032059.png | Bin 0 -> 399589 bytes
.../assets/20250430121302300256.png | Bin 0 -> 32829 bytes
.../assets/20250430121307457486.png | Bin 0 -> 96285 bytes
.../assets/20250430121311458158.png | Bin 0 -> 55903 bytes
.../assets/20250430121311730523.png | Bin 0 -> 176403 bytes
.../assets/20250430121312243075.png | Bin 0 -> 333130 bytes
.../assets/20250430121312626400.png | Bin 0 -> 198770 bytes
.../assets/20250430121312919242.png | Bin 0 -> 21106 bytes
.../assets/20250430121313117339.png | Bin 0 -> 24981 bytes
.../assets/20250430121313453827.png | Bin 0 -> 92686 bytes
.../assets/20250430121329008679.png | Bin 0 -> 1074646 bytes
.../assets/20250430121329460301.png | Bin 0 -> 1278654 bytes
.../assets/20250430121344371643.png | Bin 0 -> 34851 bytes
.../assets/20250430121344599814.png | Bin 0 -> 62736 bytes
.../assets/20250430121344826995.png | Bin 0 -> 940392 bytes
.../assets/20250430121345698106.png | Bin 0 -> 34851 bytes
.../assets/20250430121345966687.png | Bin 0 -> 226198 bytes
.../assets/20250430121353111041.png | Bin 0 -> 156603 bytes
.../assets/20250430121353323352.png | Bin 0 -> 457212 bytes
.../assets/20250430121353635504.png | Bin 0 -> 131269 bytes
.../assets/20250430121353926967.gif | Bin 0 -> 215352 bytes
.../assets/20250430121356207178.png | Bin 0 -> 208671 bytes
.../assets/20250430121356535681.png | Bin 0 -> 135614 bytes
.../assets/20250430121358370953.png | Bin 0 -> 14915 bytes
.../assets/20250430121405271522.png | Bin 0 -> 59148 bytes
.../assets/20250430121405587477.png | Bin 0 -> 583929 bytes
.../assets/20250430121405921022.png | Bin 0 -> 86176 bytes
.../assets/20250430121454943811.png | Bin 0 -> 261217 bytes
.../assets/20250430121520677214.gif | Bin 0 -> 543069 bytes
.../assets/20250430121520979751.gif | Bin 0 -> 260335 bytes
.../assets/20250430121526027709.png | Bin 0 -> 9394 bytes
.../assets/20250430121526232282.png | Bin 0 -> 8578 bytes
.../assets/20250430121526436202.png | Bin 0 -> 17026 bytes
.../assets/20250430121527145863.png | Bin 0 -> 110058 bytes
.../assets/20250430121527462964.png | Bin 0 -> 131606 bytes
...ode-locally-after-exporting-my-code-apk.md | 6 +++---
.../fix-firestore-rules-deployment-errors.md | 2 ++
...ckage_name_mismatch_in_firebase_config.md} | 18 +++---------------
...-ios-push-notifications-for-ios-devices.md | 6 +++---
...h-notifications-in-provisioning-profile.md | 4 ++--
103 files changed, 21 insertions(+), 31 deletions(-)
create mode 100644 docs/ff-integrations/authentication/imgs/20250430121519975010.gif
create mode 100644 docs/ff-integrations/maps/imgs/20250430121231440026.gif
create mode 100644 docs/ff-integrations/maps/imgs/20250430121231812590.png
create mode 100644 docs/ff-integrations/maps/imgs/20250430121232082585.png
create mode 100644 docs/ff-integrations/maps/imgs/20250430121232452872.png
create mode 100644 docs/intro/ff-ui/imgs/20250430121511630414.png
create mode 100644 docs/resources/control-flow/backend-logic/imgs/20250430121457209095.gif
create mode 100644 docs/resources/control-flow/backend-logic/imgs/20250430121457646837.png
create mode 100644 docs/resources/control-flow/backend-logic/imgs/20250430121457985825.png
create mode 100644 docs/resources/control-flow/backend-logic/imgs/20250430121458204938.png
create mode 100644 docs/resources/control-flow/functions/img/20250430121319778896.gif
create mode 100644 docs/resources/ui/widgets/built-in-widgets/imgs/20250430121501151202.png
rename docs/troubleshooting/apple-store-deployment/fetch-signing-files/{apple-store-deployment => }/fix-app-store-bundle-version-error.md (97%)
rename docs/troubleshooting/apple-store-deployment/fetch-signing-files/{apple-store-deployment => }/provisioning-profile-error-associated-domains.md (100%)
create mode 100644 docs/troubleshooting/assets/20250430121110741307.png
create mode 100644 docs/troubleshooting/assets/20250430121158393454.png
create mode 100644 docs/troubleshooting/assets/20250430121201175857.png
create mode 100644 docs/troubleshooting/assets/20250430121201415199.png
create mode 100644 docs/troubleshooting/assets/20250430121201673795.png
create mode 100644 docs/troubleshooting/assets/20250430121201908772.png
create mode 100644 docs/troubleshooting/assets/20250430121202201523.png
create mode 100644 docs/troubleshooting/assets/20250430121202456192.png
create mode 100644 docs/troubleshooting/assets/20250430121202663162.png
create mode 100644 docs/troubleshooting/assets/20250430121202861692.png
create mode 100644 docs/troubleshooting/assets/20250430121204990541.png
create mode 100644 docs/troubleshooting/assets/20250430121205509269.png
create mode 100644 docs/troubleshooting/assets/20250430121205798445.png
create mode 100644 docs/troubleshooting/assets/20250430121206162085.png
create mode 100644 docs/troubleshooting/assets/20250430121225466053.png
create mode 100644 docs/troubleshooting/assets/20250430121225764598.png
create mode 100644 docs/troubleshooting/assets/20250430121226481647.png
create mode 100644 docs/troubleshooting/assets/20250430121226777130.png
create mode 100644 docs/troubleshooting/assets/20250430121227109718.png
create mode 100644 docs/troubleshooting/assets/20250430121227744579.png
create mode 100644 docs/troubleshooting/assets/20250430121227989568.png
create mode 100644 docs/troubleshooting/assets/20250430121235746050.png
create mode 100644 docs/troubleshooting/assets/20250430121235981602.png
create mode 100644 docs/troubleshooting/assets/20250430121236782215.png
create mode 100644 docs/troubleshooting/assets/20250430121236976235.png
create mode 100644 docs/troubleshooting/assets/20250430121237764753.png
create mode 100644 docs/troubleshooting/assets/20250430121238081846.png
create mode 100644 docs/troubleshooting/assets/20250430121238384085.png
create mode 100644 docs/troubleshooting/assets/20250430121238656194.png
create mode 100644 docs/troubleshooting/assets/20250430121245553425.png
create mode 100644 docs/troubleshooting/assets/20250430121246143405.png
create mode 100644 docs/troubleshooting/assets/20250430121246510364.png
create mode 100644 docs/troubleshooting/assets/20250430121247111572.png
create mode 100644 docs/troubleshooting/assets/20250430121247467739.png
create mode 100644 docs/troubleshooting/assets/20250430121251986970.png
create mode 100644 docs/troubleshooting/assets/20250430121253789974.png
create mode 100644 docs/troubleshooting/assets/20250430121254079048.png
create mode 100644 docs/troubleshooting/assets/20250430121254348087.png
create mode 100644 docs/troubleshooting/assets/20250430121254635672.png
create mode 100644 docs/troubleshooting/assets/20250430121255479960.png
create mode 100644 docs/troubleshooting/assets/20250430121255810538.png
create mode 100644 docs/troubleshooting/assets/20250430121256121119.png
create mode 100644 docs/troubleshooting/assets/20250430121258715184.png
create mode 100644 docs/troubleshooting/assets/20250430121259325933.png
create mode 100644 docs/troubleshooting/assets/20250430121301671136.png
create mode 100644 docs/troubleshooting/assets/20250430121302032059.png
create mode 100644 docs/troubleshooting/assets/20250430121302300256.png
create mode 100644 docs/troubleshooting/assets/20250430121307457486.png
create mode 100644 docs/troubleshooting/assets/20250430121311458158.png
create mode 100644 docs/troubleshooting/assets/20250430121311730523.png
create mode 100644 docs/troubleshooting/assets/20250430121312243075.png
create mode 100644 docs/troubleshooting/assets/20250430121312626400.png
create mode 100644 docs/troubleshooting/assets/20250430121312919242.png
create mode 100644 docs/troubleshooting/assets/20250430121313117339.png
create mode 100644 docs/troubleshooting/assets/20250430121313453827.png
create mode 100644 docs/troubleshooting/assets/20250430121329008679.png
create mode 100644 docs/troubleshooting/assets/20250430121329460301.png
create mode 100644 docs/troubleshooting/assets/20250430121344371643.png
create mode 100644 docs/troubleshooting/assets/20250430121344599814.png
create mode 100644 docs/troubleshooting/assets/20250430121344826995.png
create mode 100644 docs/troubleshooting/assets/20250430121345698106.png
create mode 100644 docs/troubleshooting/assets/20250430121345966687.png
create mode 100644 docs/troubleshooting/assets/20250430121353111041.png
create mode 100644 docs/troubleshooting/assets/20250430121353323352.png
create mode 100644 docs/troubleshooting/assets/20250430121353635504.png
create mode 100644 docs/troubleshooting/assets/20250430121353926967.gif
create mode 100644 docs/troubleshooting/assets/20250430121356207178.png
create mode 100644 docs/troubleshooting/assets/20250430121356535681.png
create mode 100644 docs/troubleshooting/assets/20250430121358370953.png
create mode 100644 docs/troubleshooting/assets/20250430121405271522.png
create mode 100644 docs/troubleshooting/assets/20250430121405587477.png
create mode 100644 docs/troubleshooting/assets/20250430121405921022.png
create mode 100644 docs/troubleshooting/assets/20250430121454943811.png
create mode 100644 docs/troubleshooting/assets/20250430121520677214.gif
create mode 100644 docs/troubleshooting/assets/20250430121520979751.gif
create mode 100644 docs/troubleshooting/assets/20250430121526027709.png
create mode 100644 docs/troubleshooting/assets/20250430121526232282.png
create mode 100644 docs/troubleshooting/assets/20250430121526436202.png
create mode 100644 docs/troubleshooting/assets/20250430121527145863.png
create mode 100644 docs/troubleshooting/assets/20250430121527462964.png
rename docs/troubleshooting/firebase/{Error Package name in Firebase Android config must match your app's package name..md => package_name_mismatch_in_firebase_config.md} (71%)
diff --git a/docs/ff-integrations/authentication/imgs/20250430121519975010.gif b/docs/ff-integrations/authentication/imgs/20250430121519975010.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c52553556a2924cf0679be07b33463b6d04f1999
GIT binary patch
literal 1113516
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