# Mopro vs. PolygonID Stack Feedback
Last month, we decided (Anon Aadhaar) to switch from Mopro to the PolygonID stack (WitnessCalc + RapidSnark) for our mobile library. This post aims to outline the different reasons behind our choice.
### AppStore
The main blocker was our inability to make a release on the AppStore, due to the requirement of a dynamic library to embed the WASM needed for witness calculation.
### Performance
PolygonID introduced a [native C++ witness calculator](https://github.com/0xPolygonID/witnesscalc), which significantly sped up the witness calculation and also addressed the above issue. However, the PolygonID stack seems to be faster even in proof generation.
Benchmark for Anon Aadhaar circuit:
**Number of constraints:** 1,041,531
**Size of the zkey:** 600MB
**Device:** iPhone 15 Pro (8GB RAM)
| Mopro | Time |
|--------------|-------|
| Witness calc | 4.59s |
| Proof gen | 8.55s |
| Full proof | 14s |
| PolygonID | Time |
|--------------|-------|
| Witness calc | To do |
| Proof gen | To do |
| Full proof | 7s |
*// To do: Breakdown witness calc. and proof gen. time*
### Memory Issues
There is a slight difference in how much memory is used to generate a proof and also in how this memory is utilized.
**Mopro:** 1.47GB
**PolygonID:** 1.2GB
These small differences resulted in Mopro crashing on my old phone (iPhone Xr), whereas there were no issues with PolygonID on the same device. One reason might be that the deserialization of the zkey already consumes a substantial amount of memory, leading to crashes when proof generation begins. Another reason could be the manner in which memory is utilized; in Mopro, a significant portion of the memory is required at the start of the proof generation, whereas it increases incrementally with PolygonID, which could prevent crashes.
For the two reasons mentioned, I didn't conduct any further research; these are just some leads.
### Interface
While not a blocker, the fact that the PolygonID stack is already bridged with Objective-C made it easier to integrate it with React Native and build our library. It also facilitated the reproduction of our SDK stack; this is secondary but was also an argument in favor of the PolygonID stack.
Overall, we experienced better performance and a smoother integration process with the PolygonID stack. It took us only 1.5 days to integrate the entire stack, which resulted in improved performance and also resolved the main issue of the AppStore release.