Skip to content

fix(native-core): restore macOS Paper FRNCallout manager alias - #4363

Merged
Saad Najmi (Saadnajmi) merged 1 commit into
microsoft:mainfrom
Saadnajmi:sanajmi-microsoft-mac-callout-legacy-compat
Oct 14, 2026
Merged

Saad Najmi (Saadnajmi) merged 1 commit into
microsoft:mainfrom
Saadnajmi:sanajmi-microsoft-mac-callout-legacy-compat

Conversation

@Saadnajmi

Copy link
Copy Markdown
Collaborator

Platforms Impacted

  • iOS
  • macOS
  • win32 (Office)
  • windows
  • android

Description of changes

Older @fluentui-react-native/callout JavaScript bundles (for example 0.28.x) request the Paper native component as FRNCallout, while the current macOS Paper manager is exported as RCTCallout. Hosts that load such a bundle against current native code fail to resolve the component.

  • macos/components/Callout/paper/CalloutManager.swift: add @objc(FRNCalloutManager) class LegacyCalloutManager: CalloutManager {}, so the alias reuses the same view.
  • macos/components/Callout/paper/FRNCalloutManager.m: register it with RCT_EXTERN_MODULE(FRNCalloutManager, RCTCalloutManager). Exported methods are inherited through RCTModuleData's superclass walk, and view properties/events through the Paper baseModuleName view config.
  • tests/native-ownership.test.mjs: guard that both registrations stay present.
  • src/legacy/callout/SPEC.md: document the alias.
  • Patch changeset for @fluentui-react-native/native-core.

RCTCallout registration and Fabric behavior are unchanged.

Verification

  • node --test tests/native-ownership.test.mjs (in packages/agentic/native-core): 7/7 passed.
  • Not run locally: formatter, full package build, or macOS native build.
Before After
Legacy bundles requesting FRNCallout on macOS Paper find no native manager FRNCallout resolves to the same manager as RCTCallout

Pull request checklist

This PR has considered (when applicable):

  • Automated Tests
  • Documentation and examples
  • Keyboard Accessibility
  • Voiceover
  • Internationalization and Right-to-left Layouts

Older @fluentui-react-native/callout JavaScript bundles request the Paper
component as FRNCallout. Register FRNCalloutManager as a Swift subclass of the
current RCTCalloutManager so both names resolve with the same view, properties,
events, and commands. Fabric registration is unchanged.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 355dde06-bddd-4395-90ce-6bd606b61339
@github-actions

Copy link
Copy Markdown
Contributor

Bundle size report

Tree-shaken, minified production esbuild bundles with React and React Native runtimes externalized.

Scenario Modules-Mac (Δ) Modules-Win (Δ) Size-Mac (Δ) Size-Win (Δ)
components-button 62 (+0) 63 (+0) 49.94k (+0b) 49.87k (+0b)
components-catalog 159 (+0) 160 (+0) 155.26k (+0b) 155.19k (+0b)
design-theme-state 33 (+0) 34 (+0) 30.11k (+0b) 30.03k (+0b)
design-themed-root 37 (+0) 38 (+0) 32.07k (+0b) 32.00k (+0b)
design-color-lib 6 (+0) 6 (+0) 6.33k (+0b) 6.33k (+0b)
design-theme-state-legacy-source 34 (+0) 35 (+0) 31.77k (+0b) 31.69k (+0b)
design-legacy-theme-from-flex 57 (+0) 58 (+0) 97.72k (+0b) 97.59k (+0b)

The job is advisory: size changes are reported but do not fail the pull request. Bundle or analysis errors still fail.


View bundle-size workflow run

@Saadnajmi
Saad Najmi (Saadnajmi) merged commit 27dc8eb into microsoft:main Oct 14, 2026
17 checks passed
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