Sheath rule
native-no-emoji
#Why
Emoji appearance varies by platform and can conflict with the application's icon language. This policy rule identifies emoji used as literal interface copy. It does not treat emoji as a compiler failure.
#Examples
#Bad
{{-- The rocket emoji varies by platform and bypasses the icon system. --}}
<native:button>🚀 Launch</native:button>
#Good
{{-- The native icon and text label use the application icon language. --}}
<native:button>
<native:icon name="rocket" />
Launch
</native:button>
The rule also checks rendered text content and static label, title, and
subtitle attributes that the target element consumes.
#Notes
Dynamic text is skipped. Symbols without emoji presentation, including a plain check mark, middle dot, and arrow, are not reported.
Only native-rendered interface content is checked. Raw web content and rejected child-component slots are not checked.
#Options
All NativePHP rules accept nativeViewPaths. The default is
['views/native/']. See Native View Detection
for path configuration.
#See Also
Related guidance covers accessible icon controls:
- native-icon-a11y-label: Name interactive icons
- NativePHP Plugin: Review the native guideline rules