Skip to content

[SDK-337] Fix for status bar overlap on in-app messages#988

Open
franco-zalamena-iterable wants to merge 8 commits intomasterfrom
SDK-337-in-app-close-button-position
Open

[SDK-337] Fix for status bar overlap on in-app messages#988
franco-zalamena-iterable wants to merge 8 commits intomasterfrom
SDK-337-in-app-close-button-position

Conversation

@franco-zalamena-iterable
Copy link
Copy Markdown
Contributor

@franco-zalamena-iterable franco-zalamena-iterable commented Feb 10, 2026

🔹 Jira Ticket(s) if any

✏️ Description

We had a problem with fullscreen in-app messages, some clients were getting the close button behind the status bar and losing the ability to close the message.
The flag FLAG_FULLSCREEN was just making the content appear under the status bar but blocking clicks and obstructing the view.

The fix is to have new flags:

  • FORCE_RESPECT_BOUNDS;
  • FORCE_EDGE_TO_EDGE;
  • FOLLOW_APP_LAYOUT;
  • FORCE_FULLSCREEN.

These are meant to control the way the in-app will be drawn in relation to the status bar of the app. The default behavior will be FORCE_EDGE_TO_EDGE so clients implementing it will not have to migrate or opt out

@franco-zalamena-iterable franco-zalamena-iterable changed the title [SDK-337] Auto hide status bar flag for in-app messages fullscreen [SDK-337] Fix for status bar overlap on in-app messages Mar 24, 2026
@joaodordio joaodordio self-requested a review April 1, 2026 16:16
@franco-zalamena-iterable franco-zalamena-iterable force-pushed the SDK-337-in-app-close-button-position branch from de2b8af to eccf755 Compare April 1, 2026 16:37
- Replace Java 14 switch expression in shouldApplySystemBarInsets() with
  traditional switch/case for broader JDK compatibility
- Remove unused InAppLayout parameter from configureSystemBarsFollowingApp()
  and the unused local variable in configureSystemBarsForMode()
- Change default IterableInAppDisplayMode from FOLLOW_APP_LAYOUT to
  FORCE_EDGE_TO_EDGE to preserve existing SDK behavior (no breaking change)
- Update changelog and javadoc to reflect new default

Made-with: Cursor
Copy link
Copy Markdown
Contributor

@sumeruchat sumeruchat left a comment

Choose a reason for hiding this comment

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

Great work! Overall looks good to me but there is a docs issue we should resolve before merging :)

The enum's javadoc on FOLLOW_APP_LAYOUT says "Default.", but the actual Builder default and resolveDisplayMode() fallback are both FORCE_EDGE_TO_EDGE. The CHANGELOG also documents FORCE_EDGE_TO_EDGE as the default.

This is also inconsistent with the original PR description, which said the default would be FOLLOW_APP_LAYOUT so "clients implementing it will not have to think about it."

Can you clarify which was intended?

  1. Opt-in (current behavior) — existing clients keep hitting the obscured close-button bug until they explicitly set a different mode. If this is right, just move the "Default." note from FOLLOW_APP_LAYOUT to FORCE_EDGE_TO_EDGE in IterableInAppDisplayMode.java.
  2. Auto-fix (per original description) — change the Builder default and resolveDisplayMode() fallback to FOLLOW_APP_LAYOUT, and update the CHANGELOG.

This is a product call but it needs to be consistent across javadoc, Builder default, fallback, and CHANGELOG before merge.

@sumeruchat
Copy link
Copy Markdown
Contributor

sumeruchat commented Apr 13, 2026

One more thing — given this touches system-bar handling across a range of API levels (pre-R legacy flags, R+ WindowInsetsController, API 35+ default-transparent bars) and four display modes, please do thorough manual testing before merge. Specifically:

  • All four IterableInAppDisplayMode values on an edge-to-edge host app and a non-edge-to-edge host app.
  • API levels: pre-R (legacy flag path), R–34, and 35+ (default-transparent bars path).
  • Fullscreen in-apps, top/bottom/center layouts — verify the close button is reachable and not behind the status bar in every combination.
  • Orientation changes while an in-app is displayed.

Worth looping QA in for a pass on this one. cc @jena-chakour

@franco-zalamena-iterable
Copy link
Copy Markdown
Contributor Author

The default should remain what we had before, force edge to edge, i am fixing the javadoc to reflect that

Move the "Default." annotation from FOLLOW_APP_LAYOUT to
FORCE_EDGE_TO_EDGE to match the actual Builder default, the
resolveDisplayMode() fallback, and the CHANGELOG.

Made-with: Cursor
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.

3 participants