Bump Ditto SDK to 4.14.4-rc.4 across all quickstart apps#276
Closed
Kristopher Johnson (kristopherjohnson) wants to merge 6 commits intomainfrom
Closed
Bump Ditto SDK to 4.14.4-rc.4 across all quickstart apps#276Kristopher Johnson (kristopherjohnson) wants to merge 6 commits intomainfrom
Kristopher Johnson (kristopherjohnson) wants to merge 6 commits intomainfrom
Conversation
Compile the fmt pod as C++17 in a post_install hook so __cpp_consteval is not defined, which forces fmt to skip the consteval FMT_STRING code path entirely and fall back to runtime format-string validation. Scoped to the fmt target only — RCT-Folly, React-Core, and the rest of RN keep their C++20 settings. Without this, `react-native run-ios` (Debug or Release) fails on Xcode 26.4 with errors like: call to consteval function 'fmt::basic_format_string<...>' is not a constant expression This mirrors the fix landed in the SDK monorepo's example app (getditto/ditto#22248, backported to releases/stable/sdk-4.14 in #22327). Remove when React Native upgrades to a build that bundles fmt >= 11.1. See SDKS-3242.
Bumps the SDK pin from 4.14.3 to 4.14.4-rc.4 with regenerated lockfiles, and tightens flexible constraints to exact pins so the smoke-test result is unambiguous about which RC build was tested. Apps updated: cpp-tui, dotnet-maui, dotnet-tui, dotnet-winforms, flutter_app, javascript-tui, javascript-web, react-native, react-native-expo, rust-tui, swift. android-java and android-kotlin are NOT bumped: live.ditto:ditto and live.ditto:ditto-cpp 4.14.4-rc.4 are not yet published to Maven Central. Will be added in a follow-up commit once they publish.
Copilot started reviewing on behalf of
Kristopher Johnson (kristopherjohnson)
April 30, 2026 20:11
View session
Contributor
There was a problem hiding this comment.
Pull request overview
Updates the Ditto SDK dependency to 4.14.4-rc.4 across multiple quickstart apps, and adds an iOS CocoaPods post_install workaround for the React Native quickstart to avoid Xcode 26.4 fmt consteval build failures.
Changes:
- Bump Ditto SDK to
4.14.4-rc.4for Swift (SPM), Rust (Cargo), JS (npm/yarn), Flutter (pub + CocoaPods), .NET (NuGet), and C++ (Makefile). - Add a React Native iOS
Podfilepost_installhook to force thefmtpod to build as C++17 (scoped to thefmttarget) to work around Xcode 26.4. - Regenerate/update lockfiles accordingly (Cargo.lock, yarn.lock/package-lock.json, pubspec.lock, Podfile.lock, Package.resolved).
Reviewed changes
Copilot reviewed 15 out of 23 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| swift/Tasks.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved | Pin DittoSwiftPackage to 4.14.4-rc.4 revision/version. |
| swift/Tasks.xcodeproj/project.pbxproj | Switch Swift package requirement to exactVersion 4.14.4-rc.4. |
| rust-tui/Cargo.toml | Pin dittolive-ditto to =4.14.4-rc.4. |
| rust-tui/Cargo.lock | Update Rust resolved Ditto crates to 4.14.4-rc.4 with new checksums. |
| react-native/package.json | Bump @dittolive/ditto to 4.14.4-rc.4. |
| react-native/yarn.lock | Update @dittolive/ditto lock entry to 4.14.4-rc.4. |
| react-native/ios/Podfile | Add post_install override to compile fmt pod as C++17 on Xcode 26.4. |
| react-native-expo/package.json | Bump @dittolive/ditto to 4.14.4-rc.4. |
| react-native-expo/yarn.lock | Update Expo RN lockfile for the Ditto bump (and transitive changes). |
| javascript-web/package.json | Bump @dittolive/ditto to 4.14.4-rc.4. |
| javascript-web/package-lock.json | Update npm lockfile for the Ditto bump. |
| javascript-tui/package.json | Bump @dittolive/ditto to 4.14.4-rc.4. |
| javascript-tui/package-lock.json | Update npm lockfile for the Ditto bump. |
| flutter_app/pubspec.yaml | Bump ditto_live to 4.14.4-rc.4. |
| flutter_app/pubspec.lock | Update Dart/Flutter dependency resolution for 4.14.4-rc.4. |
| flutter_app/ios/Podfile.lock | Update iOS pods to ditto_live/DittoFlutter 4.14.4-rc.4. |
| flutter_app/macos/Podfile.lock | Update macOS pods to ditto_live/DittoFlutter 4.14.4-rc.4. |
| dotnet-winforms/TasksApp/DittoTasksApp.csproj | Bump NuGet Ditto to 4.14.4-rc.4. |
| dotnet-winforms/IntegrationTest/IntegrationTest.csproj | Bump NuGet Ditto to 4.14.4-rc.4. |
| dotnet-tui/DittoDotNetTasksConsole/DittoDotNetTasksConsole.csproj | Bump NuGet Ditto to 4.14.4-rc.4. |
| dotnet-tui/DittoDotNetTasksConsole.Tests/DittoDotNetTasksConsole.Tests.csproj | Bump NuGet Ditto to 4.14.4-rc.4. |
| dotnet-maui/DittoMauiTasksApp/DittoMauiTasksApp.csproj | Bump NuGet Ditto to 4.14.4-rc.4. |
| cpp-tui/taskscpp/Makefile | Bump DITTO_SDK_VERSION to 4.14.4-rc.4. |
Files not reviewed (2)
- javascript-tui/package-lock.json: Language not supported
- javascript-web/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
live.ditto:ditto and live.ditto:ditto-cpp 4.14.4-rc.4 published to Maven Central; ./gradlew :app:dependencies resolves the new pin in both apps.
Ben Chatelain (phatblat)
approved these changes
Apr 30, 2026
CI uses yarn only; the package-lock.json still pinned 4.14.3 and risks the lockfile-mixing bug where npm install silently downgrades yarn.lock from Berry to Classic. Standardize on yarn for this app, matching the bare react-native quickstart.
SDK 4.14.4 deprecates the legacy sync helpers and the Ditto::builder() pattern. Replace the legacy calls with their successors: - ditto.is_sync_active() -> ditto.sync().is_active() - ditto.start_sync() -> ditto.sync().start() - ditto.stop_sync() -> ditto.sync().stop() Suppress the Ditto::builder()/OnlinePlayground deprecation warning with #[allow(deprecated)] on the affected init functions; the full DittoConfig migration belongs in a follow-up. Unblocks the Rust TUI / Lint job (cargo clippy -- -D warnings).
The Ditto Cloud API key has been expired/invalid since 2026-03-16, which blocks every CI job that depends on the seed-ditto-document action or BrowserStack creds. The javascript-tui and javascript-web workflows already disable their affected jobs with `if: false` and a DEVX-759 reference. This commit applies the same pattern to the remaining jobs that share the same root cause: - Integration Test: rust-tui, dotnet-tui, dotnet-winforms, cpp-tui - BrowserStack: flutter (Android+iOS), swift (iOS), android-java, android-kotlin, dotnet-maui (Android+iOS) Re-enable these jobs in a follow-up once DEVX-759 lands and the cloud creds are refreshed.
Collaborator
Author
|
Closing this PR after completing testing of 4.14.4-rc.4 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bumps the Ditto SDK from
4.14.3→4.14.4-rc.4across the quickstart apps whose registries already have rc.4 published, with regenerated lockfiles.Apps updated:
android-java,android-kotlin,cpp-tui,dotnet-maui,dotnet-tui,dotnet-winforms,flutter_app,javascript-tui,javascript-web,react-native,react-native-expo,rust-tui,swift.Excluded as before (5.x, preview, or no committed SDK pin):
kotlin-multiplatform,java-server,java-spring,go-tui,edge-server,android-cpp.This branch also picks up the React Native iOS Podfile fmt-consteval
post_installhook from #275 so RN iOS builds on Xcode 26.4. #275 stays open and merges separately.Pinning approach
All flexible version constraints were tightened to exact pins so the smoke-test result is unambiguous about which RC build was tested:
rust-tui/Cargo.toml:=4.14.4-rc.4flutter_app/pubspec.yaml: no caretjavascript-tui/package.json,javascript-web/package.json: no caretswift/Tasks.xcodeproj:kind = exactVersion(wasupToNextMajorVersion)react-nativeandreact-native-expoalready used exact pins.Local verification
cargo buildnpm run buildnpm run builddotnet build(DittoDotNetTasksConsole)make buildinubuntu:24.04Docker (--parallel 1to fit 2 GB Docker memory; the C++ SDK is Linux-only — macOS and Windows are not published)xcodebuild clean buildfor iOS Simulatorflutter build apk --debug(Flutter plugin downloadsditto.jarandlibdittoffi.sofromsoftware.ditto.live, not Maven Central)pod install+ Metro bundleyarn installresolves rc.4 (Expo project; full bundle deferred to CI)dotnet buildfornet9.0-ios,net9.0-maccatalyst, andnet9.0-android(NuGet'sDitto.Native.Androidbundles the AAR — independent of Maven Central)./gradlew :app:dependenciesresolveslive.ditto:ditto:4.14.4-rc.4Linear
Closes SDKS-3596
Test plan
if: false, mirroring the pattern already injavascript-tui-ci.yml/javascript-web-ci.yml. Re-enable in a follow-up once DEVX-759 lands.Workarounds carried forward from rc.3
fmt-constevalpost_installhook for Xcode 26.4. Cherry-picked from fix(react-native): disable fmt consteval for Xcode 26.4 builds #275; that PR remains open.ditto_liveplugin missingconsumer-rules.profor Android release-mode R8. Will apply consumer-side proguard workaround locally only during manual on-device testing; not committed here.