Skip to content

feat: enhance SDK documentation with Dart, Rust, and Liquid support#249

Open
joalves wants to merge 14 commits intodevelopmentfrom
update-sdk-docs
Open

feat: enhance SDK documentation with Dart, Rust, and Liquid support#249
joalves wants to merge 14 commits intodevelopmentfrom
update-sdk-docs

Conversation

@joalves
Copy link
Collaborator

@joalves joalves commented Jan 30, 2026

Summary

  • Add Dart SDK documentation with simplified initialization API
  • Add Rust SDK documentation with builder pattern support
  • Add Liquid (Shopify) SDK documentation with server-side rendering guidance
  • Update Flutter SDK to use new simplified API (matching Dart)
  • Fix naming inconsistencies: "Absmartly" → "ABsmartly" across Ruby and React examples

Changes

New SDK Documentation

  • Dart: Standalone Dart SDK with simplified .create() API and advanced manual configuration option
  • Rust: Rust SDK with SDKConfig::new() and optional builder pattern for advanced use cases
  • Liquid: Shopify Liquid template integration with client-side SDK and server-side rendering support

Updated Documentation

  • Flutter: Migrated to simplified API matching new Dart SDK pattern
  • React: Fixed component naming from <ABSmartly> to <ABsmartly>
  • Ruby: Fixed class naming from Absmartly to ABsmartly

Test Plan

  • Verify all code examples are syntactically correct
  • Confirm documentation builds without errors
  • Validate all SDK links and references are accurate
  • Check that naming is consistent across all SDK examples

Summary by CodeRabbit

Release Notes

  • Documentation

    • Added comprehensive initialization guides for Dart, Rust, and Liquid SDKs, including code examples and configuration options.
    • Updated Flutter and Ruby SDK initialization documentation with simplified and streamlined API usage patterns.
    • Included advanced configuration examples and server-side rendering options across language-specific guides.
  • Bug Fixes

    • Corrected component reference in React/Javascript initialization example.

✏️ Tip: You can customize this high-level summary in your review settings.

- Updated Flutter/Dart initialization example to use new ABSmartly.create() factory
- Simplified from multi-step ClientConfig creation to single factory call
- Added comprehensive SDK options table including retries, timeout, contextEventLogger
- Added advanced configuration section showing manual Client creation for custom use cases
- Improved code clarity and developer experience
- Maintained backwards compatibility

Example change:
Before: ClientConfig → Client → ABSmartlyConfig → ABSmartly
After: ABSmartly.create(endpoint, apiKey, application, environment)
Add missing SDK tabs to import-and-initialize documentation:
- Dart SDK with Absmartly.create() factory method and advanced config
- Rust SDK with SDKConfig builder pattern and async/await examples
- Liquid SDK for Shopify integration with server-side rendering

Update naming convention from ABSmartly to Absmartly:
- Flutter SDK now uses Absmartly.create() instead of ABSmartly.create()
- React provider examples updated to use <Absmartly> component
- Dart advanced config uses Absmartly/AbsmartlyConfig naming

Separate Dart from Flutter documentation to clarify pure Dart usage
versus Flutter-specific implementation.
- Updated all code examples to use correct naming: ABsmartly (AB uppercase)
- Fixed references in Rust, Dart, Flutter, and Ruby SDK examples
- Updated React component references in MDX documentation
- Ensured consistency across all import and initialize documentation
@coderabbitai
Copy link

coderabbitai bot commented Jan 30, 2026

Important

Review skipped

Too many files!

This PR contains 204 files, which is 54 over the limit of 150.

📥 Commits

Reviewing files that changed from the base of the PR and between a2c7bef and b5b29a1.

📒 Files selected for processing (204)
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/_setting-context-attributes.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/android/setAttributes.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/angular/setAttributes.ts
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/cpp/setAttributes.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/dart/setAttributes.dart
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/elixir/setAttributes.ex
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/kotlin/setAttributes.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/liquid/setAttributes.rb
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/rust/setAttributes.rs
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/scala/setAttributes.scala
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/context-attributes/setting-context-attributes/vue3/setAttributes.js
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/_custom-assignments.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/android/customAssignment.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/android/customAssignments.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/angular/customAssignment.ts
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/angular/customAssignments.ts
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/cpp/customAssignment.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/cpp/customAssignments.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/dart/customAssignment.dart
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/dart/customAssignments.dart
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/elixir/customAssignment.ex
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/elixir/customAssignments.ex
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/kotlin/customAssignment.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/kotlin/customAssignments.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/rust/customAssignment.rs
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/rust/customAssignments.rs
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/scala/customAssignment.scala
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/scala/customAssignments.scala
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/vue3/customAssignment.js
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/custom-assignments/vue3/customAssignments.js
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/_finalize.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/android/finalize.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/angular/finalize.ts
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/cpp/finalize.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/dart/finalize.dart
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/elixir/finalize.ex
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/kotlin/finalize.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/liquid/finalize.rb
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/rust/finalize.rs
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/scala/finalize.scala
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/finalize/vue3/finalize.js
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/_publish.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/android/publish.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/angular/publish.ts
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/cpp/publish.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/dart/publish.dart
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/elixir/publish.ex
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/kotlin/publish.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/liquid/publish.rb
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/rust/publish.rs
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/scala/publish.scala
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/publish/vue3/publish.js
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/_tracking-goals.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/android/trackingGoals.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/angular/trackingGoals.ts
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/cpp/trackingGoals.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/dart/trackingGoals.dart
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/elixir/trackingGoals.ex
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/kotlin/trackingGoals.kt
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/liquid/trackingGoals.liquid
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/rust/trackingGoals.rs
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/scala/trackingGoals.scala
  • docs/APIs-and-SDKs/SDK-Documentation/Advanced/tracking-goals/vue3/trackingGoals.js
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/_overriding.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/android/override.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/angular/override.ts
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/cpp/override.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/dart/override.dart
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/elixir/override.ex
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/kotlin/override.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/liquid/override.rb
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/rust/override.rs
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/scala/override.scala
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/overriding/vue3/override.js
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/_peeking.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/android/peekAtVariables.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/android/peekAtVariants.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/angular/peekAtVariables.ts
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/angular/peekAtVariants.ts
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/cpp/peekAtVariables.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/cpp/peekAtVariants.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/dart/peekAtVariables.dart
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/dart/peekAtVariants.dart
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/elixir/peekAtVariables.ex
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/elixir/peekAtVariants.ex
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/kotlin/peekAtVariables.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/kotlin/peekAtVariants.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/liquid/peekAtVariables.liquid
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/liquid/peekAtVariants.liquid
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/rust/peekAtVariables.rs
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/rust/peekAtVariants.rs
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/scala/peekAtVariables.scala
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/scala/peekAtVariants.scala
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/vue3/peekAtVariables.js
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/peeking/vue3/peekAtVariants.js
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/_selecting-a-treatment.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/android/selectingATreatment.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/angular/selectingATreatment.ts
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/cpp/selectingATreatment.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/dart/selectingATreatment.dart
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/elixir/selectingATreatment.ex
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/kotlin/selectingATreatment.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/liquid/selectingATreatment.liquid
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/rust/selectingATreatment.rs
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/scala/selectingATreatment.scala
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-treatment/vue3/selectingATreatment.js
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/_selecting-a-variable.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/android/selectingAVariable.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/angular/selectingAVariable.ts
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/cpp/selectingAVariable.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/dart/selectingAVariable.dart
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/elixir/selectingAVariable.ex
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/kotlin/selectingAVariable.kt
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/liquid/selectingAVariable.liquid
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/rust/selectingAVariable.rs
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/scala/selectingAVariable.scala
  • docs/APIs-and-SDKs/SDK-Documentation/basic-usage/selecting-a-variable/vue3/selectingAVariable.js
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/_create-new-context-request.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/android/async.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/android/extraUnits.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/android/refreshWithFreshData.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/android/refreshWithRefreshMethod.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/android/sync.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/angular/async.ts
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/angular/extraUnits.ts
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/angular/refreshWithFreshData.ts
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/angular/refreshWithRefreshMethod.ts
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/angular/sync.ts
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/cpp/async.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/cpp/extraUnits.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/cpp/refreshWithFreshData.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/cpp/refreshWithRefreshMethod.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/cpp/sync.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/dart/async.dart
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/dart/extraUnits.dart
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/dart/refreshWithFreshData.dart
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/dart/refreshWithRefreshMethod.dart
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/dart/sync.dart
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/elixir/async.ex
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/elixir/extraUnits.ex
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/elixir/refreshWithFreshData.ex
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/elixir/refreshWithRefreshMethod.ex
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/elixir/sync.ex
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/go/async.go
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/go/refreshWithFreshData.go
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/go/sync.go
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/kotlin/async.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/kotlin/extraUnits.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/kotlin/refreshWithFreshData.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/kotlin/refreshWithRefreshMethod.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/kotlin/sync.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/liquid/extraUnits.rb
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/liquid/prefetchedData.rb
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/liquid/refresh.rb
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/liquid/sync.rb
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/ruby/async.rb
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/rust/async.rs
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/rust/extraUnits.rs
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/rust/refreshWithFreshData.rs
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/rust/refreshWithRefreshMethod.rs
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/rust/sync.rs
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/scala/async.scala
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/scala/extraUnits.scala
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/scala/refreshWithFreshData.scala
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/scala/refreshWithRefreshMethod.scala
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/create-new-context-request/scala/sync.scala
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/_custom-event-logger.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/android/customEventLogger.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/angular/customEventLogger.ts
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/cpp/customEventLogger.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/dart/customEventLogger.dart
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/elixir/customEventLogger.ex
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/kotlin/customEventLogger.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/liquid/customEventLogger.rb
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/rust/customEventLogger.rs
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/scala/customEventLogger.scala
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/custom-event-logger/vue3/customEventLogger.js
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/_import-and-initialize.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/android/import.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/angular/import.ts
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/cpp/initialize.cpp
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/elixir/import.ex
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/go/initialize.go
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/java/import.java
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/kotlin/import.kt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/php/importAndInitialize.php
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/php/paramsInOrder.php
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/scala/import.scala
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/_install.mdx
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/android/install.gradle
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/angular/install.bash
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/cpp/CMakeLists.txt
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/cpp/install.bash
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/dart/install.yaml
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/elixir/install.ex
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/kotlin/install.gradle
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/liquid/bundle.bash
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/liquid/gemfile.rb
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/rust/install.toml
  • docs/APIs-and-SDKs/SDK-Documentation/getting-started/install/scala/build.sbt
  • docs/APIs-and-SDKs/SDK-Documentation/index.mdx
  • docusaurus.config.js
  • src/scss/custom.scss
  • src/theme/prism-include-languages.js

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

