Skip to content
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

chore: sample apps #281

Draft
wants to merge 4 commits into
base: feature/cdp/push
Choose a base branch
from
Draft

Conversation

Ahmed-Ali
Copy link

@Ahmed-Ali Ahmed-Ali commented Jun 23, 2024

This PR introduces a complete rewrite of our sample apps. It is massive PR so I will do my best to narrow down the effective areas that needs deep review.

Setup and Structure

  • By default a React Native (RN) library's sample app is located in the example folder. This applies to our case.
  • All the RN source codeexample/src
  • All the CustomerIO.* usage can be seen in example/src/App.tsx
  • Native iOS codebase base is split in three places:
    1. example/ios/Shared This is where most of the native code lives.
    2. example/ios/APN contains the files (currently Info.plist and constants.swift) that contains values applicable to the APN sample app only.
    3. example/ios/FCM contains the files (currently Info.plist and constants.swift) that contains values applicable to the FCM sample app only.
  • Native iOS Xcode Workspace includes 4 targets. APN target with its NSE target, and FCM target and its NSE target as well.
  • example/ios/Podfile sets up the dependencies for each target and points to local paths to make it easier to debug the native SDK locally.
  • When running the app, QA settings can be seen if you long-press the settings button

Review

This is a massive PR, it can be broken down for sure. However, since the sample code isn't meant to be production-perfect, I think we can channel the review efforts in the most relevant areas that ensures the apps are setup properly, and they are making a valid use of the SDK.
To that extent, I would recommend focusing on:

  • example/src/App.tsx as this is the entry point for anyone examining the app as a usage sample.
  • example/package.json To make sure it doesn't do anything that's not applicable for production apps and could cause us to miss issues that would otherwise surface in a production setup.
  • Examine the iOS setup (instructions below on how to get it up and running)
  • Ignore the entire Android setup as there is nothing done for it so far. All you will see are template files. These should be introduced later when Android CDP is ready.

Steps to run the app locally

  1. git clone https://github.com/customerio/customerio-reactnative --recursive
  2. cd customerio-reactnative
  3. yarn install
  4. yarn example pods
  5. yarn example ios-apn or yarn example ios-cfm to run either the APN or FCM apps

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.

PR Stack:

@Ahmed-Ali Ahmed-Ali changed the title Feature/cdp/example apn app chore: sample apps Jun 23, 2024
@Ahmed-Ali Ahmed-Ali force-pushed the feature/cdp/example-apn-app branch from 35501b8 to 41325f2 Compare June 24, 2024 09:32
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