Skip to content

New SDK is unreleased (no tags) and lacks a public fetch-only API #12

Description

@Sumit150

Hi — we're trying to migrate from the legacy AdButler CocoaPod (1.0.8) to the new SPM SDK and ran into two blockers.

1. The new SDK on main has no tag or release

The README documents the new API (AdButler.configure(accountId:), AdButlerBannerView, AdButlerInterstitialAd, AdButlerNativeAd, AdButlerVASTPlayer, etc.). But:

  • Latest tag is 1.0.8 (commit 622237bb), which is the pre-rewrite code — none of the documented APIs exist there.
  • The new SDK code only lives on main at SHA 92230d5fa7fb11e73cbf4b1bc64657e81d1c0bfb, untagged.
  • README's installation instructions are misleading as a result:
    • .package(url: \"...\", from: \"1.0.0\") resolves to 1.0.8 → old code → README examples don't compile.
    • pod 'AdButlerSDK', '~> 1.0' — same issue (and no `AdButlerSDK` podspec appears to be published on trunk).

Consumers currently have to pin to a commit SHA, which means no semver, no release notes, no upgrade path. Could you cut a `2.0.0` (or whatever) tag against the current `main` and publish a GitHub release? Same for the CocoaPods podspec if CocoaPods is still supported.

Related: #10 (SPM support, open since 2023) — looks like the rewrite happened but the release step never finished.

2. No public fetch-only API

`AdButlerClient.fetchAd(request:accountId:) async throws -> AdResponse` is exactly the API we need — but the class is `internal`, so we can't call it.

The public surface is entirely rendering components (`AdButlerBannerView`, `AdButlerInterstitialAd`, etc.) that fetch + render in one step. Our app has a marketplace screen that pre-fetches ad data and injects it into pre-existing custom `UITableViewCell` subclasses styled to match the product list. We can't drop in `AdButlerBannerView` without rewriting every banner cell.

Would you consider promoting a fetch-only entry point to public API? Something like:

```swift
public extension AdButler {
static func fetchAd(request: AdRequest) async throws -> AdResponse
}
```

That would let apps with existing UI keep their rendering and still get the SDK's benefits (response parsing, tracking pixels, viewability hooks, frequency capping) — instead of having to reimplement those against the public ad-serve endpoint with `URLSession` directly, which is what we've ended up doing.

Happy to open a PR for the public fetch API if you'd be open to merging it.

Thanks!

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions