René's URL Explorer Experiment


Title: fix(ios): proper disposal and recreation of iOS native views by CatchABus · Pull Request #9879 · NativeScript/NativeScript · GitHub

Open Graph Title: fix(ios): proper disposal and recreation of iOS native views by CatchABus · Pull Request #9879 · NativeScript/NativeScript

X Title: fix(ios): proper disposal and recreation of iOS native views by CatchABus · Pull Request #9879 · NativeScript/NativeScript

Description: PR Checklist The PR title follows our guidelines: https://github.com/NativeScript/NativeScript/blob/master/tools/notes/CONTRIBUTING.md#commit-messages. There is an issue for the bug/feature this PR is for. To avoid wasting your time, it's best to open a suggestion issue first and wait for approval before working on it. You have signed the CLA. All existing tests are passing: https://github.com/NativeScript/NativeScript/blob/master/tools/notes/DevelopmentWorkflow.md#running-unit-tests-application. Tests for the changes are included - https://github.com/NativeScript/NativeScript/blob/master/tools/notes/WritingUnitTests.md. What is the current behavior? Native iOS views are not disposed and cannot be recreated when their view instances are re-added to the view tree. What is the new behavior? Native View Disposal This PR was initially created for the sole purpose of destroying old native views (until more problems showed up in the process). This is based on Martin's @farfromrefug PR #9671 which was reverted because of few problems. @rigor789 If I'm not mistaken, the most common error case was this one: ***** Fatal JavaScript exception - application has been terminated. ***** NativeScript encountered a fatal error: Uncaught TypeError: Cannot set property 'delegate' of null at onUnloaded(file: src/webpack:/node_modules/@nativescript/core/ui/text-field/index.ios.js:114:0) at (file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:321:0) at callFunctionWithSuper(file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:312:0) at callUnloaded(file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:321:0) at unloadView(file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:466:0) at (file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:249:0) at eachChildView(file: src/webpack:/node_modules/@nativescript/core/ui/layouts/layout-base-common.js:101:0) at eachChild(file: src/webpack:/node_modules/@nativescript/core/ui/core/view/view-common.js:772:0) at onUnloaded(file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:248:0) at (file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:321:0) at callFunctionWithSuper(file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:312:0) at callUnloaded(file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:321:0) at unloadView(file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:466:0) at (file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:249:0) at eachChildView(file: src/webpack:/node_modules/@nativescript/core/ui/layouts/layout-base-common.js:101:0) at eachChild(file: src/webpack:/node_modules/@nativescript/core/ui/core/view/view-common.js:772:0) at onUnloaded(file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:248:0) at (file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:321:0) at callFunctionWithSuper(file: src/webpack:/node_modules/@nativescript/core/ui/core/view-base/index.js:312:0) at callUnloaded(file:///app/vend<…> After a bit of research, I concluded the root of this cause is _tearDownUI calls being called before the view gets unloaded. So, what are the cases for a view to get unloaded too late when it's already destroyed? One case is view controllers which have a viewDidDisappear method that is called once owner view is disposed. This method will call callUnloaded which will attempt to unload view and all its children in view tree. Let's keep in mind that if a view is disposed by means other than removeChild, it's still in view hierarchy. One primary suspect for this crime is method destroyNode in View class. I'm not familiar with NS Angular, but its renderer seems to wrap this method inside another destroyNode. One of errors mentioned in #9671 has also occured in an Angular app. I couldn't locate any other error-prone cases and I'm not completely sure all errors have occured because of the flaw in that certain method, but for start I added a missing callUnloaded call inside destroyNode. If there are more causes that trigger this issue, I believe we can track them upon further app usage and solve them immediately, since we know what can cause this now. Core has got a dozen of _tearDownUI calls that are supposed to get called after view is unloaded but who knows! Just as @farfromrefug pointed out, perhaps we should make sure those two calls are done in proper order in the future, like adding callUnloaded inside _tearDownUI for example which needs some refactoring. So, all these details refer to https://github.com/NativeScript/NativeScript/pull/9879/files#diff-86ce61f77399a980c83c5a14ee2ac54b8c672d375d0280597c217eb17811a076, the change for disposing native views for iOS. Re-using iOS view instance (non-reusable native view) What if one wants to reuse the same NS instance even though its native view is not reusable? Upon re-adding an already removed view instance to the view tree, it should generate a new native view. This leads us to new problems which I'll use an example to describe below. I'll use a non-reusable animated drawer view of mine embedded in RootLayout, in a plain NS app. This is a good example since there is a constant use of insertChild and removeChild methods, and view will also get transformed it gets hidden to the left side of the screen. In short, attempting to open drawer will result in calling insertChild, while trying to close it will result in calling removeChild. This is how my drawer originally looks like when opening it for first time: If it's removed and re-added to view tree in current NS core version, it will look like this: It looks like this because images undergo a cleanup on disposal since NS 8.2. As view is not currently disposed properly, native view will not be created anew and this results in images not being reloaded. Now, the following screenshot displays the result of using changes from PR #9671 alone. View layout seems completely messed up and that is so confusing. This problem occured because view instances keep cache of last used native frame. And here comes the addition of disposeNativeView in the iOS version of View class: https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84R67 This comes with really good results: Yet, it seems few children are not aligned properly, and there's no good explanation. I concluded that the cause of this is the native view translateX transform occuring too early. That transform messes up view position in native window, resulting in padding and inset miscalculations. That is why we should prevent transforms from happening when layout is still invalid, and apply them once view content layout is ready. See here: https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84R132 The final result: The proper disposal of native views works quite well with the few recent additions of GC inside core. About reuse, I believe this is a really good step for re-using iOS views even when their native instances are not reusable. This has always been possible in android, but it seems we lacked the proper view cleanup to make this work in iOS and that created a bit of confusion. This PR is a possible candidate for fixing the iOS part of #9820, and its view cleanup is a good solution for my issue described in #9875

Open Graph Description: PR Checklist The PR title follows our guidelines: https://github.com/NativeScript/NativeScript/blob/master/tools/notes/CONTRIBUTING.md#commit-messages. There is an issue for the bug/feature this...

X Description: PR Checklist The PR title follows our guidelines: https://github.com/NativeScript/NativeScript/blob/master/tools/notes/CONTRIBUTING.md#commit-messages. There is an issue for the bug/feature this...

Opengraph URL: https://github.com/NativeScript/NativeScript/pull/9879

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:4813770f-c501-8494-a4c5-382f6797d539
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idE836:3CD7D9:8C60CCB:BF1F1B1:6A5E9B57
html-safe-nonceb6f5cf4532bb37b976ee364687acab9dcb44c905a07d932e6895be8fc5a482be
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFODM2OjNDRDdEOTo4QzYwQ0NCOkJGMUYxQjE6NkE1RTlCNTciLCJ2aXNpdG9yX2lkIjoiODc3NDIwNzE5MzUwMjA5NjIxNSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac66650bb9f07e4854726a32cca33cee3a5ea76e8a52bbe2d72eaff2d97689b583
hovercard-subject-tagpull_request:917246805
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/NativeScript/NativeScript/pull/9879/files
twitter:imagehttps://avatars.githubusercontent.com/u/55595100?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/55595100?s=400&v=4
og:image:altPR Checklist The PR title follows our guidelines: https://github.com/NativeScript/NativeScript/blob/master/tools/notes/CONTRIBUTING.md#commit-messages. There is an issue for the bug/feature this...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None7c7e31acb6a895494e518b880f5ccf39604f7fa9a8f2f3c64145efc3b776256d
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/NativeScript/NativeScript git https://github.com/NativeScript/NativeScript.git
octolytics-dimension-user_id7392261
octolytics-dimension-user_loginNativeScript
octolytics-dimension-repository_id31492490
octolytics-dimension-repository_nwoNativeScript/NativeScript
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id31492490
octolytics-dimension-repository_network_root_nwoNativeScript/NativeScript
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2d2ac9bdd71d5f53f2b731c9330677e38624e301
ui-targetcanary-2
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/NativeScript/NativeScript/pull/9879/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FNativeScript%2FNativeScript%2Fpull%2F9879%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
Code QualityEnforce quality at mergehttps://github.com/features/code-quality
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FNativeScript%2FNativeScript%2Fpull%2F9879%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=NativeScript%2FNativeScript
Reloadhttps://github.com/NativeScript/NativeScript/pull/9879/files
Reloadhttps://github.com/NativeScript/NativeScript/pull/9879/files
Reloadhttps://github.com/NativeScript/NativeScript/pull/9879/files
Please reload this pagehttps://github.com/NativeScript/NativeScript/pull/9879/files
NativeScript https://github.com/NativeScript
NativeScripthttps://github.com/NativeScript/NativeScript
Please reload this pagehttps://github.com/NativeScript/NativeScript/pull/9879/files
Notifications https://github.com/login?return_to=%2FNativeScript%2FNativeScript
Fork 1.7k https://github.com/login?return_to=%2FNativeScript%2FNativeScript
Star 25.6k https://github.com/login?return_to=%2FNativeScript%2FNativeScript
Code https://github.com/NativeScript/NativeScript
Issues 771 https://github.com/NativeScript/NativeScript/issues
Pull requests 66 https://github.com/NativeScript/NativeScript/pulls
Discussions https://github.com/NativeScript/NativeScript/discussions
Actions https://github.com/NativeScript/NativeScript/actions
Projects https://github.com/NativeScript/NativeScript/projects
Wiki https://github.com/NativeScript/NativeScript/wiki
Security and quality 0 https://github.com/NativeScript/NativeScript/security
Insights https://github.com/NativeScript/NativeScript/pulse
Code https://github.com/NativeScript/NativeScript
Issues https://github.com/NativeScript/NativeScript/issues
Pull requests https://github.com/NativeScript/NativeScript/pulls
Discussions https://github.com/NativeScript/NativeScript/discussions
Actions https://github.com/NativeScript/NativeScript/actions
Projects https://github.com/NativeScript/NativeScript/projects
Wiki https://github.com/NativeScript/NativeScript/wiki
Security and quality https://github.com/NativeScript/NativeScript/security
Insights https://github.com/NativeScript/NativeScript/pulse
Sign up for GitHub https://github.com/signup?return_to=%2FNativeScript%2FNativeScript%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2FNativeScript%2FNativeScript%2Fissues%2Fnew%2Fchoose
NathanWalkerhttps://github.com/NathanWalker
NativeScript:alphahttps://github.com/NativeScript/NativeScript/tree/alpha
CatchABus:clear-ios-native-viewhttps://github.com/CatchABus/NativeScript/tree/clear-ios-native-view
Conversation 4 https://github.com/NativeScript/NativeScript/pull/9879
Commits 8 https://github.com/NativeScript/NativeScript/pull/9879/commits
Checks 0 https://github.com/NativeScript/NativeScript/pull/9879/checks
Files changed https://github.com/NativeScript/NativeScript/pull/9879/files
Please reload this pagehttps://github.com/NativeScript/NativeScript/pull/9879/files
fix(ios): proper disposal and recreation of iOS native views https://github.com/NativeScript/NativeScript/pull/9879/files#top
Show all changes 8 commits https://github.com/NativeScript/NativeScript/pull/9879/files
b6dddc3 fix: Ensure we clear ios view. See #9671 CatchABus Apr 22, 2022 https://github.com/NativeScript/NativeScript/pull/9879/commits/b6dddc3f1ca72cf0c5729ca0b0535a0bca720b6f
eaa7b2a test: Updated a test related to new changes. CatchABus Apr 22, 2022 https://github.com/NativeScript/NativeScript/pull/9879/commits/eaa7b2a638caefcbfc1e9a34a56bb5a413b11b50
e86bb79 chore: Minor naming corrections. CatchABus Apr 23, 2022 https://github.com/NativeScript/NativeScript/pull/9879/commits/e86bb79d981cc63521683ad3a8c5e91370c78873
bd28654 fix: View size was corrupted after re-adding it to view tree. CatchABus Apr 23, 2022 https://github.com/NativeScript/NativeScript/pull/9879/commits/bd28654dd78ba292cf6c6ab97137c76d0c4dcb48
abfdf4b fix: Children layout padding and insets were miscalculated if native … CatchABus Apr 23, 2022 https://github.com/NativeScript/NativeScript/pull/9879/commits/abfdf4ba6596972c7384a17cbc952862c549f1af
9bf6c66 chore: Unset possible pending transform flag. CatchABus Apr 23, 2022 https://github.com/NativeScript/NativeScript/pull/9879/commits/9bf6c668a786b8764ce084f080bad4bccaca2acb
abd2e20 Merge branch 'master' into clear-ios-native-view NathanWalker Apr 25, 2022 https://github.com/NativeScript/NativeScript/pull/9879/commits/abd2e2035ea13df94bdec48678f457cedbcca921
d810021 chore: 8.2.4-alpha.0 NathanWalker Apr 25, 2022 https://github.com/NativeScript/NativeScript/pull/9879/commits/d8100217b0c2a6f0920fa011a149b2fe37314ec9
Clear filters https://github.com/NativeScript/NativeScript/pull/9879/files
Please reload this pagehttps://github.com/NativeScript/NativeScript/pull/9879/files
Please reload this pagehttps://github.com/NativeScript/NativeScript/pull/9879/files
lifecycle-tests.ts https://github.com/NativeScript/NativeScript/pull/9879/files#diff-05d57909c373460e4429cdd158b574c222824ed0e42ccfe6ac0f75968fede0b2
package.json https://github.com/NativeScript/NativeScript/pull/9879/files#diff-0b810c38f3c138a3d5e44854edefd5eb966617ca84e62f06511f60acc40546c7
animation-interfaces.ts https://github.com/NativeScript/NativeScript/pull/9879/files#diff-148ddab07471c9295e82088464409969c0735ebc55c43325d5b993b04d9eb6e8
index.ts https://github.com/NativeScript/NativeScript/pull/9879/files#diff-86ce61f77399a980c83c5a14ee2ac54b8c672d375d0280597c217eb17811a076
index.ios.ts https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
index.ios.ts https://github.com/NativeScript/NativeScript/pull/9879/files#diff-83c9fab79b1de3837e713014b8b8a21b7c428d1efbd5b0e36f3aba51cf3b4db4
apps/automated/src/ui/lifecycle/lifecycle-tests.tshttps://github.com/NativeScript/NativeScript/pull/9879/files#diff-05d57909c373460e4429cdd158b574c222824ed0e42ccfe6ac0f75968fede0b2
View file https://github.com/CatchABus/NativeScript/blob/d8100217b0c2a6f0920fa011a149b2fe37314ec9/apps/automated/src/ui/lifecycle/lifecycle-tests.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/NativeScript/NativeScript/pull/9879/{{ revealButtonHref }}
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-05d57909c373460e4429cdd158b574c222824ed0e42ccfe6ac0f75968fede0b2
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-05d57909c373460e4429cdd158b574c222824ed0e42ccfe6ac0f75968fede0b2
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-05d57909c373460e4429cdd158b574c222824ed0e42ccfe6ac0f75968fede0b2
packages/core/package.jsonhttps://github.com/NativeScript/NativeScript/pull/9879/files#diff-0b810c38f3c138a3d5e44854edefd5eb966617ca84e62f06511f60acc40546c7
View file https://github.com/CatchABus/NativeScript/blob/d8100217b0c2a6f0920fa011a149b2fe37314ec9/packages/core/package.json
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/NativeScript/NativeScript/pull/9879/{{ revealButtonHref }}
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-0b810c38f3c138a3d5e44854edefd5eb966617ca84e62f06511f60acc40546c7
packages/core/ui/animation/animation-interfaces.tshttps://github.com/NativeScript/NativeScript/pull/9879/files#diff-148ddab07471c9295e82088464409969c0735ebc55c43325d5b993b04d9eb6e8
View file https://github.com/CatchABus/NativeScript/blob/d8100217b0c2a6f0920fa011a149b2fe37314ec9/packages/core/ui/animation/animation-interfaces.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/NativeScript/NativeScript/pull/9879/{{ revealButtonHref }}
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-148ddab07471c9295e82088464409969c0735ebc55c43325d5b993b04d9eb6e8
packages/core/ui/core/view-base/index.tshttps://github.com/NativeScript/NativeScript/pull/9879/files#diff-86ce61f77399a980c83c5a14ee2ac54b8c672d375d0280597c217eb17811a076
View file https://github.com/CatchABus/NativeScript/blob/d8100217b0c2a6f0920fa011a149b2fe37314ec9/packages/core/ui/core/view-base/index.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/NativeScript/NativeScript/pull/9879/{{ revealButtonHref }}
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-86ce61f77399a980c83c5a14ee2ac54b8c672d375d0280597c217eb17811a076
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-86ce61f77399a980c83c5a14ee2ac54b8c672d375d0280597c217eb17811a076
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-86ce61f77399a980c83c5a14ee2ac54b8c672d375d0280597c217eb17811a076
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-86ce61f77399a980c83c5a14ee2ac54b8c672d375d0280597c217eb17811a076
packages/core/ui/core/view/index.ios.tshttps://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
View file https://github.com/CatchABus/NativeScript/blob/d8100217b0c2a6f0920fa011a149b2fe37314ec9/packages/core/ui/core/view/index.ios.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/NativeScript/NativeScript/pull/9879/{{ revealButtonHref }}
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-025d8125f2c2388468769424324a18b7a896921f7b44f720db8014eb653b5f84
packages/core/ui/core/view/view-helper/index.ios.tshttps://github.com/NativeScript/NativeScript/pull/9879/files#diff-83c9fab79b1de3837e713014b8b8a21b7c428d1efbd5b0e36f3aba51cf3b4db4
View file https://github.com/CatchABus/NativeScript/blob/d8100217b0c2a6f0920fa011a149b2fe37314ec9/packages/core/ui/core/view/view-helper/index.ios.ts
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/NativeScript/NativeScript/pull/9879/{{ revealButtonHref }}
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-83c9fab79b1de3837e713014b8b8a21b7c428d1efbd5b0e36f3aba51cf3b4db4
https://github.com/NativeScript/NativeScript/pull/9879/files#diff-83c9fab79b1de3837e713014b8b8a21b7c428d1efbd5b0e36f3aba51cf3b4db4
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.