This PR introduces the core CustomerIO wrapper rewrite. These changes includes:
The config parsing logic, which is mostly delegated to Swift's decodable type and RN object to json serialization. As long as the native struct matches the JS object, no more manual (de)serializing is needed.
Setting up the native logger bridge
Initializing CDP and in-app, if it is enabled.
The typescript/native CDP APIs
Typescript still points to native in-app and push in the same way it used to before
Context
We are rebuilding our React Native (RN) SDK to support Customer.io's Data Pipelines.
Public Changes
SDK Changes
Modernized our RN package to use the latest configurations and dependencies available in RN version 0.74.2.
Simplified our configuration to provide the minimum number of settings that make sense for our customers.
Added support to view native debug logs directly in the console alongside other console.* logs.
Example Apps
Created customer-oriented example apps where you can build, run, debug, and see the SDK usage in the App.tsx file.
Internal Changes
SDK Dev Environment Setup
Removed the pre-push hook that runs lint, as it can be challenging when lint fails before a push in a PR stack setup. Linting has been moved to the pre-commit hook.
Implemented yarn workspace for easier management of example apps.
Configured example apps to point to local paths for all native CIO pods, facilitating easier debugging and validation of native changes.
Made the native iOS repo a git submodule of this repo, simplifying the process of starting and validating relevant native changes within the RN repo.
Unified the example app codebase for both APN and FCM configurations, making it easier to maintain.
Included yarn release to ensure a consistent development experience.
Added yarn.lock to .gitignore.
QA Setup
Dev endpoints for QA can still be set in the example apps with a long-press on the settings button. This allows us to perform QA configurations without affecting customer-oriented examples.
This PR introduces the core CustomerIO wrapper rewrite. These changes includes:
decodable
type and RN object to json serialization. As long as the native struct matches the JS object, no more manual (de)serializing is needed.Context
We are rebuilding our React Native (RN) SDK to support Customer.io's Data Pipelines.
Public Changes
console.*
logs.App.tsx
file.Internal Changes
pre-push
hook that runslint
, as it can be challenging when lint fails before a push in a PR stack setup. Linting has been moved to thepre-commit
hook.yarn
workspace for easier management of example apps.yarn
release to ensure a consistent development experience.yarn.lock
to.gitignore
.QA Setup
PR Stack:
282
281
280
278
277