fix: use createPortal for FeatureOptInBanner to avoid Intercom widget conflict#27121
Merged
dhairyashiil merged 2 commits intomainfrom Jan 26, 2026
Merged
Conversation
… conflict Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
Contributor
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Contributor
There was a problem hiding this comment.
1 issue found across 1 file
Prompt for AI agents (all issues)
Check if these issues are valid — if so, understand the root cause of each and fix them.
<file name="packages/features/feature-opt-in/components/FeatureOptInBannerWrapper.tsx">
<violation number="1" location="packages/features/feature-opt-in/components/FeatureOptInBannerWrapper.tsx:44">
P2: Guard portal rendering against non-browser environments; accessing `document.body` during render can crash SSR/tests when `document` is undefined.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
packages/features/feature-opt-in/components/FeatureOptInBannerWrapper.tsx
Show resolved
Hide resolved
Contributor
Devin AI is addressing Cubic AI's review feedbackA Devin session has been created to address the issues identified by Cubic AI. |
Add typeof document check before accessing document.body in createPortal to prevent SSR/test crashes when document is undefined. Co-Authored-By: unknown <>
dhairyashiil
approved these changes
Jan 26, 2026
keithwillcode
approved these changes
Jan 26, 2026
Contributor
E2E results are ready! |
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.
What does this PR do?
Renders the
FeatureOptInBannercomponent using React'screatePortaltodocument.bodyinstead of inline rendering. This prevents z-index/stacking context conflicts with the Intercom widget, which is also positioned at the bottom of the viewport.Updates since last revision
Added SSR guard (
typeof document !== "undefined") before accessingdocument.bodyincreatePortalto prevent crashes in SSR/test environments wheredocumentis undefined. This addresses the Cubic AI review feedback.Mandatory Tasks (DO NOT REMOVE)
How should this be tested?
FeatureOptInBannerWrapper)Checklist
Human Review Checklist
Verify no SSR/hydration issues- Addedtypeof document !== "undefined"guard to prevent SSR crashes