[Bug] Android Power Apps: Dataverse GetItem never returns; retrieveMultiple hangs after Code App navigation
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 32/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- android, react, typescript, vite
- Lĩnh vực
- api, databases, mobile-dev
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện Code App đã phát hành trên Power Apps cho Android với @microsoft/power-apps 1.2.2 và 1.3.0, tập trung vào các lệnh gọi Service.get()/retrieveRecordAsync và retrieveMultiple được tạo ra sau khi điều hướng từ danh sách đến chi tiết. So sánh các request riêng lẻ, tuần tự và đồng thời với iOS hoặc desktop; được xem là hoàn thành khi các request trên Android либо hoàn tất thành công hoặc hiển thị lỗi mà không cần khởi động lại ứng dụng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
In a published Power Apps Code App running in Power Apps for Android (Play Store):
retrieveRecordAsync / generated Service.get() (GetItem) against a Dataverse row never returns. The same table's getAll / retrieveMultiple (list query) succeeds.
Concurrent retrieveMultiple calls hang indefinitely. The same calls complete successfully in parallel on iOS Power Apps (typically within 1–2 seconds).
Serial retrieveMultiple calls on related tables can succeed when the app is idle, but may hang after navigating to a detail screen. We measured successful Android responses of approximately 145–186 ms on an isolated diagnostics screen, yet observed a single child-table retrieveMultiple call hang for more than one minute after list → detail navigation.
The host does not reject the calls. The returned promises never resolve or reject. Closing and reopening the Power Apps app is the only workaround we found to reset the connector state.
The issue reproduces with:
@microsoft/power-apps 1.2.2
@microsoft/power-apps 1.3.0
iOS and desktop environments remain unaffected.
Steps to Reproduce
All steps performed in a published Power Apps Code App using Dataverse generated services (@microsoft/power-apps) on Power Apps for Android.
1. GetItem hang (reliable)
Call retrieveMultiple / getAll on a custom Dataverse table.
Verify the list query succeeds.
Call Service.get(id) / retrieveRecordAsync using one of the returned record IDs.
Observe that the promise never resolves or rejects (tested beyond 60 seconds).
2. Concurrent retrieveMultiple hang (reliable)
From a detail screen, execute several child-table queries simultaneously using Promise.all (activities, attachments, follows, etc.).
Observe:
Android: none of the requests complete.
iOS: all requests complete successfully.
3. Serial retrieveMultiple works until detail navigation (reliable)
On a diagnostics screen without the detail route mounted:
Execute one jobs-list retrieveMultiple.
Run three related-table retrieveMultiple calls sequentially.
Android completes successfully (~186 ms, ~145 ms, ~167 ms).
Navigate to a detail route using a parent record sourced from the list cache (no GetItem call).
After the detail header renders, execute a single retrieveMultiple against a child table (for example, Activities).
Observe:
Android: request hangs for more than one minute with no error.
iOS: request completes in approximately 1–2 seconds.
Service surface used
List operations: getAll() → retrieveMultiple
Item operations: get() → retrieveRecordAsync
Environment uses custom Dataverse tables with the coh_ publisher prefix and UserOwned ownership model.
Expected behavior
retrieveRecordAsync should return either the requested record or a surfaced error, consistent with iOS and desktop behavior.
retrieveMultiple should either:
return successfully,
return an error, or
fail fast if concurrency limits exist.
Navigation between screens should not permanently stall Dataverse read operations.
Actual behavior
GetItem (retrieveRecordAsync) hangs indefinitely with no error.
Concurrent retrieveMultiple requests hang indefinitely with no error.
After list → detail navigation, a later serial retrieveMultiple request against a related table can hang even though the same APIs previously succeeded in the same Android session.
Client-side timeouts do not cancel the underlying host operation. Starting additional requests after a timeout can worsen the issue by creating multiple hanging operations.
Screenshots or Error Messages
None.
No HTTP status code, SDK exception, host error, or Power Apps player notification is surfaced. The UI remains in a loading state because the promise never settles.
Environment information
Framework / Build Tools
React 19.2
Vite 7
TypeScript
@microsoft/power-apps 1.3.0
Also reproduced with 1.2.2
@microsoft/power-apps-vite 1.0.2
Code Apps CLI 0.12.0
Connections / Components
Dataverse
Generated services only (no direct HTTP calls from the UI)
Platforms
Desktop browser: related reads work correctly
iOS Power Apps: related reads work correctly, including parallel getAll
Android Power Apps:
list getAll works
GetItem hangs
concurrent getAll hangs
serial related getAll may hang after detail navigation
Deployment
Published Power Apps Code App
Single app where each deployment replaces the previous bundle
Additional context
The same Code App functions successfully in Power Apps for iOS, including Dataverse retrieveMultiple operations.
Android is not a complete failure scenario:
App launch works
Authentication works
List retrieval works
The failures appear isolated to specific Dataverse client operations and/or Android WebView connector interactions.
Upgrading @microsoft/power-apps from 1.2.2 to 1.3.0 did not resolve the issue.
Android device model: Samsung Galaxy S26+
Power Apps Android version: Latest / Current
Current workarounds
Avoid Service.get() / retrieveRecordAsync on Android.
Open records from existing list (getAll) results whenever possible.
Filtering getAll by ID was also observed to be fragile on detail screens.
Avoid overlapping retrieveMultiple operations on Android.
Avoid triggering child-table retrieveMultiple calls from Android detail screens.
- Ngôn ngữ chính
- TypeScript
- Star
- 509
- Fork
- 144
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của microsoft/PowerAppsCodeApps
-
bug
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
microsoft/PowerAppsCodeApps#467 ·
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
microsoft/PowerAppsCodeApps#465 ·
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
microsoft/PowerAppsCodeApps#463 · 1 bình luận ·
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
microsoft/PowerAppsCodeApps#462 ·
-
bug
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
microsoft/PowerAppsCodeApps#461 ·
Tất cả issue của microsoft/PowerAppsCodeApps
Issue tương tự
-
skills.mdx: ReadResourceDirectoryRequest does not type-check against the 2026-07-28 base schemaĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
modelcontextprotocol/ext-skills#156 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
MystenLabs/MemWal#1104 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Effect-TS/effect#8728 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
account-pool bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
lidge-jun/opencodex#6571 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Add: CanalPlusSport8SK.skĐang mởcheck:passed streams:add
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày