-
-
Notifications
You must be signed in to change notification settings - Fork 28
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
[Mobile App] 989: Update Flutter SDK and packages, Xcode, Android Gradle #991
base: main
Are you sure you want to change the base?
[Mobile App] 989: Update Flutter SDK and packages, Xcode, Android Gradle #991
Conversation
- Update Android minimum version from 21 to 23 - Update iOS minimum version from iOS 12 to iOS 13
…h Java JDK 21 instead of JDK17
Try rewriting the code to not use the 'BuildContext', or guard the use with a 'mounted' check.
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 1 Skipped Deployment
|
📝 WalkthroughWalkthroughThis pull request encompasses a comprehensive update to the mobile application's development and build infrastructure. The changes primarily focus on upgrading tool versions, including Flutter (3.22.3 to 3.27.1), Xcode (15.4 to 16.2), Java (17 to 21), and various Android and iOS configurations. The modifications enhance compatibility with newer development environments, adjust minimum OS support versions, and update dependency packages across the project. Changes
Possibly related issues
Possibly related PRs
Suggested labels
Suggested reviewers
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🔇 Additional comments (2)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
sourceSets { | ||
main.java.srcDirs += 'src/main/kotlin' | ||
} | ||
|
||
defaultConfig { | ||
applicationId "org.socialincome.app" | ||
minSdkVersion 21 | ||
minSdkVersion 23 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minSdkVersion is because of Flutter Firebase packages update
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this file is a remaining from an older change where the app name was changed. In my opinion it is not needed anymore.
@@ -425,7 +425,7 @@ | |||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | |||
GCC_WARN_UNUSED_FUNCTION = YES; | |||
GCC_WARN_UNUSED_VARIABLE = YES; | |||
IPHONEOS_DEPLOYMENT_TARGET = 12.0; | |||
IPHONEOS_DEPLOYMENT_TARGET = 13.0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IPHONEOS_DEPLOYMENT_TARGET is because of Flutter Firebase packages update
@@ -1,5 +1,5 @@ | |||
# Uncomment this line to define a global platform for your project | |||
platform :ios, '12.0' | |||
platform :ios, '13.0' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because of Flutter Firebase packages update
@@ -30,7 +30,7 @@ flutter_ios_podfile_setup | |||
target 'Runner' do | |||
use_frameworks! | |||
use_modular_headers! | |||
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.25.0' | |||
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '11.4.0' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because of Flutter Firebase packages update
@@ -54,7 +54,7 @@ | |||
<key>LSRequiresIPhoneOS</key> | |||
<true/> | |||
<key>MinimumOSVersion</key> | |||
<string>12.0</string> | |||
<string>13.0</string> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because of Flutter Firebase packages update
@@ -1,7 +1,7 @@ | |||
import UIKit | |||
import Flutter | |||
|
|||
@UIApplicationMain | |||
@main |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is because of Flutter update to version 3.27.1
@@ -54,7 +54,7 @@ abstract class AppTheme { | |||
elevatedButtonTheme: ElevatedButtonThemeData( | |||
style: ElevatedButton.styleFrom( | |||
foregroundColor: Colors.white, | |||
disabledBackgroundColor: AppColors.primaryColor.withOpacity(0.5), | |||
disabledBackgroundColor: AppColors.primaryColor.withValues(alpha: 0.5), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is because of Flutter update to version 3.27.1
@@ -45,7 +45,7 @@ class _InputDropdownState<T> extends State<InputDropdown<T>> { | |||
contentPadding: AppSpacings.h12v16, | |||
label: Text(widget.label), | |||
labelStyle: AppStyles.inputHint.copyWith( | |||
color: AppColors.darkGrey.withOpacity(0.6), | |||
color: AppColors.darkGrey.withValues(alpha: 0.6), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is because of Flutter update to version 3.27.1
@@ -62,7 +62,7 @@ class InputText extends StatelessWidget { | |||
child: Text( | |||
hintText!, | |||
style: AppStyles.inputHint.copyWith( | |||
color: AppColors.darkGrey.withOpacity(0.6), | |||
color: AppColors.darkGrey.withValues(alpha: 0.6), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is because of Flutter update to version 3.27.1
@@ -410,7 +411,8 @@ class KriCupertinoLocalizations extends GlobalCupertinoLocalizations { | |||
required super.singleDigitHourFormat, | |||
required super.singleDigitMinuteFormat, | |||
required super.doubleDigitMinuteFormat, | |||
required super.singleDigitSecondFormat, | |||
required super.singleDigitSecondFormat, | |||
required super.weekdayFormat, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is because of Flutter update to version 3.27.1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we do not need this file anymore. Please verify that!
@@ -1,6 +1,5 @@ | |||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |||
xmlns:tools="http://schemas.android.com/tools" | |||
package="org.socialincome.app"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
package='org.socialincome.app' is replace by the namespace 'org.socialincome.app' in build.gradle
@@ -1,6 +1,6 @@ | |||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |||
package="org.socialincome.app"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
package='org.socialincome.app' is replace by the namespace 'org.socialincome.app' in build.gradle
@@ -1,6 +1,5 @@ | |||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |||
xmlns:tools="http://schemas.android.com/tools" | |||
package="org.socialincome.app"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
package='org.socialincome.app' is replace by the namespace 'org.socialincome.app' in build.gradle
android.useAndroidX=true | ||
android.enableJetifier=true | ||
android.defaults.buildfeatures.buildconfig=true | ||
android.nonTransitiveRClass=false | ||
android.nonFinalResIds=false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This stuff was changed by Android Studio while automatically upgrading the gradle version via the Android Studio assistant.
@@ -4,7 +4,7 @@ import "package:alchemist/alchemist.dart"; | |||
import "package:app/ui/configs/app_theme.dart"; | |||
|
|||
Future<void> testExecutable(FutureOr<void> Function() testMain) async { | |||
const isRunningInCi = bool.fromEnvironment("CI"); | |||
//const isRunningInCi = bool.fromEnvironment("CI"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not used, so I commented it out
…ges-xcode-android-gradle
Visit the preview URL for this PR (updated for commit f6f091a): https://si-admin-staging--pr991-karin-chore-989-upda-ourblfx2.web.app (expires Sun, 26 Jan 2025 14:54:16 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: b7b0969384059dce6ea8fad1ee1d1737e54e6676 |
cocoapods: 1.16.2 | ||
java: 17 | ||
java: 21 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With JDK21 we get those warning while building the APK:
warning: [options] source value 8 is obsolete and will be removed in a future release
warning: [options] target value 8 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings
According to this thread these warnings are harmless in our case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
…ges-xcode-android-gradle
recipients_app/lib/kri_intl.dart
Outdated
@@ -391,6 +391,7 @@ class _KriCupertinoLocalizationsDelegate extends LocalizationsDelegate<Cupertino | |||
singleDigitHourFormat: intl.DateFormat("d", localeName), | |||
singleDigitMinuteFormat: intl.DateFormat("d", localeName), | |||
singleDigitSecondFormat: intl.DateFormat("d", localeName), | |||
weekdayFormat: intl.DateFormat("EEE", localeName), // TODO: Check if this is right!!! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure about this code. Maybe someone could verify this :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (3)
recipients_app/lib/view/pages/terms_and_conditions_page.dart (1)
64-71
: Consider enhancing error handling and URL management.Two suggestions for improvement:
- Move the URL to a constants file for better maintainability
- Add specific error handling for URL launch failures
+ // In constants.dart + class AppUrls { + static const privacyPolicy = "https://socialincome.org/privacy"; + } // In this file - const url = "https://socialincome.org/privacy"; + const url = AppUrls.privacyPolicy;recipients_app/README.md (2)
167-167
: Fix grammar in CI/CD section.Change "are define" to "are defined".
🧰 Tools
🪛 LanguageTool
[grammar] ~167-~167: Consider using either the past participle “defined” or the present participle “defining” here.
Context: ...flows to build and release the apps are define in the file codemagic.yaml. CodeMagic ...(BEEN_PART_AGREEMENT)
170-172
: Format documentation links.Convert bare URLs to markdown links.
-CodeMagic documentation: -https://docs.codemagic.io/yaml-quick-start/building-a-flutter-app/ -CodeMagic Cheetsheet: -https://docs.codemagic.io/codemagic-yaml-cheatsheet.html +CodeMagic documentation: [Building a Flutter App](https://docs.codemagic.io/yaml-quick-start/building-a-flutter-app/) +CodeMagic Cheatsheet: [YAML Cheatsheet](https://docs.codemagic.io/codemagic-yaml-cheatsheet.html)🧰 Tools
🪛 Markdownlint (0.37.0)
170-170: null
Bare URL used(MD034, no-bare-urls)
172-172: null
Bare URL used(MD034, no-bare-urls)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
recipients_app/ios/Podfile.lock
is excluded by!**/*.lock
recipients_app/pubspec.lock
is excluded by!**/*.lock
📒 Files selected for processing (28)
codemagic.yaml
(3 hunks)recipients_app/.tool-versions
(1 hunks)recipients_app/README.md
(3 hunks)recipients_app/android/.gitignore
(1 hunks)recipients_app/android/app/build.gradle
(2 hunks)recipients_app/android/app/src/debug/AndroidManifest.xml
(1 hunks)recipients_app/android/app/src/dev/AndroidManifest.xml
(1 hunks)recipients_app/android/app/src/main/AndroidManifest.xml
(1 hunks)recipients_app/android/app/src/main/kotlin/org/socialincome/recipients_app/MainActivity.kt
(0 hunks)recipients_app/android/app/src/profile/AndroidManifest.xml
(1 hunks)recipients_app/android/app/src/stage/AndroidManifest.xml
(1 hunks)recipients_app/android/build.gradle
(1 hunks)recipients_app/android/gradle.properties
(1 hunks)recipients_app/android/gradle/wrapper/gradle-wrapper.properties
(1 hunks)recipients_app/android/settings.gradle
(1 hunks)recipients_app/ios/Podfile
(2 hunks)recipients_app/ios/Runner.xcodeproj/project.pbxproj
(18 hunks)recipients_app/ios/Runner/AppDelegate.swift
(1 hunks)recipients_app/ios/Runner/Info.plist
(1 hunks)recipients_app/ios/firebase_app_id_file.json
(0 hunks)recipients_app/lib/kri_intl.dart
(2 hunks)recipients_app/lib/ui/configs/app_theme.dart
(1 hunks)recipients_app/lib/ui/inputs/input_dropdown.dart
(2 hunks)recipients_app/lib/ui/inputs/input_text.dart
(1 hunks)recipients_app/lib/view/pages/account_page.dart
(1 hunks)recipients_app/lib/view/pages/terms_and_conditions_page.dart
(1 hunks)recipients_app/pubspec.yaml
(1 hunks)recipients_app/test/helpers/flutter_test_config.dart
(1 hunks)
💤 Files with no reviewable changes (2)
- recipients_app/android/app/src/main/kotlin/org/socialincome/recipients_app/MainActivity.kt
- recipients_app/ios/firebase_app_id_file.json
✅ Files skipped from review due to trivial changes (5)
- recipients_app/lib/ui/inputs/input_dropdown.dart
- recipients_app/test/helpers/flutter_test_config.dart
- recipients_app/lib/ui/inputs/input_text.dart
- recipients_app/.tool-versions
- recipients_app/android/build.gradle
🧰 Additional context used
🪛 LanguageTool
recipients_app/README.md
[duplication] ~31-~31: Possible typo: you repeated a word.
Context: ...udio by default - Install Java 21 via Homebrew brew install openjdk@21
- Homebrew is telling you to execute a symlink com...
(ENGLISH_WORD_REPEAT_RULE)
[uncategorized] ~34-~34: A comma may be missing after the conjunctive/linking adverb ‘Additionally’.
Context: ...an find this JDK. Please do this. - Additionally in your USER's HOME directory in the fi...
(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[uncategorized] ~159-~159: A comma may be missing after the conjunctive/linking adverb ‘Otherwise’.
Context: ...x.y.z with the new Flutter version. - Otherwise just update the version number in the f...
(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
[grammar] ~167-~167: Consider using either the past participle “defined” or the present participle “defining” here.
Context: ...flows to build and release the apps are define in the file codemagic.yaml. CodeMagic ...
(BEEN_PART_AGREEMENT)
🪛 Markdownlint (0.37.0)
recipients_app/README.md
170-170: null
Bare URL used
(MD034, no-bare-urls)
172-172: null
Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (24)
recipients_app/lib/view/pages/terms_and_conditions_page.dart (1)
64-71
: Correct implementation of BuildContext safety check.The addition of
context.mounted
check properly addresses the async gap safety concern, following Flutter best practices.recipients_app/lib/ui/configs/app_theme.dart (1)
57-57
: Confirm color opacity behavior in Flutter 3.27.1.The switch from
withOpacity
towithValues
is aligned with Flutter 3.27.1 changes. However, verify that the disabled button appearance remains consistent across the app.✅ Verification successful
Color opacity implementation is correct and consistent
All color opacity modifications in the codebase use the new
withValues(alpha:)
pattern, confirming proper adaptation to Flutter 3.27.1.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for any remaining withOpacity calls that might need similar updates rg "withOpacity" --type dartLength of output: 28
Script:
#!/bin/bash # Search for color-related alpha or opacity modifications rg -i "with(Values|Alpha|Opacity)" --type dart # Search for Color class usage patterns ast-grep --pattern 'Color.$$$' # Look for specific imports that might indicate color usage rg "import.*material.dart|import.*colors.dart" --type dartLength of output: 6747
recipients_app/lib/view/pages/account_page.dart (1)
239-249
: Good addition of the mounted check!The context.mounted check prevents potential crashes from updating state after the widget is disposed during the async date picker operation.
recipients_app/android/app/src/stage/AndroidManifest.xml (1)
1-2
: Package attribute removal is correct.The package identifier has been moved to the namespace in build.gradle, following modern Android Gradle Plugin conventions.
recipients_app/android/.gitignore (1)
12-13
: Good security practice!Adding explicit patterns for both .keystore and .jks files ensures better protection against accidentally committing sensitive keystore files.
recipients_app/android/gradle.properties (1)
1-6
: Appropriate memory and build configuration updates.The changes include:
- Increased JVM memory (4GB) and metaspace (2GB) for better build performance
- Required build feature flags for compatibility with the new Android Gradle Plugin
recipients_app/android/gradle/wrapper/gradle-wrapper.properties (1)
3-5
: Gradle upgrade and configuration changes look good.The upgrade to Gradle 8.9 aligns with the Flutter and Java updates. Network timeout and URL validation are good security practices.
Run this script to verify Gradle compatibility:
✅ Verification successful
Gradle 8.9 is compatible with project's Android SDK configuration
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check if build.gradle files are compatible with Gradle 8.9 rg -l "com.android.tools.build:gradle" | xargs rg "compileSdkVersion|minSdkVersion|targetSdkVersion"Length of output: 298
recipients_app/android/app/src/dev/AndroidManifest.xml (1)
1-2
: Package attribute removal is correct.Package is now defined as namespace in build.gradle, following Android Gradle Plugin 8.x conventions.
recipients_app/android/app/src/profile/AndroidManifest.xml (1)
1-5
: Manifest changes and documentation updates look good.Package removal and improved documentation for INTERNET permission requirements are appropriate.
recipients_app/android/app/src/debug/AndroidManifest.xml (1)
1-5
: Changes match profile manifest.recipients_app/android/settings.gradle (1)
21-23
: Plugin versions are appropriate for the Flutter SDK update.The Android Gradle Plugin 8.7.3 and Kotlin 1.8.22 versions are compatible with Flutter 3.27.1.
Run this script to verify version compatibility:
✅ Verification successful
✓ Plugin versions verified and compatible
All plugin versions and SDK configurations are correctly set up for Flutter 3.27.1:
- Android Gradle Plugin 8.7.3
- Kotlin 1.8.22
- Gradle 8.9
- Android SDK levels (compile: 34, target: 34, min: 23)
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check Flutter version and plugin compatibility rg "flutter.sdk" . -A 2 rg "compileSdkVersion|buildToolsVersion|kotlinVersion" .Length of output: 499
Script:
#!/bin/bash # Check Flutter SDK version and additional Gradle configurations cat recipients_app/pubspec.yaml | grep -A 2 "environment:" rg "minSdkVersion|targetSdkVersion|kotlin.version|gradle" recipients_app/android/Length of output: 851
recipients_app/pubspec.yaml (1)
14-20
: Verify Firebase package compatibility.The Firebase packages have been updated to major version 5.x. This is a significant update that requires minimum iOS 13 and Android API 23, which aligns with the PR objectives.
✅ Verification successful
Firebase packages are compatible but require Flutter ≥3.16.0
All Firebase packages are using compatible versions and have consistent SDK requirements. The firebase_auth package sets the minimum Flutter version requirement to 3.16.0 for the entire app.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Check for breaking changes in Firebase packages # Check release notes for breaking changes gh api graphql -f query=' { repository(owner: "firebase", name: "flutterfire") { releases(first: 5, orderBy: {field: CREATED_AT, direction: DESC}) { nodes { name description } } } }'Length of output: 746
Script:
#!/bin/bash # Check pubspec.lock for resolved versions and pub.dev for package metadata if [ -f "recipients_app/pubspec.lock" ]; then echo "=== Resolved Firebase Package Versions ===" grep -A 1 "firebase\|firestore" recipients_app/pubspec.lock echo -e "\n=== Checking pub.dev metadata ===" for pkg in "cloud_firestore" "firebase_auth" "firebase_core" "firebase_messaging" "firebase_app_check"; do curl -s "https://pub.dev/api/packages/$pkg" | jq -r '. | "Package: \(.name)\nLatest: \(.latest.version)\nSDK: \(.latest.pubspec.environment.sdk)\nFlutter: \(.latest.pubspec.environment.flutter)\n"' done fiLength of output: 4895
recipients_app/android/app/src/main/AndroidManifest.xml (1)
1-1
: LGTM! Package declaration moved to build.gradle.The removal of the package attribute from AndroidManifest.xml is correct as it's now declared as a namespace in build.gradle.
recipients_app/android/app/build.gradle (3)
35-35
: LGTM! Namespace declaration added.The namespace declaration replaces the package attribute from AndroidManifest.xml.
38-45
: Note: Java compatibility settings are required.These settings ensure compatibility with Android's build tools despite using JDK 21. The warnings about obsolete Java 1.8 options are known and harmless as noted in the past review comments.
53-53
: LGTM! minSdkVersion updated to 23.This change is required by the Firebase package updates.
codemagic.yaml (2)
7-10
: LGTM! Environment versions updated.The updates to Flutter (3.27.1), Xcode (16.2), and Java (21) align with the PR objectives.
91-92
: LGTM! Artifact paths updated.The artifact paths are now more specific to their respective flavors (stage/prod).
Also applies to: 183-184
recipients_app/lib/kri_intl.dart (2)
394-394
: Verify the weekday format pattern.The format pattern "EEE" is correct for abbreviated weekday names in Flutter's DateFormat. It will display weekdays as "Mon", "Tue", etc.
414-415
: LGTM! Constructor parameter matches the Flutter 3.27.1 requirements.The addition of the required weekdayFormat parameter aligns with the changes in Flutter SDK 3.27.1.
recipients_app/ios/Runner/AppDelegate.swift (1)
4-4
: LGTM! Standard Swift modernizationThe change from @UIApplicationMain to @main follows modern Swift conventions.
recipients_app/ios/Podfile (2)
2-2
: Minimum iOS version update confirmedThe platform update to iOS 13.0 aligns with the PR objectives.
33-33
: Verify Firebase compatibilityThe FirebaseFirestore update to 11.4.0 should be verified against the Flutter Firebase plugin version.
recipients_app/ios/Runner/Info.plist (1)
57-57
: LGTM! Consistent minimum iOS versionThe MinimumOSVersion update to 13.0 is consistent with the Podfile configuration.
…3.0 to maintain consistency across configuration files.
Summary by CodeRabbit
Release Notes
New Features
Improvements
Bug Fixes
Chores
Performance