-
Notifications
You must be signed in to change notification settings - Fork 13.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bug: Ionic call Keyboard.getResizeMode() on Android throws uncaught error #27503
Comments
Thanks for the issue! This issue has been labeled as Please reproduce this issue in an Ionic starter application and provide a way for us to access it (GitHub repo, StackBlitz, etc). Without a reliable code reproduction, it is unlikely we will be able to resolve the issue, leading to it being closed. If you have already provided a code snippet and are seeing this message, it is likely that the code snippet was not enough for our team to reproduce the issue. For a guide on how to create a good reproduction, see our Contributing Guide. |
The Code Reproduction URL added to issue ( edited ) |
any body can help with this i have same issue |
Hello everyone 👋 Could someone test with this dev-build and let me know if they run into any issues?
|
Thank you for update , I tested the I think this problem is for this change "footer, tab-bar: wait for resize before re-showing (#27417) (70d9854), closes #25990" @ 7.0.7 version update change log https://github.com/ionic-team/ionic-framework/blob/main/CHANGELOG.md because when using the tab template console show me |
@farshidpg thanks for testing so quickly! I believe the problem is related to that change as well, but with the shared keyboard logic we encapsulate. For reference, this is what the dev-build changed: e9b8b2d I'll need to do a little more discovery to narrow where else the resize mode is being called (or if the platform check is not sufficient enough for this use case). Edit: I actually see where my logic is flawed - an |
Thank you , I check dev-build changed . I'm just thinking out loud for this solution , what happens if you do like this ?
|
If you are up for checking another dev-build: I updated the checks so that the check for platform is first: b1ab142. This should cause the behavior to noop for MD or if you are not using the Keyboard plugin from Capacitor. If that doesn't work - I can boot up an emulator and do additional testing tomorrow. |
Thank you , I test again and problem still exist on tabs template . I'am using the this is part of my package.json content
|
@farshidpg can you remove the explicit The expected output should be:
Can you also confirm you are re-running With the latest dev-build on the reproduction, I do not receive errors in the console on an emulator. |
Yes I run This is result :
But why ? my package.json is update and I run :
whats wrong with my project in local that still using 7.0.8-nightly.20230518 ? Edit : But I get console error on android also get runtime error |
NPM package resolution can be difficult. The You can try removing the leading {
"name": "starter",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vue-tsc && vite build",
"preview": "vite preview",
"test:e2e": "cypress run",
"test:unit": "vitest",
"lint": "eslint"
},
"dependencies": {
"@capacitor/android": "5.0.3",
"@capacitor/app": "5.0.2",
"@capacitor/core": "5.0.3",
"@capacitor/haptics": "5.0.2",
"@capacitor/keyboard": "5.0.2",
"@capacitor/status-bar": "5.0.2",
"@ionic/vue": "7.0.8-dev.11684444351.1b1ab142",
"@ionic/vue-router": "7.0.8-dev.11684444351.1b1ab142",
"ionicons": "^7.0.0",
"vue": "^3.2.45",
"vue-router": "^4.1.6"
},
"devDependencies": {
"@capacitor/cli": "5.0.3",
"@vitejs/plugin-legacy": "^4.0.2",
"@vitejs/plugin-vue": "^4.0.0",
"@vue/eslint-config-typescript": "^11.0.2",
"@vue/test-utils": "^2.3.0",
"cypress": "^12.7.0",
"eslint": "^8.35.0",
"eslint-plugin-vue": "^9.9.0",
"jsdom": "^21.1.0",
"typescript": "^4.9.3",
"vite": "^4.1.0",
"vitest": "^0.29.2",
"vue-tsc": "^1.0.24"
},
"description": "An Ionic project"
}
If |
Yes, its work I remove the Also the error solved 👍 the Thank you bro, you saved me 🥇 Will this bug fix ( version ) be merged with the next update in |
It is still subject to the team's review, you can track the pull request here: #27514 Once merged, it will be available on the next week's patch release (we try to release weekly). Happy to help & thanks for the quick testing and verification 🎉 |
Hello , the 7.0.8 version released , is there this bug fix in 7.0.8 ? ( is it merged ) Thank you |
i tried any reason why this wasn't included in the patch release? from what i see this throws an error on every android device. |
The PR was not merged, so it was not included in this week's patch release. The PR was still receiving feedback and was not ready for today's release. It has since been tested and approved with an alternative approach that isn't coupled to platform checks. It will be moved into a merge queue shortly and will be ready for the next week's release. Edit: Spoke with the team, we will plan to release the patch with that fix tomorrow as well to help everyone out here! |
Issue number: Resolves #27503 --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> Ionic Framework wraps the implementation around Capacitor's Keyboard plugin API, to provide additional functionality and behavior "automatically" in Ionic, when the plugin is installed. Certain methods such as `getResizeMode()` are only available for certain platforms and will cause an error when running in the unsupported platform. Ionic Framework does not check to see if that platform is active before calling potentially unsupported methods, which leads to an exception for scenarios such as this - calling `getResizeMode()` on Android. ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Handles the uncaught exception by returning `undefined` if the plugin method is unavailable. - Developers do not receive an uncaught exception on Android when using the Capacitor Keyboard plugin with Ionic Framework ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. --> Dev-build: `7.0.8-dev.11684444351.1b1ab142` (outdated)
Hi everyone, We released a fix for this as part of the v7.0.9 release today. Thanks to everyone who helped test the fix! v7.0.9 changelog: https://github.com/ionic-team/ionic-framework/releases/tag/v7.0.9 |
thank you, there is no uncaught error anymore. in dev mode i can still see the native call to the method failing in chrome devtools. it feels "unusual" to have an error-returning method call on the default startup path of half the install base. but i'm probably nit-picking here and you have good reasons for it. |
Thanks for the issue! This issue is being locked to prevent comments that are not relevant to the original issue. If this is still an issue with the latest version of Ionic, please create a new issue and ensure the template is fully filled out. |
Prerequisites
Ionic Framework Version
v7.x
Current Behavior
when app start in android the
Keyboard.getResizeMode()
call from one of the ionic global component that it catched and show runtime error . I read docs of capacitor keyboard and we know that getResizeMode() method is for iOS only . why in android called on app init automatically ?This is my console error :
result Keyboard.getResizeMode (#71292250)
Also this is screen shots of android version
it’s make my app unuseable with vue-cli in vite version the runtime error not show but console throw excetiopn still fire
And my android Emulator
Expected Behavior
I think if ionic use the
Keyboard.getResizeMode()
in any components it should check platform first for ignore calling on android and call in iOS onlySteps to Reproduce
capacitor/keyboard
plugin for ignore runtime error even Keyboard.getResizeMode() called in any platform by 3rd Party plugins or components thats not official .Code Reproduction URL
GitHub starter tab app created with latest ionic cli and ionic vue and capacitor 5 ( But the bug is still with cap 4 too and I think its fire from ionic )
https://github.com/farshidpg/ionic-starter/tree/main
Starter app ionic info
the problem still get error on app init
Ionic Info
Additional Information
Capacitor keyboard plugin information
getresizemode
methodhttps://capacitorjs.com/docs/v4/apis/keyboard#getresizemode
I check my project and I know I don't use
Keyboard.getResizeMode()
method manually , I'm sure it's called globallyThe text was updated successfully, but these errors were encountered: