Remove dead codeless manifest entry, rewrite README, track every outbound link - #497
Merged
Merged
Conversation
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>
Contributor
There was a problem hiding this comment.
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.CodelessDebugLogEnabledfrom 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
setGraphApiVersiondartdoc 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 newfbae-*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 newfbae-*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 thefbae-*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.
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
LOOPS_API_KEYis 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.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.oddb.itshortlinks is preserved, so click baselines stay comparable.Commit 1: remove the dead manifest entry
com.facebook.sdk.CodelessDebugLogEnabledhas been in the plugin manifest since the initial commit (October 2019) and never did anything. The key populatesFacebookSdk.getCodelessDebugLogEnabled()and nothing in the SDK calls that getter. Codeless is gated server-side on both platforms:CodelessManager.onActivityResumedfrom Meta's fetched app settings on Android,FBSDKCodelessIndexerfrom theauto_event_setup_enabledfield on iOS.Verified identical at
18.0.0,18.1.3,18.2.3and18.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
falseto addtools:replaceto win the merge, for no benefit.Also records the Graph API version pin as a release-time check in
CONTRIBUTING.mdand de-pins thesetGraphApiVersiondartdoc 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.
fbae-issue-474fbae-contributingfbae-noticefbae-trademarkfbae-package-swiftfbae-graph-versioningfbae-tagsfbae-bug-reportfbae-code-of-conductfbae-licensefbae-graph-changelogfbae-issuesfbae-repoPlus 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: trueand gained a placement-specific slug rather than a second link, so their counters stay separable fromqpy/ku2/3wd/vrcinstead of merging. Relative repo links became absoluteblob/mainURLs behind shortlinks, which also makes them work on pub.dev rather than only on GitHub.Two link targets are deliberately not shortlinked:
img.shields.iobadge 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-valuesis an in-page anchor with no URL to shorten.Two corrections to the handoff document itself
Co-Authored-Byconvention claim does not hold. The handoff says "this repo's CLAUDE.md requires clean messages".CLAUDE.mdsays nothing about commit messages,CONTRIBUTING.mdsays only "clear and concise", and recent non-merge commits all carry the trailer. Followed existing repo practice.One judgment call worth a look:
CHANGELOG.mdgained an## Unreleasedheading, 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,
setDebugLoggingEnabledis described as app-event logging only when it also enables network request logging, andsetAdvertiserTrackingis described as iOS-only when the Android half still affects attribution).🤖 Generated with Claude Code