Skip to content

Remove dead codeless manifest entry, rewrite README, track every outbound link - #497

Merged
DennisAlund merged 3 commits into
mainfrom
chore/readme-rewrite-and-dead-manifest-entry
Aug 7, 2026
Merged

Remove dead codeless manifest entry, rewrite README, track every outbound link#497
DennisAlund merged 3 commits into
mainfrom
chore/readme-rewrite-and-dead-manifest-entry

Conversation

@DennisAlund

@DennisAlund DennisAlund commented Aug 7, 2026

Copy link
Copy Markdown
Member

Executes docs/WEBSITE-HANDOFF.md (Task B in commit 1, Task A in commit 2), after verifying its claims against this repo and the Facebook SDK source at the versions the plugin depends on. Commit 3 extends the tracking to every remaining link.

Merge gate: clear

  • Website PR oddbit/oddbit-website#552 is merged, so the pages exist.
  • All five destination URLs return 200 in production.
  • LOOPS_API_KEY is set in the website project, confirmed by the maintainer. The compatibility alert signup this README advertises is live. The key belongs to the website project only; nothing in this repo reads it.
  • All shortlinks exist and are verified, every one added to shortener bundle 3, every one returning a 200 final response.
  • The audit page's Calendly URL (calendly.com/dennis-oddbit/facebook-app-events) resolves 200, so gate 3 in the handoff is no longer a placeholder. Whether its intake questions are configured was not checked.
  • Every one of the 30 pre-existing oddb.it shortlinks is preserved, so click baselines stay comparable.

Commit 1: remove the dead manifest entry

com.facebook.sdk.CodelessDebugLogEnabled has been in the plugin manifest since the initial commit (October 2019) and never did anything. The key populates FacebookSdk.getCodelessDebugLogEnabled() and nothing in the SDK calls that getter. Codeless is gated server-side on both platforms: CodelessManager.onActivityResumed from Meta's fetched app settings on Android, FBSDKCodelessIndexer from the auto_event_setup_enabled field on iOS.

Verified identical at 18.0.0, 18.1.3, 18.2.3 and 18.3.0, which is the full span of the plugin's [18.0,19.0) range rather than only the version it resolves to today. No file in the plugin or the example app references codeless at all.

Because library manifests merge into the host app, the entry also forced any app wanting the key false to add tools:replace to win the merge, for no benefit.

Also records the Graph API version pin as a release-time check in CONTRIBUTING.md and de-pins the setGraphApiVersion dartdoc example.

Commit 2: rewrite the README

Adds a troubleshooting section for events not landing (previously absent), corrects the codeless section, fixes two miscited issues, states the real Graph API consequence, and replaces "Discussions and ideas" with a scope-based Getting help section that folds in the existing commercial support content.

Commit 3: track every outbound link

Previously untracked link targets are now shortlinks, so click-through is measurable per placement instead of only for links that already had one.

Slug Link id Destination
fbae-issue-474 98 issue 474
fbae-contributing 99 CONTRIBUTING.md
fbae-notice 100 NOTICE
fbae-trademark 101 TRADEMARK_POLICY.md
fbae-package-swift 102 ios Package.swift
fbae-graph-versioning 103 Graph API versioning guide
fbae-tags 104 repo tags
fbae-bug-report 105 bug report template
fbae-code-of-conduct 106 CODE_OF_CONDUCT.md
fbae-license 58 (upsert) LICENSE
fbae-graph-changelog 76 (upsert) Graph API changelog
fbae-issues 71 (upsert) repo issues
fbae-repo 15 (upsert) repo root

Plus the five from earlier: fbae-guides (93), fbae-guide-codeless (94), fbae-guide-not-landing (95), fbae-alerts (96), fbae-audit (97).

The four upserts returned duplicate: true and gained a placement-specific slug rather than a second link, so their counters stay separable from qpy / ku2 / 3wd / vrc instead of merging. Relative repo links became absolute blob/main URLs behind shortlinks, which also makes them work on pub.dev rather than only on GitHub.

Two link targets are deliberately not shortlinked:

  • The five img.shields.io badge URLs are <img src>, not click targets. GitHub proxies them through camo and pub.dev fetches them on render, so a shortlink would record one "click" per README view and bury real click data in impressions. The badges' click targets are already tracked.
  • #event-parameter-values is an in-page anchor with no URL to shorten.

Two corrections to the handoff document itself

  1. iOS SDK #2513 is not unrelated. The handoff calls it "a different warning about serving ads on iOS 14.5+". The reporter is on SDK 17.1.0 and Events Manager tells them their app must be updated to serve ads to iOS 14.5+ users, which is the same false-stale-SDK phenomenon the README documents. It stays cited, framed accurately.
  2. The Co-Authored-By convention claim does not hold. The handoff says "this repo's CLAUDE.md requires clean messages". CLAUDE.md says nothing about commit messages, CONTRIBUTING.md says only "clear and concise", and recent non-merge commits all carry the trailer. Followed existing repo practice.

One judgment call worth a look: CHANGELOG.md gained an ## Unreleased heading, a convention the file has not used before.

Still outstanding, but in the website repo rather than here: three technical corrections to the guide pages (#402's pod list names four of five pods, setDebugLoggingEnabled is described as app-event logging only when it also enables network request logging, and setAdvertiserTracking is described as iOS-only when the Android half still affects attribution).

🤖 Generated with Claude Code

DennisAlund and others added 2 commits August 7, 2026 15:02
The plugin's Android manifest has declared
com.facebook.sdk.CodelessDebugLogEnabled=true since the initial commit in
October 2019. It never did anything.

In Facebook Android SDK 18.x the key is read into a private field and
exposed via FacebookSdk.getCodelessDebugLogEnabled(), and nothing in the
SDK calls that getter. The codeless path is armed by CodelessManager
.onActivityResumed from Meta's fetched app settings
(appSettings.codelessEventsEnabled, UserSettingsManager
.getCodelessSetupEnabled()) plus BuildConfig.DEBUG && isEmulator(), where
that BuildConfig is the SDK library's own and so is always false in a
released AAR. iOS is the same shape: FBSDKCodelessIndexer gates on the
auto_event_setup_enabled field Meta returns, not on the
FacebookCodelessDebugLogEnabled plist key.

Because library manifests merge into the host app, the entry also forced
any app that wanted the key set to false to add tools:replace to win the
merge, for no benefit.

Also record the pinned Graph API version as a release-time check in
CONTRIBUTING.md, naming the three places the literal appears, and drop
the version literal from the setGraphApiVersion dartdoc example so it
cannot rot. The deadline worth tracking is Meta's deprecation notice
floor, not a version's expiry date: calls to an expired version are
routed to the oldest usable version rather than rejected.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Restructures the README so each documented problem carries its own
resolution path, and links the guide pages on oddbit.id that now hold the
full diagnosis.

- Add a troubleshooting section for events not landing in Events Manager,
  the most common support topic, which the README previously did not
  cover at all.
- Correct the codeless section. It no longer advises enabling codeless
  debug logging: neither CodelessDebugLogEnabled (Android manifest) nor
  FacebookCodelessDebugLogEnabled (Info.plist) has a consumer left in
  Facebook SDK 18.x, and codeless setup is gated by Meta server-side.
  Meta's own docs for those flags stay linked, described accurately.
- Fix two miscited issues. #402 is a different Events Manager message
  (remove FBSDKCoreKit and four sibling pods from the Podfile), closed
  stale with no diagnosis. #2513 is the same family of false "upgrade
  your SDK" report on SDK 17.1.0, about serving ads to iOS 14.5+ users.
  Both are now cited for what they show rather than as explanations.
- State the real Graph API consequence: removed versions are routed to
  the oldest usable version rather than rejected, so what reaches an app
  owner is a deprecation notice on a version nobody chose.
- Replace "Discussions and ideas" with a Getting help section scoped by
  kind of problem rather than by price, and fold the existing commercial
  support section into it. Plugin defects stay free, unconditionally.
- Add a compatibility alerts section and a commercial support badge.

Keeps every existing oddb.it shortlink so click baselines stay
comparable. The five new fbae-* shortlinks it introduces do not exist
yet and must be created before this merges.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 7, 2026 07:03

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR removes an inert Android manifest entry related to codeless debug logging, and significantly rewrites the README to address common “events not landing”/“please upgrade SDK” reader problems while clarifying the plugin’s Graph API version pin and support/help routes.

Changes:

  • Remove com.facebook.sdk.CodelessDebugLogEnabled from the plugin Android manifest (it was inert in FB SDK 18.x and imposed manifest-merge friction on host apps).
  • Expand/restructure README with a Troubleshooting section (events not showing; “Please Upgrade SDK” UI warning), compatibility alerts, and updated “Getting help” guidance.
  • Document the Graph API version pin as a release-time synchronization check across Android/iOS/README, and simplify the Dart setGraphApiVersion dartdoc wording.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
README.md Major documentation rewrite: troubleshooting, codeless warning explanation, Graph API pin explanation, and updated help/support links.
lib/facebook_app_events.dart Minor dartdoc edit for setGraphApiVersion input format.
CONTRIBUTING.md Adds a release checklist note to keep the pinned Graph API version literal in sync across platforms + README.
CHANGELOG.md Adds an “Unreleased” section documenting the manifest change and doc updates.
android/src/main/AndroidManifest.xml Removes the now-dead CodelessDebugLogEnabled meta-data entry (and the enclosing <application> block).
Suppressed comments (3)

README.md:158

  • This link to the codeless warning guide uses https://oddb.it/fbae-guide-codeless, but the PR description indicates the new fbae-* shortlinks don’t exist yet. This will result in a broken reference if merged before the shortlink is created.
Why the warning appears, what the SDK actually checks, and how to tell a UI defect from a real misconfiguration: [the "Please Upgrade SDK" warning explained](https://oddb.it/fbae-guide-codeless).

README.md:214

  • This "Getting help" bullet links to https://oddb.it/fbae-guides, but the PR description says the new fbae-* shortlinks aren’t created yet. This duplicates a now-broken link path in a prominent help section.
**Questions about using or configuring App Events:** start with the [guides](https://oddb.it/fbae-guides), then the [repository discussions](https://oddb.it/z42) or [StackOverflow](https://oddb.it/ywj).

README.md:216

  • This attribution-audit callout links to https://oddb.it/fbae-audit, but the PR description indicates the fbae-* shortlinks are not created yet. That would break the primary conversion link for this section.
**Attribution debugging where ad spend is on the line:** if installs and purchases are not matching up between your app, Events Manager and Ads Manager, that is usually not a plugin bug and not a quick answer. We offer a [Meta attribution audit](https://oddb.it/fbae-audit): a one hour diagnostic call at $300, credited in full against the audit fee if you go ahead, booked first and invoiced after we have read your intake answers. If the cause turns out to be a defect in this plugin, we fix it free and you keep the diagnostic.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md
Comment thread README.md
Comment thread README.md
Comment thread README.md
…tlink

Previously untracked link targets are now oddb.it shortlinks, so click-through
is measurable per placement rather than only for the links that already had
one. Relative repo links (CONTRIBUTING.md, LICENSE, NOTICE, TRADEMARK_POLICY.md,
Package.swift, CODE_OF_CONDUCT.md) become absolute blob/main URLs behind
shortlinks, which also makes them work on pub.dev rather than only on GitHub.

Destinations that already had a link reuse it and gain a placement-specific
slug, so counters stay separable: fbae-license on the LICENSE link, fbae-issues
on the issues link, fbae-repo on the repo link, and the existing
fbae-graph-changelog for the Graph API changelog.

Every new slug verified to redirect with a 200 final response. All added to
shortener bundle 3.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@DennisAlund DennisAlund changed the title Remove dead codeless manifest entry, rewrite README around reader problems Remove dead codeless manifest entry, rewrite README, track every outbound link Aug 7, 2026
@DennisAlund
DennisAlund merged commit 6fdd6ec into main Aug 7, 2026
5 checks passed
@DennisAlund
DennisAlund deleted the chore/readme-rewrite-and-dead-manifest-entry branch August 7, 2026 07:42
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.

2 participants