This pull request extends SDK initialization documentation by adding new code examples for Dart, Rust, and Liquid languages. The primary documentation file is reorganized to include language-specific tabs with corresponding SDK options and configuration examples. Existing Flutter and Dart examples are updated to use a consistent ABsmartly.create() factory method pattern. A Ruby import example is updated to use consistent naming conventions. The changes are entirely documentation-focused, introducing new language support without modifying the underlying SDK implementations.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Poem

🐰 Hops with glee through docs anew,
Adding Dart, Rust, Liquid too!
Languages dance in tidy tabs,
Configuration, no more slabs.
Consistency blooms, the SDK grows bright,
Documentation shines with all its might! 🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and accurately reflects the main changes: addition of Dart, Rust, and Liquid SDK documentation support to enhance the documentation.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch update-sdk-docs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@netlify
Copy link

netlify bot commented Jan 30, 2026

Deploy Preview for absmartly-docs ready!

Name Link
🔨 Latest commit b5b29a1
🔍 Latest deploy log https://app.netlify.com/projects/absmartly-docs/deploys/69a15a5b4e234500083395d8
😎 Deploy Preview https://deploy-preview-249--absmartly-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link

@coderabbitai coderabbitai bot left a 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

🤖 Fix all issues with AI agents
In
`@docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/liquid/initialize.liquid`:
- Around line 6-16: The Liquid template embeds unescaped values into
window.absmartlyConfig (application, units.session_id, units.customer_id) which
can break JS or enable XSS; update the template to JSON-encode those
interpolations using the Liquid json filter (e.g. application: {{ shop.name |
json }}, session_id: {{ request.cookie.session_id | json }}, and customer_id: {{
customer.id | json }}) so the values are safely serialized for inclusion in the
script.

