Native iOS : Element visible (when I see the execution video) but I can't click on it, I have an error message saying that the element is still not existing


I am facing an issue when automating my tests with appium 1.20.2 and wdio 7.7.3
My tests are running on browserstack.

My scenarios are not always passed. Elements are once found and are ok and once not found and my tests are failed.

Here is the function used to tap on element and to check its existence.

tap function
iTapButton: async function (btn) {
let selector = Screen.getSelector(btn); //getSelector is returning the id (’~’ + selector)
let button = await $(selector);
if (button.isExisting()) {
await button.waitForExist({ timeout: 90000 });
await button.touchAction(‘tap’);


Check existence of the button

  iShouldSeeTheButton: async function (text) {
        let selector = Screen.buttonSelect(text);
        let button = await $(selector);
        await button.waitForExist({ timeout: 90000 });
        expect(await button.isDisplayed());

buttonSelect(name) {
        return `-ios predicate string:type=='XCUIElementTypeButton' AND name=='${name}'`;

Does anyone know why I have this kind of issue please? This is driving me crazy