[ Observation ] hyperscript versions 0.9.6 & higher unconditionally throw on iOS v14.4 and lower

This issue has been tracked since 2022-08-20.

Summary

First, this isn't a bug report in the traditional sense, but it is something I wanted to report.

The issue: recent testing of hyperscript using mobile devices seems to result in the script throwing hard due to a syntax error in certain cases.

Screen Shot 2022-08-19 at 4 47 03 PM

It appears that between versions 0.9.5 and 0.9.6 use of class members as static properties was introduced which is reported as the root cause of the error.

The venerable CanIUse site bears out that these props acheived recent support in mobile iOS:

Use Case

I came across this in debugging the most basic of use-cases: a simple (naive) login form wherein the command button element is disabled unless a value is provided to an input. (Perfect for hyperscript!)

The code worked great on desktop and desktop browser mobile emulators but failed on actual mobile iOS devices.

Repro

Debugging pointed to what I believe is the offending syntax:

Screen Shot 2022-08-19 at 4 48 49 PM

and further, by testing various combos of devices , OS levels, and browsers, I can say that what CanIUse tells us seems spot-on.

As an aid, here is a public page that repros the issue using 0.9.7 loaded via script tag:

Steps to repro

Access the page on an actual iOS phone (tablets were not been tested) and key a few values into the input.

  • for iOS versions 14.5+, the Login button will enable/disable based on the presence of inputs
  • for iOS versions 14.4 and older, the Login button will never enable (because the script threw)

Assessment

As I said above, I'm not completely characterizing this as a bug, mostly because it's unknown whether this result was a
considered choice or just one that got by the committers.

That said, given hyperscript's 'place' in the world, I feel it's pretty aggressive to expect mobile iOS users to be running
a version (14.5) released only 15 months ago (April 26, 2021). But others may disagree.

Maybe the project and community would be better served with a technical implementation that was more tolerant of the iOS laggards (like me) who comfortably occupy the far left side of the rate-of-adoption curve. (And I'm saying this with absolutely no idea of the level of effort to do so.)

Hyperscript is a fresh, new (or new again!) take on OSS scripting and I'd hate to see it's reputation aligned by the same sort of thing that has so much dogged the whole JS eco-system: unexpected incompatibility where you'd least expect it.

Haiku

I really suck at haiku (actually all poetry) but I'm certain there is a good one about how you can't actually trust the mobile device emulators in the desktop browsers just crying to be written.

And then the one about how support of newer JS feature is snarling a great effort to vastly reduce the time spent on snarls regarding JS features. :)

More Details About Repo
Owner Name bigskysoftware
Repo Name _hyperscript
Full Name bigskysoftware/_hyperscript
Language JavaScript
Created Date 2020-05-27
Updated Date 2022-11-25
Star Count 1265
Watcher Count 18
Fork Count 75
Issue Count 86

YOU MAY BE INTERESTED

Issue Title Created Date Updated Date