Comment on lines +6 to +16
<script>
window.absmartlyConfig = {
endpoint: 'https://your-company.absmartly.io/v1',
apiKey: 'YOUR-API-KEY',
application: '{{ shop.name }}',
environment: 'production',
units: {
session_id: '{{ request.cookie.session_id }}',
{% if customer %}customer_id: {{ customer.id }}{% endif %}
}
};
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Escape Liquid output to keep JS valid and avoid injection.
shop.name, request.cookie.session_id, and customer.id are interpolated without JSON encoding; quotes or special characters can break the script or introduce XSS. Use the json filter to safely serialise values.

Proposed fix
-  window.absmartlyConfig = {
-    endpoint: 'https://your-company.absmartly.io/v1',
-    apiKey: 'YOUR-API-KEY',
-    application: '{{ shop.name }}',
-    environment: 'production',
-    units: {
-      session_id: '{{ request.cookie.session_id }}',
-      {% if customer %}customer_id: {{ customer.id }}{% endif %}
-    }
-  };
+  window.absmartlyConfig = {
+    endpoint: 'https://your-company.absmartly.io/v1',
+    apiKey: 'YOUR-API-KEY',
+    application: {{ shop.name | json }},
+    environment: 'production',
+    units: {
+      session_id: {{ request.cookie.session_id | json }}{% if customer %},
+      customer_id: {{ customer.id | json }}{% endif %}
+    }
+  };
🤖 Prompt for AI Agents
In
`@docs/APIs-and-SDKs/SDK-Documentation/getting-started/import-and-initialize/liquid/initialize.liquid`
around lines 6 - 16, The Liquid template embeds unescaped values into
window.absmartlyConfig (application, units.session_id, units.customer_id) which
can break JS or enable XSS; update the template to JSON-encode those
interpolations using the Liquid json filter (e.g. application: {{ shop.name |
json }}, session_id: {{ request.cookie.session_id | json }}, and customer_id: {{
customer.id | json }}) so the values are safely serialized for inclusion in the
script.

…ions

Add Angular, Android, Kotlin, C++, Scala, Elixir, Dart, Rust, Liquid,
and Vue3 code snippets to all 13 documentation sections (install,
import-and-initialize, create-new-context-request, custom-event-logger,
selecting-a-treatment, selecting-a-variable, peeking, overriding,
context-attributes, custom-assignments, tracking-goals, publish,
finalize).

Update all MDX files with new raw-loader imports and TabItem blocks.
Fix pre-existing Tabitem casing bugs in basic-usage MDX files.
- Add CSS flex-wrap to .tabs so all SDK tabs are visible without
  horizontal scrolling
- Rename "Flutter/Dart" tab to "Flutter" across all 12 MDX files
  since Dart now has its own separate tab
Add Prism language support for kotlin, elixir, rust, toml, cmake, and
liquid. Override prism-include-languages.js to keep Prism global
available for non-IIFE language components like liquid that reference
it in hook callbacks.
…structor

Replace trailing-underscore fields (Endpoint_, ApiKey_, Units_) with
idiomatic Go names (Endpoint, APIKey, Units). Fix RefreshInteval_ typo.
Add sdk.New() one-liner alternative.
Replace inject("$absmartly") pattern with the new useABSmartly()
composable from @absmartly/vue3-sdk across all Vue3 code examples.
Replace manual fetchContextData() + direct Context() construction with
the new ABsmartly.create() + sdk.createContext()/createContextWith() API.
Replace manual fetch_context_data() + JSON parse + direct Context()
construction with SDK::create() + sdk->create_context() wrapper API.
Update all context method calls from stack (.) to pointer (->) syntax.
Add create_context_async example with wait_until_ready pattern
to the Ruby tab in the context creation docs.
… fixes

Java: show ABsmartly.create(endpoint, apiKey, app, env) convenience factory
PHP: use createSimple() with correct parameter order
Scala: use fetchContextDataAsync() instead of deprecated blocking call
Android: show ABSmartlyAndroid.Builder() with auto SQLite cache
Rust: pass ContextOptions instead of None
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.

1 participant