Skip to content

Added FlutterFlow Version Management #245

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 19 commits into from
Feb 14, 2025
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion docs/resources/projects/libraries.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ To import a library project into another FlutterFlow project, you must go to the
- By default, the latest published version of the library is imported, but you can choose to depend on an earlier version if needed.
- You can also import the `current` version of the library to use the latest state of the library on the main branch - however, this is not recommended.
- You must have a paid plan to import a library.

- When you import a library into a project or another library, the library’s version must be lower than the project or library it’s being imported into. Learn more about managing the library’s FlutterFlow version [**here**](../projects/settings/version-management.md) and [**here**](../projects/settings/version-management.md#version-management-with-libraries).
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lower than the project -> not set to 'current' and less than or equal to

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated!

:::


Expand Down Expand Up @@ -235,6 +235,8 @@ You can easily upgrade to newer versions of the libraries as they become availab

![update-library](imgs/update-library.avif)



## Library Values

**Library values** are essentially variables created and used by a library author and intended to have their values set by the library user. These values allow library author to create configurable variables that are useful in different contexts, such as API keys, global settings, or other project-specific configurations. These values allow library users to input specific data required for the library to function properly in their project.
Expand Down
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
200 changes: 200 additions & 0 deletions docs/resources/projects/settings/version-management.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
---
slug: flutterflow-version-management
title: Pin to FlutterFlow Version
tags: [Versioning]
keywords: [Versioning, FlutterFlow Version Management, Pin project FlutterFlow, Downgrade FlutterFlow version, Upgrade FlutterFlow version, FlutterFlow stable releases]
description: Learn how to manage the FlutterFlow version used for your project.
sidebar_position: 7
---

# Pinning Projects to Stable FlutterFlow Versions

FlutterFlow is constantly evolving to provide new features, address bugs, and keep up-to-date with Flutter and third-party packages. However, frequent updates can introduce unwanted changes that break existing projects—especially those that rely on custom code with external dependencies.

To mitigate these issues, FlutterFlow offers a **version management** system that allows you to pin your project to a particular [*stable release*](#stable-release-corresponds-to-minor-version) of FlutterFlow. Projects pinned to a stable release will **not automatically receive the latest FlutterFlow updates**, giving you more control over your development workflow.

However, pinning to a stable release means that you will not be able to use the latest features and there may be bugs that are not fixed until subsequent releases.

:::info
Currently, the ability to pin a FlutterFlow project to a stable version is only available to **Enterprise** users.
:::

## When should you pin your project to a stable version?

Pinning your project to a stable version of FlutterFlow offers the following benefits:

- **Prevents Unexpected Breakages:** FlutterFlow updates can introduce errors into your project—particularly when you have custom code. Pinning to a stable release reduces the risk of unexpected changes to your project.
- **Gives Control Over Update Timing:** FlutterFlow updates might occur at inopportune times (e.g. right before you plan to release a new version of your application). Pinning your project to a stable version allows you to choose **when** to move your project to a newer release.

:::warning
That said, there are **downsides** to consider: pinning your project to a stable release means you won’t receive the newest FlutterFlow features or bug fixes as they’re released. **We only recommend pinning to a specific version if you have a complex app with custom code dependencies.**
:::

## Key Concepts

To understand FlutterFlow's version management system, it's import to understand **Semantic Versioning**.

FlutterFlow tends to release a new version of the product each week. When a new version is released, the overall version number is incremented.

The version number consists of three parts:

- **Major Version:** Incremented when introducing substantial changes that significantly alter the product.
- **Minor Version:** Incremented for changes that notably enhance or modify the FlutterFlow development experience—such as upgrading to a new Flutter version or adding a large feature.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adding a large feature -> substantially changing generated code or project structure.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated!

- **Patch Version:** Incremented with routine releases that include new features, improvements, or bug fixes.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incremented for releases that contain bugfixes and minor improvements that do not contain breaking changes to generated code or project structure.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated!


![semantic_versioning](imgs/semantic-versioning.png)

You can see what version of FlutterFlow you are using by looking at the top left hand corner of the builder.

![version-in-builder](imgs/version-in-builder.png)


#### Standard Release [Corresponds to Patch Version]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove [Corresponds to Patch Version]

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed!


A **Standard Release** of FlutterFlow is released approximately every week. However, this is subject to change based on user needs.

When your project is **not pinned** to a stable release (default behavior), you will automatically use the **latest standard release.**

#### Stable Release [Corresponds to Minor Version]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove [Corresponds to Minor Version]

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed!


![standard-to-stable](imgs/standard-to-stable.png)

A **Stable Release** of FlutterFlow is released each time a new **Minor Version** of FlutterFlow is created. This happens when:

- New features have undergone more testing
- There has been significant changes to project code generation
- There has been an update to the underlying Flutter or Pubspec dependency versions

Stable releases are usually deployed each month. A stable release will correspond with an underlying standard release (i.e. 1.0 corresponds to 1.0.1 in the above diagram).

:::note
Each stable release will be supported for **6 months** before you are forced to upgrade to the next stable version.
:::


## Pinning Your Project

To pin your project, navigate to **Settings and Integrations > General > App Details >Version Pinning** section and select the stable release you want to lock into. Once you update the pin your project to a stable version, you can only edit the project using that version of FlutterFlow.

![pin-version](imgs/pin-version.avif)

:::info
You can only pin a project to a stable version if you are the **Project Owner** and you are on the **main** branch.
:::

### Modifying the Pinned Version

You have several options when it comes to modifying pinned version of your project:

- **Upgrade to more recent Stable Version**: When a new stable version is released, you will see it as an option in the dropdown shown above. You can upgrade the pinned version to a more recent stable version whenever they become available. Newer stable versions will have higher numbers (i.e. 5.1 is newer than 5.0)
- **Downgrade to a previous Stable Version:** You can downgrade to a prior stable release (i.e. downgrade from 5.1 to 5.0), however **changes made since upgrading will be lost** (i.e. changes made after modifying pinned version from 5.0 to 5.1). Therefore, we recommend [commiting](https://docs.flutterflow.io/collaboration/branching/#create-commits) all changes on the main branch before upgrading - plus testing after upgrading so you can quickly downgrade if necessary.
- **Set to *Latest Version* (Unpinned):** You can unpin your project by setting it to the *Latest Version* which will use the latest [standard release](#standard-release-corresponds-to-patch-version).
- **Opt-in to the *Next Stable*:** Your project may be on a standard version that does not have a correspond stable version (i.e. you are on 5.0.1 but the 5.0 stable will correspond to 5.0.4). In that case, you can choose to opt-in to the *Next Stable Version*. This will pin your project to the next stable version once it becomes available.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: "corresponding"

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated! thanks @michael-mcroskey


Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Recommend adding:

Unpinning or pinning to a later version cannot be undone.  If you are unsure whether a newer FlutterFlow
version will work for your project, please create a branch and change the pinned version within the branch
to preview these changes.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added!

### Accessing the Proper Stable Version
As mentioned above, once you update the pin your project to a stable version, you can only edit the project using that version of FlutterFlow.

- **For Web**: You will be automatically redirected to the URL for the stable version that your project is pinned to when you open a project from the FlutterFlow dashboard (i.e. navigating to app.flutterflow.io or enterprise-[region].flutterflow.io).
- **For Desktop**: You will [**install**](https://www.flutterflow.io/desktop) the dedicated desktop application for the pinned stable release. The desktop app for stable releases won’t auto-update, you will need to install a new version when you upgrade your project to a new stable version.


## Recommended FlutterFlow Version Workflow

If you have a complex app with custom code that depends on specific versions of package dependencies, it may be helpful to pin your project to a specific version. This is the workflow we recommend for managing the version of your projects.

1. If you think your project should be pinned to a stable release, choose to [pin the project to the current (if available) or next stable release](#modifying-the-pinned-version).
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the current -> a stable version

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So that will become 'project to the stable version (if available) or next stable release'. Two times stable version? or should we just keep it like 'project to the stable version (if available)'?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, maybe "a currently available stable version (if any)"

I'm just trying to communicate that they may not have any options to pin to aside from the next stable release. Up to you how to best do this.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, updated!

2. When a new stable version is released, you can choose when you would like to upgrade based on your own release schedule and development process. For instance, you might wait until you're not actively developing a new feature, or you could check the release notes first to see if there are must-have features that would prompt you to upgrade sooner.
3. When you’re ready to upgrade, commit all your changes on main to save your progress and [update the pinned version](#modifying-the-pinned-version).
4. Run your app on the platforms you support—using a simulator, emulator, or physical device to ensure everything works as intended. See the [Local Run documentation](https://docs.flutterflow.io/testing/local-run/) for details.
4. If everything looks good, you're good to go! If for some reason your app is not working as expected, you can choose to revert the version and lose those testing changes until you are ready to make the modifications needed to support the latest FlutterFlow version (i.e. upgrade dependencies/custom code).

:::tip
See the video [**here**](https://youtu.be/8Y1uyCC_dXE) for guidance on updating [**dependencies**](../../../ff-concepts/adding-customization/custom-code.md#manage-dependencies).
:::

## Version Management with Libraries

[Libraries](../libraries.md) have their own versions, and each library version corresponds to a specific FlutterFlow version. The FlutterFlow version of the library version is determined by the version used (pinned or otherwise) when the project was updated.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Library versions don't really correspond 1:1 to Flutterflow versions. Library versions monotonically increase as libraries are released.

I would recommend instead saying:

Libraries have their own versions.  Like projects, libraries edited in FlutterFlow can only be used in versions
of FlutterFlow >= the FlutterFlow version in which the library was was edited.

To ensure that new versions of libraries used in a pinned project are compatible with a pinned project, we
recommend pinning all libraries used in a pinned project to the same (or lower) Flutterflow version as the
pinned project.

Pinned projects cannot add a library with the version set to 'current' or to a library version that has been
edited on a later release of FlutterFlow.

Projects cannot be pinned if they a contain a library with the version set to 'current' or to a library version
that has been edited on a later release of FlutterFlow.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated!


Library projects can also be pinned to a specific version, ensuring that all library versions use that FlutterFlow release until the pinned version is changed.

:::info
When you import a library into a project or another library, the library’s version must be lower than the version used for the project it’s being imported into; otherwise, you will encounter an error.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lower than -> lower than or equal to

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done!

:::

## FAQs

<details>
<summary>
What happens if I downgrade to a lower version of FlutterFlow after making changes in a higher version?
</summary>
<p>
Any changes made in a higher version will be lost when you revert to a lower version (e.g., you made changes when you upgraded from 5.0 to 5.1, but then you want to downgrade back to 5.0).
**To avoid data loss, thoroughly test your app after upgrading to ensure you want to continue with the updated version.**
</p>
</details>
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Omit this. Downgrading won't be supported in v0.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed!


<details>
<summary>
Can I edit my project in multiple versions of FlutterFlow?
</summary>
<p>
No. If your project is not pinned to a specific version, you’ll always use the latest FlutterFlow release. If your project is pinned to a specific version of FlutterFlow, you will be prompted to edit the project in that version.
</p>
</details>

<details>
<summary>
How often are new stable versions released?
</summary>
<p>
We aim to release new stable versions of FlutterFlow approximately once a month.
</p>
</details>

<details>
<summary>
How can I see what's included in a new stable version?
</summary>
<p>
We’re currently working on displaying release notes directly in the product, so you can easily review what’s been added or changed in each new stable version.
</p>
</details>

<details>
<summary>
What if there are bugs in the FlutterFlow version I’m using?
</summary>
<p>
If critical bugs arise, we may provide hotfixes or patches for older FlutterFlow versions. However, some fixes depend on updating the underlying Flutter framework or related dependencies, which isn’t always feasible for older versions. This is a risk of staying on an older version of FlutterFlow as opposed to always using the latest.
</p>
</details>


<details>
<summary>
Can I change the pinned version to be different for various branches in my project?
</summary>
<p>
Right now, we only support changing the pinned version from the main branch. When a project is pinned to a stable version, the entire project (including all of the branches within that project) will need to use the stable version that was selected.
</p>
</details>


<details>
<summary>
What happens if there is no stable version available for me to pin my project to?
</summary>
<p>
If your project was created and edited on a [standard release](#standard-release-corresponds-to-patch-version) that does not correspond to a [stable version](#stable-release-corresponds-to-minor-version), you may not see an earlier stable version to downgrade to - because this would reset the state of your project. Instead, you can choose to opt-in to the [*next stable release*](#pinning-your-project).
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not see an earlier stable version to downgrade to - because this would reset the state of your project. -> not see a stable version available.

Also add:
If set to the next stable release, a project will immediately be pinned when opened when a new stable release becomes available.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated!

</p>
</details>

<details>
<summary>
What is the recommended approach if I have multiple projects and libraries that I am working on?
</summary>
<p>
If you choose to pin your project to a stable version of FlutterFlow, we recommend pinning all your projects and dependencies to the same version - and trying to upgrade all projects to the next version around the same time. This makes it easier to ensure compatibilities between projects and libraries that depend on each other. Additionally, this makes it easier to have a single FlutterFlow desktop environment that you are working within.
</p>
</details>
Loading