# safari

Published articles for safari.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Safari 27's Web Platform Test progress compared with Firefox and Chromium

DevFeed: [Safari 27's Web Platform Test progress compared with Firefox and Chromium](<https://devfeed.tech/articles/abject-praise-26565.md>)

Original publisher: [Read original article](<https://infrequently.org/2026/07/abject-praise/>)

Author: Alex Russell

Published: 2026-07-06T00:00:00Z

Content type: opinion

Language: en

Sources: [Alex Russell](<https://devfeed.tech/sources/alex-russell.md>)

Topics: [browser](<https://devfeed.tech/topics/browser.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [Chromium](<https://devfeed.tech/topics/chromium.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [chromium](<https://devfeed.tech/tags/chromium.md>), [competition](<https://devfeed.tech/tags/competition.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [openweb](<https://devfeed.tech/tags/openweb.md>), [safari](<https://devfeed.tech/tags/safari.md>), [test](<https://devfeed.tech/tags/test.md>), [web-platform](<https://devfeed.tech/tags/web-platform.md>), [webdev](<https://devfeed.tech/tags/webdev.md>)

### AI overview

An opinion article argues that Safari 27's quality and Web Platform Test improvements should be assessed against its slower release cadence and compared with Firefox and Chromium. It says Safari's time-weighted rate of improved tests is lower than those competitors.

### Source excerpt

It's perilous to disagree with someone as wise and thoughtful as Jeremy, but for the past fortnight his post in response to Apple's iOS 27 marketing invades my quiet moments like a cricket in the attic. "Why", I ruminate, "should someone who understands the state of play give Apple credit for doing less than the minimum while rubbishing those who have consistently done more?" Contents Redux Features Over Tests Focus Areas Consequences You Do Not Have To Hand It To Them Everywhere You Turn Quality Has A Quality All Its Own Redux Like Apple's previous marketing of Safari 16.4 and Safari 26, the conjoined September release of Safari and iOS 27 documents an achingly slow release cycle. It would be one thing if the features or spec conformance were world-beating, but looking closely at the release notes, Safari 27 is set to deliver fixes for issues that, by and large, competing engines didn't suffer.1 Don't get me wrong: it's great that Apple is focusing on quality; it remains a persistent issue for Safari. But how much relief should long-suffering web developers expect? The best comparative measures come from the communal Web Platform Tests project. Comparing the current experimental builds with stable channel releases can illuminate the scale of change we can expect when the next major version of each browser launches:2 WPT Test Pass Rates (%) 90% is the minimum Apple requires across all WPT tests for competitors' engines in the EU and Japan where it has been forced to allow them (in theory). Safari barely clears the bar. Source: wpt.fyi It would appear that Safari is closing on Firefox, but this is misleading. Apple managed seven releases over the past year, or a roughly eight week cadence. Mozilla and Chromium, meanwhile, have released 12 versions to stable, or one a month. These serve as denominators (7.4 weeks vs. 4.3) when calculating rates of improvement. Safari's larger increase in passing tests between nightly and stable versions (1558 vs. 990 for Firefox) look

## A beginner-friendly guide to view transitions in CSS

DevFeed: [A beginner-friendly guide to view transitions in CSS](<https://devfeed.tech/articles/a-beginner-friendly-guide-to-view-transitions-in-css-4122.md>)

Original publisher: [Read original article](<https://developer.mozilla.org/en-US/blog/view-transitions-beginner-guide/>)

Author: yash-raj-bharti

Published: 2025-10-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [MDN Blog](<https://devfeed.tech/sources/mdn-blog.md>)

Topics: [view transitions](<https://devfeed.tech/topics/view-transitions.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Single-page application (SPA)](<https://devfeed.tech/topics/spa.md>)

Tags: [beginner](<https://devfeed.tech/tags/beginner.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [css](<https://devfeed.tech/tags/css.md>), [edge](<https://devfeed.tech/tags/edge.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [safari](<https://devfeed.tech/tags/safari.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [view-transitions](<https://devfeed.tech/tags/view-transitions.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

A beginner-friendly tutorial on using CSS view transitions to add smooth animated navigation between pages in multi-page applications. It explains how the View Transition API and CSS view transitions support progressive enhancement across modern browsers, including Chrome, Edge, Safari, and developing Firefox support.

### Source excerpt

Learn how to bring smooth, animated navigation to multi-page apps with view transitions. With just one line of CSS, you can enable seamless transitions between pages.

## CSS random()

DevFeed: [CSS random()](<https://devfeed.tech/articles/css-random-20774.md>)

Original publisher: [Read original article](<https://erikrunyon.com/2025/10/css-random/>)

Author: Erik Runyon

Published: 2025-10-08T00:00:00Z

Content type: article

Language: en

Sources: [Erik Runyon](<https://devfeed.tech/sources/erik-runyon.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [WebKit](<https://devfeed.tech/topics/webkit.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [safari](<https://devfeed.tech/tags/safari.md>), [web-development](<https://devfeed.tech/tags/web-development.md>)

### AI overview

The article examines Safari's non-standard CSS random() function, describing its random(min, max, step) syntax and current limitations. It explains that the function supports numeric and color contexts but not selectors or string values, and discusses possible uses such as random dimensions, collection items, images, and displayed random numbers.

### Source excerpt

Safari recently implemented a non-standard (yet?) CSS random() function (currently only in WebKit, and not yet part of any CSS specification). Since many recent CSS features are directly aimed at replacing common JavaScript functionality, I expected this function to do the same. While it has some neat use cases, it doesn't cover most of the scenarios where I currently use JavaScript's Math.random(). What it does The basic format of the function follows the pattern "random(min, max, step)". For instance, if you want to assign an element a random height between 50px and 200px, you would use "height: random(50px, 200px)". You can also include a "step" value like so "height: random(50px, 200px, 50px)" where the values will always be a multiple of 50. You can see more examples on the WebKit post "Rolling the Dice with CSS random()" and Frontend Masters "Very Early Playing with random() in CSS". What it doesn't Currently, random() can only be used in numeric or color contexts -- not in selectors or string values like URLs or text content. I have two primary use cases, and one just for fun. All three are marked-up as I would expect to use them if they were supported in the CodePen below. Random items from a collection A common pattern on many Notre Dame sites would be to show a random item from a collection. These could be content such as faculty spotlights, recent publications, or student profiles. We always know how many we're choosing from, and they're always contained to a specific section. So being able to use CSS to show a random child using ":nth-child" would be fantastic. Random images Less common is showing random images. This could be in a feature area on the homepage, or even a decorative background image. This would require the ability to concatenate a string with the random number. Random numbers A "just for fun" feature would be displaying the value from the random() function. My initial thought would be a CSS only dice roller. The demo in the pen would requir

## Up and Coming ARIA

DevFeed: [Up and Coming ARIA](<https://devfeed.tech/articles/up-and-coming-aria-9445.md>)

Original publisher: [Read original article](<https://webaim.org/blog/up-and-coming-aria/>)

Author: John Northup

Published: 2025-05-30T18:19:41Z

Content type: tutorial

Language: en

Sources: [WebAIM Blog](<https://devfeed.tech/sources/webaim-blog.md>)

Topics: [aria](<https://devfeed.tech/topics/aria.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Web Accessibility (a11y)](<https://devfeed.tech/topics/web-accessibility.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [android](<https://devfeed.tech/tags/android.md>), [aria](<https://devfeed.tech/tags/aria.md>), [browser](<https://devfeed.tech/tags/browser.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [edge](<https://devfeed.tech/tags/edge.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [ios](<https://devfeed.tech/tags/ios.md>), [macos](<https://devfeed.tech/tags/macos.md>), [safari](<https://devfeed.tech/tags/safari.md>), [uncategorized](<https://devfeed.tech/tags/uncategorized.md>), [web](<https://devfeed.tech/tags/web.md>), [web-accessibility](<https://devfeed.tech/tags/web-accessibility.md>), [windows](<https://devfeed.tech/tags/windows.md>), [windows-11](<https://devfeed.tech/tags/windows-11.md>)

### AI overview

This article surveys emerging ARIA 1.3 features, including aria-errormessage, aria-description, aria-details, and aria-keyshortcuts. It explains their intended uses and reports varying support across browsers, screen readers, and operating systems tested in May 2025.

### Source excerpt

If you work in web accessibility, you've probably spent a lot of time explaining and implementing the ARIA roles and attributes that have been around for years--things like aria-label, aria-labelledby, and role="dialog". But the ARIA landscape isn't static. In fact, recent ARIA specifications (especially ARIA 1.3) include a number of emerging and lesser-known features that [...]

## Sending to MacOS, iOS Safari using FCM JS SDK

DevFeed: [Sending to MacOS, iOS Safari using FCM JS SDK](<https://devfeed.tech/articles/sending-to-macos-ios-safari-using-fcm-js-sdk-16527.md>)

Original publisher: [Read original article](<https://firebase.blog/posts/2023/08/fcm-for-safari>)

Author: Kai Wu

Published: 2023-08-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Firebase Blog](<https://devfeed.tech/sources/firebase-blog.md>)

Topics: [Firebase](<https://devfeed.tech/topics/firebase.md>), [push-notification](<https://devfeed.tech/topics/push-notification.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>), [web applications](<https://devfeed.tech/topics/web-applications.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [browsers](<https://devfeed.tech/topics/browsers.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [cloud-messaging](<https://devfeed.tech/tags/cloud-messaging.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [ios](<https://devfeed.tech/tags/ios.md>), [js](<https://devfeed.tech/tags/js.md>), [js-sdk](<https://devfeed.tech/tags/js-sdk.md>), [macos](<https://devfeed.tech/tags/macos.md>), [push-notification](<https://devfeed.tech/tags/push-notification.md>), [safari](<https://devfeed.tech/tags/safari.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>), [updates](<https://devfeed.tech/tags/updates.md>), [web](<https://devfeed.tech/tags/web.md>), [web-applications](<https://devfeed.tech/tags/web-applications.md>)

### AI overview

This Firebase tutorial explains how to use the FCM JS SDK to send web push notifications through Safari on macOS, iOS, and iPadOS. It covers the required setup, including Safari Push API interaction, manifest configuration, adding the app to the Home Screen on iOS and iPadOS, and requesting notification permission.

### Source excerpt

News, tutorials, and updates from the Firebase team.

## CSS only floating labels

DevFeed: [CSS only floating labels](<https://devfeed.tech/articles/css-only-floating-labels-37257.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/css-only-floating-input-labels/>)

Author: Stanko

Published: 2023-07-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [HTML](<https://devfeed.tech/topics/html.md>), [Code](<https://devfeed.tech/topics/code.md>), [Demo](<https://devfeed.tech/topics/demo.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [css](<https://devfeed.tech/tags/css.md>), [demo](<https://devfeed.tech/tags/demo.md>), [focus](<https://devfeed.tech/tags/focus.md>), [html](<https://devfeed.tech/tags/html.md>), [input](<https://devfeed.tech/tags/input.md>), [safari](<https://devfeed.tech/tags/safari.md>), [state](<https://devfeed.tech/tags/state.md>)

### AI overview

This tutorial explains how to use the CSS :placeholder-shown pseudo-class and :not() to detect whether an input is empty or has a value without JavaScript. It demonstrates floating labels and conditionally displayed clear buttons, and notes a Safari requirement for the placeholder attribute.

### Source excerpt

I recently learned about the pseudo CSS class :placeholder-shown. Obviously, it is a class that is added only when input placeholder is shown. But what that also means is that the input is empty: /* Input is empty */ input:placeholder-shown By negating it with :not() we can detect if the input has value: /* Input has value */ input:not(:placeholder-shown) I created a demo that uses these two CSS snippets to highlight input's current state. There is no JavaScript involved. Input has value Input is empty Focused Real world use cases # I recently used this to conditionally display a clear button next to an input. But it can also be used to create floating labels. However, it's important to note that anything you want to style based on the input's state needs to be positioned after the input element. Floating labels # For a floating label, the HTML structure should look something like this: <input /> <label>Floating label</label> The floating label needs to be repositioned in two scenarios: when the input is focused and when it has a value. /* Input has value */ input:focus + label, input:not(:placeholder-shown) + label { /* Move the label above the button and scale it down */ transform: translateY(-100%) scale(0.75); } Clear button # Similarly, we'll put the clear button after the input: <input /> <button>Clear</button> and hide it when input is empty: /* Input is empty */ input:placeholder-shown + button { /* Hide the clear button */ display: none; } Demo # Focus an input to make its label float, and type something to make the clear button appear. Name Email You can also play with the code on CodePen. Safari gotcha # Be aware that in Safari the :placeholder-shown pseudo class will only be added if the input has the placeholder attribute explicitly defined. Which means that we have to define it, but if we don't need the placeholder, we can easily hide it using CSS: input::placeholder { color: transparent; }

## macOS Security Bugs Exposed Safari History and Device Location to Unauthorized Apps

DevFeed: [macOS Security Bugs Exposed Safari History and Device Location to Unauthorized Apps](<https://devfeed.tech/articles/macos-security-bugs-exposed-safari-history-and-device-location-to-unauthorized-apps-39527.md>)

Original publisher: [Read original article](<https://rambo.codes/posts/2023-04-04-macos-security-bugs-exposed-safari-history-and-device-location-to-unauthorized-apps>)

Published: 2023-04-04T18:00:00Z

Content type: article

Language: en

Sources: [Rambo Codes](<https://devfeed.tech/sources/rambo-codes.md>)

Topics: [macOS](<https://devfeed.tech/topics/macos.md>), [Security](<https://devfeed.tech/topics/security.md>), [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Reverse Engineering](<https://devfeed.tech/topics/reverse-engineering.md>)

Tags: [cve](<https://devfeed.tech/tags/cve.md>), [cves](<https://devfeed.tech/tags/cves.md>), [macos](<https://devfeed.tech/tags/macos.md>), [macos-security](<https://devfeed.tech/tags/macos-security.md>), [reverse-engineering](<https://devfeed.tech/tags/reverse-engineering.md>), [safari](<https://devfeed.tech/tags/safari.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

This article examines Apple operating-system security vulnerabilities, including CVE-2023-23506/28192, involving improper validation of clients by XPC services. It explains how assumptions about local XPC service isolation can fail and discusses the potential exposure of sensitive data.

### Source excerpt

Gui Rambo writes about his coding and reverse engineering adventures.

## Using color-mix() to create opacity variants

DevFeed: [Using color-mix() to create opacity variants](<https://devfeed.tech/articles/using-color-mix-to-create-opacity-variants-28783.md>)

Original publisher: [Read original article](<https://una.im/color-mix-opacity/>)

Published: 2023-03-31T00:00:00Z

Content type: tutorial

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [color](<https://devfeed.tech/topics/color.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [browsers](<https://devfeed.tech/topics/browsers.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [css](<https://devfeed.tech/tags/css.md>), [demo](<https://devfeed.tech/tags/demo.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [firefox-nightly](<https://devfeed.tech/tags/firefox-nightly.md>), [guide](<https://devfeed.tech/tags/guide.md>), [safari](<https://devfeed.tech/tags/safari.md>)

### AI overview

This tutorial explains how CSS color-mix() can create semi-opaque variants of brand colors by mixing them with the transparent color value. It also discusses browser support, color spaces, and a related DevTools demo.

### Source excerpt

Build an alpha color system without splitting out channels using this one neat trick.

## Safari 16.4 Adds Long-Delayed Web Platform Features

DevFeed: [Safari 16.4 Adds Long-Delayed Web Platform Features](<https://devfeed.tech/articles/safari-16-4-is-an-admission-26538.md>)

Original publisher: [Read original article](<https://infrequently.org/2023/02/safari-16-4-is-an-admission/>)

Author: Alex Russell

Published: 2023-02-22T00:00:00Z

Content type: opinion

Language: en

Sources: [Alex Russell](<https://devfeed.tech/sources/alex-russell.md>)

Topics: [WebKit](<https://devfeed.tech/topics/webkit.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [PWA](<https://devfeed.tech/topics/pwa.md>)

Tags: [browsers](<https://devfeed.tech/tags/browsers.md>), [competition](<https://devfeed.tech/tags/competition.md>), [components](<https://devfeed.tech/tags/components.md>), [compression](<https://devfeed.tech/tags/compression.md>), [css](<https://devfeed.tech/tags/css.md>), [pwa](<https://devfeed.tech/tags/pwa.md>), [reporting](<https://devfeed.tech/tags/reporting.md>), [safari](<https://devfeed.tech/tags/safari.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [webdev](<https://devfeed.tech/tags/webdev.md>), [webrtc](<https://devfeed.tech/tags/webrtc.md>)

### AI overview

This commentary reviews Safari 16.4's web-platform additions, including PWA, Web Components, CSS, Web Codecs, WASM SIMD, compression, reporting, Canvas, and WebRTC changes. It argues that many features arrived years after Chromium implementations and notes some improvements remain limited to macOS and iPadOS.

### Source excerpt

If you're a web developer not living under a rock, you probably saw last week's big Safari 16.4 reveal. There's much to cheer, but we need to talk about why this mega-release is happening now, and what it means for the future. Contents WebKit's Roaring Twenties Good Things Come In Sixes What Changed? Headcount Is Destiny Early Innings But first, the list! WebKit's Roaring Twenties Apple's summary combines dozens of minor fixes with several big-ticket items. Here's an overview of the most notable features, prefixed with the year they shipped in Chromium: 2015: Web Push for iOS (but only for installed PWAs) 2020: PWA Badging API (for unread counts) and id support (making updates smoother) 2015: PWA installation for third-party browsers (but not to parity with "Smart Banners") A bevy of Web Components features, many of which Apple had held up in standards bodies for years1, including: 2019: Constructable Stylesheets (important for performance) 2019: Form participation and default ARIA role 2021: Declarative Shadow DOM for "SSR" Myriad small CSS improvements and animation fixes, but also: 2018: CSS Typed OM for faster styling from JavaScript 2020: CSS Custom Properties can now be animated 2019: <iframe> lazy loading 2017: Clear-Site-Data for Service Worker use at scale 2021: Web Codecs for video (but not audio) 2021: WASM SIMD for better ML and games 2020: Compression Streams 2018: Reporting API (for learning about crashes and metrics reporting) 2020: Screen Orientation & Screen Wake Lock APIs (critical for games) 2018: Offscreen Canvas (but only 2D, which isn't what folks really need) Critical usability and quality fixes for WebRTC A number of improvements look promising, but remain exclusive to macOS and iPadOS: Fullscreen API fixes AVIF and AV1 support The lack of iOS support for Fullscreen API on <canvas> elements continues to harm game makers; likewise, the lack of AVIF and AV1 holds back media and streaming businesses. Regardless, Safari 16.4 is astonishingly dens

## How Artsy Preserved Cookie Preferences Beyond Safari's 7-Day Limit

DevFeed: [How Artsy Preserved Cookie Preferences Beyond Safari's 7-Day Limit](<https://devfeed.tech/articles/hacking-around-safari-s-7-day-cookie-limit-19161.md>)

Original publisher: [Read original article](<https://artsy.github.io/blog/2022/08/23/getting-around-7-day-cookie/>)

Published: 2022-08-23T00:00:00Z

Content type: tutorial

Language: en

Sources: [Artsy](<https://devfeed.tech/sources/artsy.md>)

Topics: [browser](<https://devfeed.tech/topics/browser.md>), [WebKit](<https://devfeed.tech/topics/webkit.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [client](<https://devfeed.tech/topics/client.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [browser](<https://devfeed.tech/tags/browser.md>), [ccpa](<https://devfeed.tech/tags/ccpa.md>), [cookies](<https://devfeed.tech/tags/cookies.md>), [gdpr](<https://devfeed.tech/tags/gdpr.md>), [privacy](<https://devfeed.tech/tags/privacy.md>), [safari](<https://devfeed.tech/tags/safari.md>), [server](<https://devfeed.tech/tags/server.md>), [ux](<https://devfeed.tech/tags/ux.md>), [wwdc](<https://devfeed.tech/tags/wwdc.md>)

### AI overview

This article explains how Artsy addressed Safari's seven-day limit on client-side cookies, which caused cookie-consent preferences to be repeatedly requested. It describes replacing the client-side cookie with a same-domain, secure, server-side cookie so the preferences persist beyond seven days.

### Source excerpt

Amongst the many, many things that organizations have to contend with around cookie consent laws is Apple's very own browser, Safari. Did you know that Safari will only retain a client-side cookie for 7 days? This is in support of Apple's Intelligent Tracking Prevention (ITP) feature, designed to protect a user's privacy. These privacy efforts are great but, in hand with laws like GDPR and CCPA, their rollout often creates a UX nightmare for users without some extra care. Here at Artsy, we've landed on a way to make things slightly less bad and want to share our approach. Scenario: Imagine that as a EU resident you visit artsy.net for the first time. A banner appears asking you to Accept or Deny tracking cookies from our site. You don't like tracking cookies, so you click the "Deny" button and the banner disappears. All good, right? Nope! You visit Artsy a week later and again, a banner appears asking you to choose your preferences. This happens again and again until you switch browsers and realize that what you were experiencing was Apple's ITP feature in action. After choosing your preferences, the cookie we use to store them is erased after 7 days, necessitating another interaction. We thrashed around in this vicious cycle for months until we found a simple, elegant solution thanks to a WebKit engineer's prompt (during Apple's open lab calls at WWDC - which you too can schedule!) She mentioned that the 7-day cookie limitation only applies to client-side cookies and that same-domain, secure, server-side cookies are not limited to these constraints. This got us thinking. Our third-party cookie consent management service sets a client-side cookie, not a server-side cookie. Could we perhaps overwrite the client-side cookie with a server-side cookie of the same name and trick Safari into persisting the user preferences beyond the 7-day limit? We gave it a try and... Yes. We. Can! And this means that you can too (and it's also real easy to implement). First, define an AP

## Safari's approach may push web developers and users toward Chromium

DevFeed: [Safari's approach may push web developers and users toward Chromium](<https://devfeed.tech/articles/safari-isn-t-protecting-the-web-it-s-killing-it-19095.md>)

Original publisher: [Read original article](<https://httptoolkit.com/blog/safari-is-killing-the-web/>)

Author: HTTP Toolkit; Tim Perry

Published: 2021-07-28T15:50:00Z

Content type: opinion

Language: en

Sources: [HTTP Toolkit](<https://devfeed.tech/sources/http-toolkit.md>)

Topics: [browser](<https://devfeed.tech/topics/browser.md>), [Web](<https://devfeed.tech/topics/web.md>), [Chromium](<https://devfeed.tech/topics/chromium.md>), [WebKit](<https://devfeed.tech/topics/webkit.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [chromium](<https://devfeed.tech/tags/chromium.md>), [safari](<https://devfeed.tech/tags/safari.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

This opinion article argues that Safari's unimplemented features, bugs, and slow release cycle can harm web development and may push developers and users toward Chromium. The author avoids speculating about Apple's motivations and argues that browser diversity remains important.

### Source excerpt

There's been a lot of discussion recently about how "Safari is the new IE" (1, 2, 3, 4, 5). I don't want to rehash the basics of that, but I have seen some interesting rebuttals, most commonly: Safari is actually protecting the web, by resisting adding unnecessary and experimental features that create security/privacy/bloat problems. That is worth further discussion, because it's widespread, and wrong. More specifically, Safari's approach isn't protecting the web from bloat & evil Google influence, because: Most features that Safari hasn't implemented have no hint of security, privacy or performance concerns, and they've been implemented in every other browser already. The largest Safari complaint is unrelated to experimental features from the Chrome team: it's the showstopping bugs in implemented features, made worse by Safari's slow release cycle. Refusing to engage with the contentious API proposals for real use cases doesn't actually protect the web anyway - it just pushes web developers and users into the arms of Chromium. We'll dig into each of these points in more detail in a second, and then we'll talk about what Safari could do instead. There have been other arguments made too, including much speculation about why Safari might be killing the web - is this motivated by protecting Apple's app store profits? I'm going to ignore those suggestions entirely, and stick to concrete problems. Their reasons are their own, outside Apple we can do little more than guess, and the concrete issues can make the point without conjecture. Before we start, I do want to recognize that the Safari/WebKit team are working hard, and I do desperately want them to succeed! Chromium's domination is bad for everybody, and building a popular browser that's focused on privacy & security, as they appear to be trying to do, is a fantastic goal. That does not mean their current approach deserves our blind support. I'm sure the Safari team are working on the issues below already, and I thin

## New aspect-ratio CSS property supported in Chromium, Safari Technology Preview, and Firefox Nightly

DevFeed: [New aspect-ratio CSS property supported in Chromium, Safari Technology Preview, and Firefox Nightly](<https://devfeed.tech/articles/new-aspect-ratio-css-property-supported-in-chromium-safari-technology-preview-and-firefox-nightly-28736.md>)

Original publisher: [Read original article](<https://una.im/2021-01-28-aspect-ratio/>)

Published: 2021-01-28T00:00:00Z

Content type: article

Language: en

Sources: [Una Kravets](<https://devfeed.tech/sources/una-kravets.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [Chromium](<https://devfeed.tech/topics/chromium.md>), [Firefox Nightly](<https://devfeed.tech/topics/firefox-nightly.md>)

Tags: [chromium](<https://devfeed.tech/tags/chromium.md>), [css](<https://devfeed.tech/tags/css.md>), [firefox-nightly](<https://devfeed.tech/tags/firefox-nightly.md>), [property](<https://devfeed.tech/tags/property.md>), [safari](<https://devfeed.tech/tags/safari.md>)

### AI overview

The article reports support for the new CSS aspect-ratio property in Chromium, Safari Technology Preview, and Firefox Nightly. The property helps maintain spacing in responsive layouts.

### Source excerpt

The new CSS property that helps maintain spacing in responsive layouts.

## Safari's 100vh Problem

DevFeed: [Safari's 100vh Problem](<https://devfeed.tech/articles/safari-s-100vh-problem-19122.md>)

Original publisher: [Read original article](<https://medium.com/rbi-tech/safaris-100vh-problem-3412e6f13716?source=rss----904782439303---4>)

Author: Jon Rose

Published: 2020-06-17T19:14:35Z

Content type: tutorial

Language: en

Sources: [RBI Tech](<https://devfeed.tech/sources/rbi-tech.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [100vh](<https://devfeed.tech/tags/100vh.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [css](<https://devfeed.tech/tags/css.md>), [css3](<https://devfeed.tech/tags/css3.md>), [ios](<https://devfeed.tech/tags/ios.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [safari](<https://devfeed.tech/tags/safari.md>)

### AI overview

This tutorial explains how Safari on mobile handles the CSS 100vh unit. Safari keeps the viewport height constant while its button bar hides and reappears, which can cover content or navigation. The article recommends positioning for navigation and using JavaScript with innerHeight when content height must reflect the visible viewport.

### Source excerpt

Safari, being an Apple product, tends to "Think Different". Given Apple's dominant market share, especially in the US, it's important that we understand these differences, and know how to work with them. In this blog post, we're going to tackle the 100vh problem. 100vh Quick recap. The vh unit, introduced with CSS3, allows you to specify the percent of the total viewport's height. So 100vh would be 100% of the viewport. It's mobile responsive and has made building layouts much easier. Navbar Problem Let's try making a simple homepage with a footer for navigation. https://medium.com/media/cff698e095a28a6928ff7148fc3c694d/href In the main element is our content. We give it a height of 95vh or 95% of the total height. The footer gets the remaining 5% of the viewport. If we load this up on a desktop, it works exactly as expected. Checking Safari on mobile and we see: Why? This must be a bug, right? Well, no. This is actually a feature. When working on Safari, the team worked hard to show the button bar only when necessary. Their goal was to give more space to the website whenever possible, which is why the button bar hides when scrolling. This lead to a tough decision about how the viewport's height would be handled. Would it: 1. change the height every time the bar hides and shows or 2. make the viewport height constant, and have the button bar cover part of the viewport They opted for a constant height to avoid jankiness. This means that our navbar is in fact there, just hidden behind the button bar. When the button bar hides, we can see the navbar really was there. Navbar Solution So what do we do? Instead of placing our navbar by using height, we use positioning instead. https://medium.com/media/20c4987011013a9c0c01fd1b0ce9aceb/href Checking it out on desktop and we can see nothing changed: And now on mobile, we finally get what we expect. Content Problem The navbar example is a bit contrived. Hopefully you wouldn't use height for positioning regardless of the 100vh

## Hack for iOS Safari to display the HTML video thumbnail

DevFeed: [Hack for iOS Safari to display the HTML video thumbnail](<https://devfeed.tech/articles/hack-for-ios-safari-to-display-the-html-video-thumbnail-37277.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/hack-for-ios-safari-to-display-html-video-thumbnail/>)

Author: Stanko

Published: 2020-05-12T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [HTML](<https://devfeed.tech/topics/html.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [browser-support](<https://devfeed.tech/tags/browser-support.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [edge](<https://devfeed.tech/tags/edge.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [html](<https://devfeed.tech/tags/html.md>), [ios](<https://devfeed.tech/tags/ios.md>), [safari](<https://devfeed.tech/tags/safari.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

A tutorial explains how adding the Media Fragment #t=0.001 to a video URL can make iOS Safari preload and display a video frame as its thumbnail before playback. The technique is also reported to work in several desktop browsers and on iOS and Android phones.

### Source excerpt

Mobile iOS Safari doesn't display preview thumbnail until you tap on the video. My go-to solution was to define a poster attribute and move on. But today I learned I could use something called Media Fragments. Media Fragments specify a way of sharing parts of audio and video files by simply adding url params. Browser support varies, but fortunately support for what we need is pretty good. Code # By simply adding #t=0.001 at the end of the video file url, we are telling the browser to skip the first millisecond of the video. When you do this, even iOS Safari will preload and show that specific frame to the user. So the code looks like this: <video> <source src="path-to-video.mp4#t=0.001" type="video/mp4" /> </video> Example # Please note that you need to check the example using iOS Safari to see the difference. Without media fragmentsWith media fragments It is a hacky solution, but I've tested it on desktop Firefox, Safari, Chrome, IE11 and Edge, as well as on iOS and Android phones and it works in all of those.

## iOS Safari window.scrollTo / getBoundingClientRect bug

DevFeed: [iOS Safari window.scrollTo / getBoundingClientRect bug](<https://devfeed.tech/articles/ios-safari-window-scrollto-getboundingclientrect-bug-37294.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/ios-safari-get-bounding-client-rect-bug/>)

Author: Stanko

Published: 2018-06-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [browser](<https://devfeed.tech/topics/browser.md>), [bug](<https://devfeed.tech/topics/bug.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [bug](<https://devfeed.tech/tags/bug.md>), [function](<https://devfeed.tech/tags/function.md>), [ios](<https://devfeed.tech/tags/ios.md>), [safari](<https://devfeed.tech/tags/safari.md>), [window](<https://devfeed.tech/tags/window.md>)

### AI overview

An iOS Safari bug can cause getBoundingClientRect to return an incorrect position when window.scrollTo is called immediately with a value beyond the document's maximum scroll. The article provides a workaround that caps the scroll value at the maximum possible scroll position.

### Source excerpt

This is a weird one, and not something you will stumble into every day. But it is a bug nonetheless. On iOS safari, if you use window.scrollTo(0, y) and y is larger than document's maximum scroll, any immediate call to getBoundingClientRect will return incorrect top value.Same will happen for horizontal scroll and left value. What happens is that browser thinks it actually scrolled to y and calculates element's position based on that scroll position. This happens only if scrollTo and getBoundingClientRect are executed one right after the other. Not even requestAnimationFrame will save you. Adding a small timeout will, but that is not a viable solution. Check the demo to see it yourself.Unfortunately I couldn't include the iframe with the demo, because of the other bug. Today's your lucky day, you got two bugs by the price of one! I've tested it only on iOS 11, but I guess other versions are affected as well. Solution # Solution is easy, we need to determine maximum possible scroll and to cap our y value. Helper method: function getPageMaxScroll() { // Cross browser page height detection is ugly return Math.max( document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight ) - window.innerHeight; // Subtract viewport height } Usage: let top = 1000000; // Value larger than maximum scroll const maxScroll = getPageMaxScroll(); // Fix for bug on iOS devices // When top was larger than maximum page scroll // "getBoundingClientRect" would take that value into calculations if (top > maxScroll) { top = maxScroll; } // Scroll the window to the new position window.scrollTo(0, top); // Get the new position const rect = this.contentWrapperElement.getBoundingClientRect(); Hope that helps! P.S. There is another bug on iOS Safari with getBoundingClientRect and position: fixed, but that one is documented and tracked.

## localStorage and sessionStorage in Safari's private mode

DevFeed: [localStorage and sessionStorage in Safari's private mode](<https://devfeed.tech/articles/localstorage-and-sessionstorage-in-safari-s-private-mode-37306.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/localstorage-and-sessionstorage-in-safaris-private-mode/>)

Author: Stanko

Published: 2017-08-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [LocalStorage](<https://devfeed.tech/topics/localstorage.md>), [Code](<https://devfeed.tech/topics/code.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [error](<https://devfeed.tech/tags/error.md>), [export](<https://devfeed.tech/tags/export.md>), [ls](<https://devfeed.tech/tags/ls.md>), [null](<https://devfeed.tech/tags/null.md>), [object](<https://devfeed.tech/tags/object.md>), [qa](<https://devfeed.tech/tags/qa.md>), [quota](<https://devfeed.tech/tags/quota.md>), [return](<https://devfeed.tech/tags/return.md>), [safari](<https://devfeed.tech/tags/safari.md>), [storage](<https://devfeed.tech/tags/storage.md>), [test](<https://devfeed.tech/tags/test.md>), [value](<https://devfeed.tech/tags/value.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

This article explains that Safari private mode sets localStorage and sessionStorage limits to zero, preventing writes. It presents a localStorage facade that silently ignores storage operations when storage is unavailable, avoiding application errors.

### Source excerpt

If you didn't know, in Safari's private mode both localStorage and sessionStorage are not working. To be exact, Safari sets storage's limit to 0, so you can't write anything to it. I keep forgetting this, until QA people report it at some point. So I quickly wrote a small facade for it, which fails silently in this case. That means it still doesn't work but it won't throw an error and break your application. This is the version for localStorage, just replace it with sessionStorage if you need it. const LS_TEST_KEY = 'ls-test'; let isLocalStorageSupported = typeof localStorage === 'object'; // Try to try { localStorage.setItem(LS_TEST_KEY, 'test'); localStorage.removeItem(LS_TEST_KEY); } catch (e) { isLocalStorageSupported = false; // If we get error that we exceeded storage's quota // but storage is still empty we are in private mode if (e.code === DOMException.QUOTA_EXCEEDED_ERR && localStorage.length === 0) { // Private mode } else { throw e; } } const LocalStorage = { getItem: (key) => { if (isLocalStorageSupported) { return localStorage.getItem(key); } return null; }, setItem: (key, value) => { if (isLocalStorageSupported) { localStorage.setItem(key, value); } }, removeItem: (key) => { if (isLocalStorageSupported) { localStorage.removeItem(key); } }, }; export default LocalStorage;

## My iOS Build Won't Install

DevFeed: [My iOS Build Won't Install](<https://devfeed.tech/articles/my-ios-build-won-t-install-19387.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/my-ios-build-wont-install/>)

Author: Shai Almog

Published: 2017-05-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [debug](<https://devfeed.tech/topics/debug.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [debug](<https://devfeed.tech/tags/debug.md>), [ios](<https://devfeed.tech/tags/ios.md>), [issue](<https://devfeed.tech/tags/issue.md>), [pitfalls](<https://devfeed.tech/tags/pitfalls.md>), [run](<https://devfeed.tech/tags/run.md>), [safari](<https://devfeed.tech/tags/safari.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This tutorial lists common reasons an iOS build may fail to install on a device, including incorrect build variants, architecture settings, UDIDs, package-name conflicts, iOS version requirements, browser choice, and provisioning settings.

### Source excerpt

Recently I sent a build and had an issue installing it. It was late at night and I just forgot to add the build hint ios.debug.archs=armv7 for installation on the 3rd gen iPad I was testing with. So we can all trip over basic mistakes when it comes to iOS installs. So for your convenience I made a list of common pitfalls you might run into if your iOS build won't install on your device.

## Change to position fixed on iOS Safari while scrolling

DevFeed: [Change to position fixed on iOS Safari while scrolling](<https://devfeed.tech/articles/change-to-position-fixed-on-ios-safari-while-scrolling-37295.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/ios-safari-scroll-position-fixed/>)

Author: Stanko

Published: 2016-06-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [devices](<https://devfeed.tech/tags/devices.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [ios](<https://devfeed.tech/tags/ios.md>), [safari](<https://devfeed.tech/tags/safari.md>)

### AI overview

A CSS translate3d(0,0,0) rule can force GPU acceleration for fixed elements, helping prevent flickering or disappearance while scrolling in iOS Safari and other mobile browsers. The same workaround may need to be applied to nested elements.

### Source excerpt

If you ever had to fix element on scroll, you probably had an issue on iOS Safari (and other mobile devices). Element will usually flicker, and disappear until scrolling has stopped completely. Just force GPU acceleration by adding transform: translate3d(0,0,0); to your element. You will have something like this: .Element-header { transform: translate3d(0,0,0); } .Element-header--fixed { top: 0; position: fixed; } Enjoy ¯\_(ツ)_/¯ Update, if the element inside fixed one flickers # In the comments Matt made a great tip, so I'm adding it here as well: If you are styling the element within fixed element, you need to apply the translate3d hack to the nested element in order for it to not flicker/disappear. Thanks Matt!

## Solved by Flexbox

DevFeed: [Solved by Flexbox](<https://devfeed.tech/articles/solved-by-flexbox-29524.md>)

Original publisher: [Read original article](<https://philipwalton.com/articles/solved-by-flexbox/>)

Published: 2013-10-04T05:59:16Z

Content type: article

Language: en

Sources: [Philip Walton](<https://devfeed.tech/sources/philip-walton.md>)

Topics: [CSS](<https://devfeed.tech/topics/css.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [modern web development](<https://devfeed.tech/topics/modern-web-development.md>)

Tags: [chrome](<https://devfeed.tech/tags/chrome.md>), [css](<https://devfeed.tech/tags/css.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [flexbox](<https://devfeed.tech/tags/flexbox.md>), [layout](<https://devfeed.tech/tags/layout.md>), [safari](<https://devfeed.tech/tags/safari.md>)

### AI overview

The article introduces the Solved by Flexbox project and explains how the newer Flexbox specification provides a practical CSS solution for layout problems that previously required JavaScript or complex hacks. It notes that the updated specification was becoming available across major browsers, following earlier browser-support and syntax limitations.

### Source excerpt

The first version of philipwalton.com was built using Flexbox way back in 2010 when the syntax was display:box. It only worked in Chrome, Safari, and Firefox and was pretty buggy, but it worked and was a million times better than any existing layout method.

## WebKit for Developers

DevFeed: [WebKit for Developers](<https://devfeed.tech/articles/webkit-for-developers-21679.md>)

Original publisher: [Read original article](<https://paulirish.com/2013/webkit-for-developers/>)

Author: Paul Irish

Published: 2013-02-28T10:53:00Z

Content type: article

Language: en

Sources: [Paul Irish](<https://devfeed.tech/sources/paul-irish.md>)

Topics: [WebKit](<https://devfeed.tech/topics/webkit.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [web browser](<https://devfeed.tech/topics/web-browser.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>), [Chromium](<https://devfeed.tech/topics/chromium.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apple](<https://devfeed.tech/tags/apple.md>), [browser](<https://devfeed.tech/tags/browser.md>), [browsers](<https://devfeed.tech/tags/browsers.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [chromium](<https://devfeed.tech/tags/chromium.md>), [css](<https://devfeed.tech/tags/css.md>), [developers](<https://devfeed.tech/tags/developers.md>), [html](<https://devfeed.tech/tags/html.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [mac-os](<https://devfeed.tech/tags/mac-os.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [safari](<https://devfeed.tech/tags/safari.md>), [web](<https://devfeed.tech/tags/web.md>), [web-browser](<https://devfeed.tech/tags/web-browser.md>)

### AI overview

This article explains WebKit as an open browser engine and examines how WebKit-based browsers share components while differing across platform-specific ports. It covers parsing, layout, rendering, networking, hardware acceleration, and WebKit's use in Safari, GTK-based environments, and mobile browsers, while preserving a historical snapshot from early 2013.

### Source excerpt

Feb 2015: A lot's happened since I wrote this post two years ago. Chrome forked WebKit and started Blink, Opera adopted Chromium, and node-webkit became nw.js. This post describes a complexity of defining WebKit that doesn't exist much anymore; with Chrome's departure the WebKit world is more simple and clear. WebKit is deployed through iOS Safari and Mac Safari, and the active GTK community leverages WebKit inside the GNOME Platform. Some smaller mobile browsers use WebKit, some Chromium, some use forks of either, and many just use the system WebViews that are both powered by up-to-date version of iOS WebKit and Android Chromium. The post below is kept intact and represents a snapshot of history in early 2013, rather than the modern WebKit landscape. For many of us developers, WebKit is a black box. We throw HTML, CSS, JS and a bunch of assets at it, and WebKit, somehow.. magically, gives us a webpage that looks and works well. But in fact, as my colleague Ilya Grigorik puts it... WebKit isn't a black box. It's a white box. And not just that, but an open, white box. So let's take a moment to understand some things: What is WebKit? What isn't WebKit? How is WebKit used by WebKit-based browsers? Why are all WebKits not the same? Now, especially with the news that Opera has moved to WebKit, we have a lot of WebKit browsers out there, but its pretty hard to know what they share and where they part ways. Below we'll hopefully shine some light on this. As a result you'll be able to diagnose browser differences better, report bugs at the right tracker, and understand how to develop against specific browsers more effectively. Standard Web Browser Components Let's lay out a few components of the modern day web browser: Parsing (HTML, XML, CSS, JavaScript) Layout Text and graphics rendering Image decoding GPU interaction Network access Hardware acceleration Which of those are shared in WebKit-based browsers? Pretty much only the first two. The others are handled by individual

## Mobile: Unit Testing

DevFeed: [Mobile: Unit Testing](<https://devfeed.tech/articles/mobile-unit-testing-2082.md>)

Original publisher: [Read original article](<https://developers.soundcloud.com/blog//mobile-unit-testing>)

Published: 2011-09-12T00:00:00Z

Content type: article

Language: en

Sources: [SoundCloud Backstage Blog](<https://devfeed.tech/sources/soundcloud-backstage-blog.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [Unit testing](<https://devfeed.tech/topics/unit-testing.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Mocking](<https://devfeed.tech/topics/mocking.md>), [jQuery](<https://devfeed.tech/topics/jquery.md>), [Selenium](<https://devfeed.tech/topics/selenium.md>), [WebKit](<https://devfeed.tech/topics/webkit.md>), [Jenkins](<https://devfeed.tech/topics/jenkins.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [browser](<https://devfeed.tech/tags/browser.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [continuous-integration](<https://devfeed.tech/tags/continuous-integration.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [jenkins](<https://devfeed.tech/tags/jenkins.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [safari](<https://devfeed.tech/tags/safari.md>), [selenium](<https://devfeed.tech/tags/selenium.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

This article describes SoundCloud's early-2011 experience establishing JavaScript unit testing for its Mobile project. It covers the selection of QUnit, Mockjax for mocking API requests, PhantomJS for browser-like test execution in Jenkins-based continuous integration, and the evaluation of Selenium and TestSwarm.

### Source excerpt

When we started the Mobile project early 2011, unit testing JavaScript was one of the goals to tackle on the technical side. The history of...

## A week with the iPhone

DevFeed: [A week with the iPhone](<https://devfeed.tech/articles/a-week-with-the-iphone-21883.md>)

Original publisher: [Read original article](<https://blog.nelhage.com/2007/12/a-week-with-the-iphone/>)

Author: Nelson Elhage

Published: 2007-12-31T01:41:00Z

Content type: opinion

Language: en

Sources: [Nelson Elhage](<https://devfeed.tech/sources/nelson-elhage.md>)

Topics: [iphone](<https://devfeed.tech/topics/iphone.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [iphone](<https://devfeed.tech/tags/iphone.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [safari](<https://devfeed.tech/tags/safari.md>), [screen](<https://devfeed.tech/tags/screen.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>)

### AI overview

An early hands-on opinion about the iPhone praises its interface, image and webpage navigation, and Mobile Safari, while criticizing its keyboard for symbol entry, one-handed use, limited background activity, and reliance on internet access.

### Source excerpt

I've had a new iPhone for about a week now, so I figure it's time to write up some thoughts about it. First, the little things. It is, in typical Apple fashion, an incredibly slick piece of work. Scrolling and zooming images or webpages is simple, easy, and, well, just fun to do and watch. Mobile Safari does a great job of making full webpages usable on the tiny screen.