Skip to content

Bump Ditto SDK to 4.14.4-rc.4 across all quickstart apps#276

Closed
Kristopher Johnson (kristopherjohnson) wants to merge 6 commits intomainfrom
kj/bump-sdk-4.14.4-rc.4
Closed

Bump Ditto SDK to 4.14.4-rc.4 across all quickstart apps#276
Kristopher Johnson (kristopherjohnson) wants to merge 6 commits intomainfrom
kj/bump-sdk-4.14.4-rc.4

Conversation

@kristopherjohnson
Copy link
Copy Markdown
Collaborator

@kristopherjohnson Kristopher Johnson (kristopherjohnson) commented Apr 30, 2026

⚠️ DO NOT MERGE

This PR pins the Ditto SDK to a release candidate (4.14.4-rc.4) and exists solely so we can build and smoke-test the RC in our quickstart apps. It must not be merged into main.

Summary

Bumps the Ditto SDK from 4.14.34.14.4-rc.4 across 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_install hook 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.4
  • flutter_app/pubspec.yaml: no caret
  • javascript-tui/package.json, javascript-web/package.json: no caret
  • swift/Tasks.xcodeproj: kind = exactVersion (was upToNextMajorVersion)

react-native and react-native-expo already used exact pins.

Local verification

App Status
rust-tui cargo build
javascript-tui npm run build
javascript-web npm run build
dotnet-tui dotnet build (DittoDotNetTasksConsole)
cpp-tui make build in ubuntu:24.04 Docker (--parallel 1 to fit 2 GB Docker memory; the C++ SDK is Linux-only — macOS and Windows are not published)
swift xcodebuild clean build for iOS Simulator
flutter_app flutter build apk --debug (Flutter plugin downloads ditto.jar and libdittoffi.so from software.ditto.live, not Maven Central)
react-native pod install + Metro bundle
react-native-expo yarn install resolves rc.4 (Expo project; full bundle deferred to CI)
dotnet-maui dotnet build for net9.0-ios, net9.0-maccatalyst, and net9.0-android (NuGet's Ditto.Native.Android bundles the AAR — independent of Maven Central)
dotnet-winforms skipped (Windows-only target)
android-java ./gradlew :app:dependencies resolves live.ditto:ditto:4.14.4-rc.4
android-kotlin ✅ same

Linear

Closes SDKS-3596

Test plan

  • CI green across every per-app workflow
    • All per-app build and lint jobs are green
    • Integration Test and BrowserStack jobs blocked by DEVX-759 (Ditto Cloud API key expired/invalid since 2026-03-16) are skipped via if: false, mirroring the pattern already in javascript-tui-ci.yml / javascript-web-ci.yml. Re-enable in a follow-up once DEVX-759 lands.
  • Smoke test C++ quickstart (cpp-tui) against the RC — SDKS-3596
  • Smoke test Flutter quickstart against the RC — SDKS-3596
  • Smoke test React Native quickstart against the RC — SDKS-3596
  • Manually test Flutter app on Android and iOS devices
  • Manually test React Native app on Android and iOS devices

Workarounds carried forward from rc.3

  • SDKS-3242 / SDKS-3595 — RN iOS Podfile fmt-consteval post_install hook for Xcode 26.4. Cherry-picked from fix(react-native): disable fmt consteval for Xcode 26.4 builds #275; that PR remains open.
  • SDKS-3594 — Flutter ditto_live plugin missing consumer-rules.pro for Android release-mode R8. Will apply consumer-side proguard workaround locally only during manual on-device testing; not committed here.

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.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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.4 for Swift (SPM), Rust (Cargo), JS (npm/yarn), Flutter (pub + CocoaPods), .NET (NuGet), and C++ (Makefile).
  • Add a React Native iOS Podfile post_install hook to force the fmt pod to build as C++17 (scoped to the fmt target) 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.

Comment thread cpp-tui/taskscpp/Makefile
Comment thread react-native-expo/package.json
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.
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.
@kristopherjohnson
Copy link
Copy Markdown
Collaborator Author

Closing this PR after completing testing of 4.14.4-rc.4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants