All rules

Sheath rule

native-no-emoji

NativePHP interface copy should use the application icon system instead of emoji symbols.
Package
NativePHP
Category
Native
Default severity
warning by default
Auto-fix
Manual fix

#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: