<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://web.dev/</id>
  <title>Michael Friesenhahn on web.dev</title>
  <updated>2026-04-15T23:21:06Z</updated>
  <author>
    <name>Michael Friesenhahn</name>
  </author>
  <link href="https://web.dev/authors/mfriesenhahn/feed.xml" rel="self"/>
  <link href="https://web.dev/"/>
  <icon>https://web-dev.imgix.net/image/admin/z1OxoDh8QIp4q9l3wOCO.jpg?auto=format</icon>
  <logo>https://web.dev/images/shared/rss-banner.png</logo>
  <subtitle>Michael is a Tech Writer</subtitle>
  
  
  <entry>
    <title>OYO Lite: a TWA with the best of web and Android apps</title>
    <link href="https://web.dev/oyo-lite-twa/"/>
    <updated>2019-11-07T00:00:00Z</updated>
    <id>https://web.dev/oyo-lite-twa/</id>
    <content type="html" mode="escaped">&lt;p&gt;Founded in 2013, &lt;a href=&quot;https://www.oyorooms.com/&quot; rel=&quot;noopener&quot;&gt;OYO Rooms&lt;/a&gt;
has become one of India&#39;s largest hospitality companies,
with hotels across hundreds of cities in more than 80 countries.
That success came in part from making their online reservation experience
as fast and easy as possible.&lt;/p&gt;
&lt;p&gt;Until recently, the OYO team was offering both a
&lt;a href=&quot;https://developers.google.com/web/progressive-web-apps&quot; rel=&quot;noopener&quot;&gt;Progressive Web App (PWA)&lt;/a&gt;
and an Android app to achieve that goal.
The Android app had significantly higher engagement:
users converted three times as often as those using the PWA.
But users also tended to uninstall the Android app over time
because of concerns about storage space.&lt;/p&gt;
&lt;p&gt;To reduce the Android app&#39;s footprint on users&#39; devices
while keeping the benefits of the Android experience,
the team decided to turn to
&lt;a href=&quot;https://developer.chrome.com/docs/android/trusted-web-activity/&quot; rel=&quot;noopener&quot;&gt;Trusted Web Activities (TWAs)&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;whats-a-twa&quot;&gt;What&#39;s a TWA? &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/oyo-lite-twa/#whats-a-twa&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before Chrome 72, Android developers who wanted to display web content in
their platform-specific apps had to use
&lt;a href=&quot;https://developer.android.com/reference/android/webkit/WebView&quot; rel=&quot;noopener&quot;&gt;WebView&lt;/a&gt;,
which came with some meaningful limitations:
it&#39;s not as fast as Chrome and doesn&#39;t include all of Chrome&#39;s APIs and features.
So, if you wanted behavior that WebView&#39;s rendering engine didn&#39;t support,
you had to build your own browser around it—which isn&#39;t exactly trivial!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.chrome.com/docs/android/trusted-web-activity/&quot; rel=&quot;noopener&quot;&gt;Trusted Web Activities (TWAs)&lt;/a&gt;
address those limitations by showing web content directly in Chrome.
Breaking down the TWA name helps explain its features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An &lt;em&gt;activity&lt;/em&gt; is one screen or view in an Android app&#39;s user interface.&lt;/li&gt;
&lt;li&gt;TWAs use Chrome to display &lt;em&gt;web&lt;/em&gt; content for the app&#39;s activities.&lt;/li&gt;
&lt;li&gt;A TWA&#39;s content is &lt;em&gt;trusted&lt;/em&gt; because it uses
&lt;a href=&quot;https://developers.google.com/digital-asset-links/v1/getting-started&quot; rel=&quot;noopener&quot;&gt;Digital Asset Links&lt;/a&gt;
to verify that the same person created the Android app
and the web content that it&#39;s displaying.&lt;/li&gt;
&lt;/ul&gt;
&lt;aside class=&quot;aside flow bg-state-info-bg color-state-info-text&quot;&gt;&lt;div class=&quot; flow&quot;&gt; It&#39;s easy to confuse PWAs and TWAs. &lt;em&gt;PWAs&lt;/em&gt; use web technologies to create experiences comparable to Android/iOS/desktop apps. &lt;em&gt;TWAs&lt;/em&gt; allow you to display a PWA in an Android app wrapper that can be downloaded from the Google Play Store. &lt;/div&gt;&lt;/aside&gt;
&lt;h2 id=&quot;why-create-a-twa-rather-than-a-platform-specific-app&quot;&gt;Why create a TWA rather than a platform-specific app? &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/oyo-lite-twa/#why-create-a-twa-rather-than-a-platform-specific-app&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;More and more Android apps are delivering content from developers&#39; own websites.
TWAs acknowledge that reality by offering the best
of the platform-specific and web app worlds:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They have all the expected functionality of Android apps,
including a launcher icon, push notifications, and fullscreen display.&lt;/li&gt;
&lt;li&gt;They offer the performance and features of Chrome.&lt;/li&gt;
&lt;li&gt;They use the version of Chrome installed on the device,
so they always have the latest APIs and features.&lt;/li&gt;
&lt;li&gt;They use significantly less storage than a platform-specific app,
which is a concern for many users,
especially those with lower-end devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Running in Chrome also has a number of handy perks.
For example, TWAs share Chrome&#39;s storage,
including cookies, passwords, and anything stored using the
&lt;a href=&quot;https://developer.mozilla.org/docs/Web/API/Web_Storage_API&quot; rel=&quot;noopener&quot;&gt;Web Storage API&lt;/a&gt;.
One benefit of this setup is that users stay logged in
across the browser and the TWA app.&lt;/p&gt;
&lt;aside class=&quot;aside flow bg-state-info-bg color-state-info-text&quot;&gt;&lt;div class=&quot; flow&quot;&gt; TWA support will soon be available in several Android browsers; both Samsung and FireFox have committed to TWA. You can specify what browser you want your app to use, though it&#39;s best to select the user&#39;s default browser. &lt;/div&gt;&lt;/aside&gt;
&lt;h2 id=&quot;building-oyo-lite&quot;&gt;Building OYO Lite &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/oyo-lite-twa/#building-oyo-lite&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The OYO team wanted to give their users a full-featured app experience
without having to compromise on device storage,
so they decided to create
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.oyo.consumerlite&quot; rel=&quot;noopener&quot;&gt;OYO Lite&lt;/a&gt;,
a TWA built on their existing PWA.&lt;/p&gt;
&lt;p&gt;Starting with a PWA is essential.
Users expect a full-featured experience in an app they run from the Android launcher,
so web content served in a TWA must provide that experience, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fast load and response times&lt;/li&gt;
&lt;li&gt;Reliability when the user has limited or no connectivity&lt;/li&gt;
&lt;li&gt;A unified look and feel (by providing, for example, a splash screen and app color)&lt;/li&gt;
&lt;/ul&gt;
&lt;aside class=&quot;aside flow bg-state-info-bg color-state-info-text&quot;&gt;&lt;div class=&quot; flow&quot;&gt; Meeting the &lt;a href=&quot;https://developer.chrome.com/docs/lighthouse/pwa/&quot;&gt;Lighthouse requirements for a PWA&lt;/a&gt; is actually a prerequisite for TWAs. To learn more about building a PWA, see the &lt;a href=&quot;https://web.dev/installable&quot;&gt;Installable collection&lt;/a&gt;. &lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;If you already have a PWA,
the steps for creating a basic TWA are designed to be low-effort,
even if you&#39;ve never developed for Android before.
Here&#39;s what the OYO team did:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Created an
&lt;a href=&quot;https://developer.android.com/guide/topics/manifest/manifest-intro&quot; rel=&quot;noopener&quot;&gt;Android manifest file&lt;/a&gt;
containing a &lt;code&gt;DEFAULT_URL&lt;/code&gt; and
&lt;a href=&quot;https://developer.android.com/guide/components/intents-filters&quot; rel=&quot;noopener&quot;&gt;intent filters&lt;/a&gt;
to allow the app to display content from &lt;a href=&quot;https://oyorooms.com/&quot; rel=&quot;noopener&quot;&gt;oyorooms.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Removed the browser&#39;s URL bar using
&lt;a href=&quot;https://developers.google.com/digital-asset-links/v1/getting-started&quot; rel=&quot;noopener&quot;&gt;Digital Asset Link&lt;/a&gt;
verification.&lt;/li&gt;
&lt;li&gt;Created a launcher icon.&lt;/li&gt;
&lt;li&gt;Created a custom splash screen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And here&#39;s the result:&lt;/p&gt;
&lt;figure&gt;
  &lt;video controls=&quot;&quot; autoplay=&quot;&quot; loop=&quot;&quot; muted=&quot;&quot;&gt;
    &lt;source src=&quot;https://storage.googleapis.com/web-dev-assets/oyo-case-study/oyo-lite.webm&quot; type=&quot;video/webm; codecs=vp8&quot; /&gt;
    &lt;source src=&quot;https://storage.googleapis.com/web-dev-assets/oyo-case-study/oyo-lite.mp4&quot; type=&quot;video/mp4; codecs=h264&quot; /&gt;
  &lt;/video&gt;
 &lt;figcaption&gt;
    OYO Lite in action.
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For a more detailed walkthrough of building a basic TWA,
check out Peter McLachlan and Andre Bandarra&#39;s
&lt;a href=&quot;https://youtu.be/6lHBw3F4cWs&quot; rel=&quot;noopener&quot;&gt;TWA talk from Google I/O 2019&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To learn more about how the OYO team created OYO Lite—including
a deep dive into their approach for creating a splash screen
that&#39;s accessible to all Android users—take a look at Ankit Jain&#39;s
&lt;a href=&quot;https://medium.com/@ankitjainaj/3dd327d7afc5&quot; rel=&quot;noopener&quot;&gt;post on Medium&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;how-a-twa-helped-oyo-meet-the-needs-of-its-users&quot;&gt;How a TWA helped OYO meet the needs of its users &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/oyo-lite-twa/#how-a-twa-helped-oyo-meet-the-needs-of-its-users&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;By storing most of their app assets in Chrome&#39;s cache,
the OYO team was able to get the initial download size
for OYO Lite down to a svelte 850 KB.
That&#39;s just 7% the size of their Android app!&lt;/p&gt;
&lt;p&gt;That small footprint combined with the amenities of an Android app
downloadable from the Google Play Store led to significant gains
in user engagement:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A conversion rate three times higher than the PWA&#39;s rate&lt;/li&gt;
&lt;li&gt;Three times more logged-in users than the PWA, on average&lt;/li&gt;
&lt;li&gt;A 4.1 rating on the Google Play Store&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And aside from the user-facing benefits,
going with a TWA meant the team had only one codebase,
which they could easily update without having to wait
for users to download the latest version of the app.&lt;/p&gt;
&lt;h2 id=&quot;build-your-own-twa&quot;&gt;Build your own TWA &lt;a class=&quot;headline-link&quot; href=&quot;https://web.dev/oyo-lite-twa/#build-your-own-twa&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;OYO&#39;s online reservation platform is only one use case for TWAs.
They can be a great fit for many projects currently built as platform-specific apps or web pages,
from shopping carts and checkout flows to FAQs and contact forms.&lt;/p&gt;
&lt;p&gt;Check out these links to get started with TWAs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.chrome.com/docs/android/trusted-web-activity/&quot; rel=&quot;noopener&quot;&gt;Using Trusted Web Activities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/6lHBw3F4cWs&quot; rel=&quot;noopener&quot;&gt;Taking Chrome Full Screen with Trusted Web Activities (YouTube)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/@ankitjainaj/3dd327d7afc5&quot; rel=&quot;noopener&quot;&gt;A complete guide to Trusted Web Activity (TWA): OYO case study&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    <author>
      <name>Ankit Jain</name>
    </author><author>
      <name>Michael Friesenhahn</name>
    </author>
  </entry>
</feed>
