A web app team can push a change and watch it live within minutes. A React Native team pushing a native change cannot: a compiled binary has to be built, signed with real cryptographic credentials, uploaded to a platform that is not the team's own infrastructure, and reviewed by a process the team does not control and cannot fully predict the timing of. Every one of those steps is a place a manual, ad hoc release process breaks — a certificate that expired without anyone noticing, a build number that was not incremented and gets silently rejected, credentials that live only on one departing engineer's laptop.
CI/CD for mobile is not the same discipline as CI/CD for a backend service wearing a mobile-shaped hat. Signing credentials are long-lived, sensitive secrets that have to be shared safely across a team and across CI runners without ever being committed to source control. Build numbers and version strings have platform-specific monotonicity rules that a script has to enforce, not just suggest. And the final step of the pipeline — submission — hands control to a third party's review process that can reject a build for a policy reason no amount of correct code prevents.