about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-03-13 20:34:01 -0500
committerPaul Frazee <pfrazee@gmail.com>2023-03-13 20:34:01 -0500
commit6533d7dd084ad8cdd479a0d9b416f94c809d96e1 (patch)
tree65eb1a3b71b3fa1ed79e5ca7f03715215ad1c629
parent56cf890debeb9872f791ccb992a5587f2c05fd9e (diff)
downloadvoidsky-6533d7dd084ad8cdd479a0d9b416f94c809d96e1.tar.zst
Add /support and /support/privacy
-rw-r--r--ios/Podfile.lock4
-rw-r--r--package.json2
-rw-r--r--src/Navigation.tsx4
-rw-r--r--src/lib/routes/types.ts2
-rw-r--r--src/locale/en/privacy-policy.tsx608
-rw-r--r--src/routes.ts2
-rw-r--r--src/view/com/util/Html.tsx133
-rw-r--r--src/view/com/util/Link.tsx4
-rw-r--r--src/view/com/util/Views.web.tsx2
-rw-r--r--src/view/screens/PrivacyPolicy.tsx38
-rw-r--r--src/view/screens/Support.tsx44
-rw-r--r--src/view/shell/desktop/RightNav.tsx24
-rw-r--r--yarn.lock8
13 files changed, 859 insertions, 16 deletions
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index dcfef41b0..d6d28c5e2 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -401,7 +401,7 @@ PODS:
     - React-Core
   - react-native-version-number (0.3.6):
     - React
-  - react-native-webview (11.26.0):
+  - react-native-webview (11.26.1):
     - React-Core
   - React-perflogger (0.71.3)
   - React-RCTActionSheet (0.71.3):
@@ -869,7 +869,7 @@ SPEC CHECKSUMS:
   react-native-safe-area-context: 39c2d8be3328df5d437ac1700f4f3a4f75716acc
   react-native-splash-screen: 4312f786b13a81b5169ef346d76d33bc0c6dc457
   react-native-version-number: b415bbec6a13f2df62bf978e85bc0d699462f37f
-  react-native-webview: 994b9f8fbb504d6314dc40d83f94f27c6831b3bf
+  react-native-webview: 9f111dfbcfc826084d6c507f569e5e03342ee1c1
   React-perflogger: af8a3d31546077f42d729b949925cc4549f14def
   React-RCTActionSheet: 57cc5adfefbaaf0aae2cf7e10bccd746f2903673
   React-RCTAnimation: 11c61e94da700c4dc915cf134513764d87fc5e2b
diff --git a/package.json b/package.json
index 50a9e6129..41f251921 100644
--- a/package.json
+++ b/package.json
@@ -102,7 +102,7 @@
     "react-native-web": "^0.18.11",
     "react-native-web-linear-gradient": "^1.1.2",
     "react-native-web-webview": "^1.0.2",
-    "react-native-webview": "11.26.0",
+    "react-native-webview": "^11.26.1",
     "react-native-youtube-iframe": "^2.2.2",
     "rn-fetch-blob": "^0.12.0",
     "tippy.js": "^6.3.7",
diff --git a/src/Navigation.tsx b/src/Navigation.tsx
index 22d8d8b21..2bfc84ea9 100644
--- a/src/Navigation.tsx
+++ b/src/Navigation.tsx
@@ -35,6 +35,8 @@ import {PostUpvotedByScreen} from './view/screens/PostUpvotedBy'
 import {PostRepostedByScreen} from './view/screens/PostRepostedBy'
 import {DebugScreen} from './view/screens/Debug'
 import {LogScreen} from './view/screens/Log'
+import {SupportScreen} from './view/screens/Support'
+import {PrivacyPolicyScreen} from './view/screens/PrivacyPolicy'
 
 const navigationRef = createNavigationContainerRef<AllNavigatorParams>()
 
@@ -64,6 +66,8 @@ function commonScreens(Stack: typeof HomeTab) {
       <Stack.Screen name="PostRepostedBy" component={PostRepostedByScreen} />
       <Stack.Screen name="Debug" component={DebugScreen} />
       <Stack.Screen name="Log" component={LogScreen} />
+      <Stack.Screen name="Support" component={SupportScreen} />
+      <Stack.Screen name="PrivacyPolicy" component={PrivacyPolicyScreen} />
     </>
   )
 }
diff --git a/src/lib/routes/types.ts b/src/lib/routes/types.ts
index e339a46bf..9ec623970 100644
--- a/src/lib/routes/types.ts
+++ b/src/lib/routes/types.ts
@@ -14,6 +14,8 @@ export type CommonNavigatorParams = {
   PostRepostedBy: {name: string; rkey: string}
   Debug: undefined
   Log: undefined
+  Support: undefined
+  PrivacyPolicy: undefined
 }
 
 export type HomeTabNavigatorParams = CommonNavigatorParams & {
diff --git a/src/locale/en/privacy-policy.tsx b/src/locale/en/privacy-policy.tsx
new file mode 100644
index 000000000..02124ff0d
--- /dev/null
+++ b/src/locale/en/privacy-policy.tsx
@@ -0,0 +1,608 @@
+import React from 'react'
+import {H2, H4, P, UL, LI, A} from 'view/com/util/Html'
+
+export default function () {
+  return (
+    <>
+      <H4>Last Updated:&nbsp;2023/02/02</H4>
+      <P>
+        This Privacy Policy is designed to help you understand how Bluesky,
+        PBLLC d.b.a. Bluesky (“Bluesky,” &nbsp;“we,” “us,” or&nbsp;“our”)
+        collects, uses, processes, and shares your personal information, and to
+        help you understand and exercise your privacy rights.{' '}
+      </P>
+      <P>1. SCOPE AND UPDATES TO THIS PRIVACY POLICY</P>
+      <P>2. PERSONAL INFORMATION WE COLLECT</P>
+      <P>3. HOW WE USE YOUR PERSONAL INFORMATION</P>
+      <P>4. HOW WE DISCLOSE YOUR PERSONAL INFORMATION</P>
+      <P>5. YOUR PRIVACY CHOICES AND RIGHTS</P>
+      <P>6. SECURITY OF YOUR INFORMATION</P>
+      <P>7. INTERNATIONAL DATA TRANSFERS</P>
+      <P>8. RETENTION OF PERSONAL INFORMATION</P>
+      <P>9. SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS</P>
+      <P>10. CHILDREN&rsquo;S INFORMATION</P>
+      <P>11. OTHER PROVISIONS</P>
+      <P>12. CONTACT US</P>
+
+      <H2>1. SCOPE AND UPDATES TO THIS PRIVACY POLICY</H2>
+      <P>
+        This Privacy Policy applies to personal information processed by us,
+        including on our websites, mobile applications, and other online or
+        offline offerings. To make this Privacy Policy easier to read, our
+        websites, mobile applications, and other offerings are collectively
+        called the “Services.”
+      </P>
+      <P>
+        Changes to our Privacy Policy. We may revise this Privacy Policy from
+        time to time in our sole discretion. If there are any material changes
+        to this Privacy Policy, we will notify you as required by applicable
+        law. You understand and agree that you will be deemed to have accepted
+        the updated Privacy Policy if you continue to use our Services after the
+        new Privacy Policy takes effect.
+      </P>
+      <H2>2. PERSONAL INFORMATION WE COLLECT</H2>
+      <P>
+        The categories of personal information we collect depend on how you
+        interact with us, our Services, and the requirements of applicable law.
+        We collect information that you provide to us, information we obtain
+        automatically when you use our Services, and information from other
+        sources such as third-party services and organizations, as described
+        below.
+      </P>
+      <H4>1. Personal Information You Provide to Us Directly</H4>
+      <P>We may collect personal information that you provide to us.</P>
+      <UL>
+        <LI>
+          Account Creation. We may collect personal information when you create
+          an account with us, such as a username and password.
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          Your Communications with Us. We may collect personal information, such
+          as email address, phone number, or full name when you request
+          information about our Services, request customer or technical support,
+          or otherwise communicate with us.
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          Interactive Features. We and others who use our Services may collect
+          personal information that you submit or make available through our
+          interactive features (e.g., messaging and chat features, commenting
+          functionalities, forums, blogs, and social media pages). Any
+          information you provide using the public sharing features of the
+          Services will be considered “public,” unless otherwise required by
+          applicable law, and is not subject to the privacy protections
+          referenced herein. Please exercise caution before revealing any
+          information that may identify you in the real world to other users.
+        </LI>
+      </UL>
+      <H4>2. Personal Information Collected Automatically</H4>
+      <P>
+        We may collect personal information automatically when you use our
+        Services.
+      </P>
+      <UL>
+        <LI>
+          Automatic Collection of Personal Information. We may collect certain
+          information automatically when you use our Services, such as your
+          Internet protocol (IP) address, user settings, cookie identifiers,
+          mobile carrier, mobile advertising and other unique identifiers,
+          browser or device information, and Internet service provide. We may
+          also automatically collect information regarding your use of our
+          Services, such as pages that you visit before, during and after using
+          our Services, information about the links you click, the types of
+          content you interact with, the frequency and duration of your
+          activities, and other information about how you use our Services.
+        </LI>
+        <UL>
+          <LI>
+            Crash Reports. If you provide crash reports, we may collect personal
+            information related to such crash reports, including detailed
+            diagnostic information about your device and the activities that led
+            to the crash.
+          </LI>
+        </UL>
+      </UL>
+      <UL>
+        <LI>
+          Cookie Policy (and Other Technologies).&nbsp;We, as well as third
+          parties that provide content, or other functionality on our Services,
+          may use cookies, pixel tags, and other technologies (“Technologies”)
+          to automatically collect information through your use of our Services.
+        </LI>
+        <UL>
+          <LI>
+            Cookies. Cookies are small text files placed in device browsers that
+            store preferences and facilitate and enhance your experience.
+          </LI>
+        </UL>
+        <UL>
+          <LI>
+            Pixel Tags/Web Beacons. A pixel tag (also known as a web beacon) is
+            a piece of code embedded in our Services that collects information
+            about engagement on our Services. The use of a pixel tag allows us
+            to record, for example, that a user has visited a particular web
+            page or clicked on a particular advertisement. We may also include
+            web beacons in e-mails to understand whether messages have been
+            opened, acted on, or forwarded.
+          </LI>
+        </UL>
+      </UL>
+      <P>
+        Our uses of these Technologies fall into the following general
+        categories:
+      </P>
+      <UL>
+        <LI>
+          Operationally Necessary. This includes Technologies that allow you
+          access to our Services, applications, and tools that are required to
+          identify irregular website behavior, prevent fraudulent activity,
+          improve security, or allow you to make use of our functionality;
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          Performance-Related. We may use Technologies to assess the performance
+          of our Services, including as part of our analytic practices to help
+          us understand how individuals use our Services (see Analytics below);
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          Functionality-Related. We may use Technologies that allow us to offer
+          you enhanced functionality when accessing or using our Services. This
+          may include identifying you when you sign into our Services or keeping
+          track of your specified preferences, interests, or past items viewed;
+        </LI>
+      </UL>
+      <P>
+        See “Your Privacy Choices and Rights” below to understand your choices
+        regarding these Technologies.
+      </P>
+      <UL>
+        <LI>
+          Analytics. We may use Technologies and other third-party tools to
+          process analytics information on our Services. These Technologies
+          allow us to better understand how our digital Services are used and to
+          continually improve and personalize our Services. Some of our
+          analytics partners include:
+        </LI>
+        <UL>
+          <LI>
+            Segment.io. We use Segment&apos;s event tracking services to
+            aggregate, archive, and distribute website and application usage
+            information. For more information about how Segment uses your
+            personal information, please visit{' '}
+            <A href="https://www.twilio.com/legal/privacy">
+              https://www.twilio.com/legal/privacy
+            </A>
+            .
+          </LI>
+          <LI>
+            Mixpanel. We use Mixpanel&apos;s analytics and event tracking
+            services to record and analyze website and application usage. For
+            more information about how Mixpanel uses your personal information,
+            please visit{' '}
+            <A href="https://mixpanel.com/legal/privacy-policy">
+              https://mixpanel.com/legal/privacy-policy
+            </A>
+            .
+          </LI>
+          <LI>
+            DataDog. We use DataDog&apos;s monitoring, tracing, and logging
+            services to record application and server metrics, logs, and related
+            debugging information. For more information about how DataDog uses
+            your personal information, please visit{' '}
+            <A href="https://www.datadoghq.com/legal/privacy/">
+              https://www.datadoghq.com/legal/privacy/
+            </A>
+            .
+          </LI>
+        </UL>
+      </UL>
+      <UL>
+        <LI>
+          Social Media Platforms. Our Services may contain&nbsp;social media
+          buttons, such as Twitter, GitHub, Matrix, which might include widgets
+          such as the “share this” button or other interactive mini programs).
+          These features may collect personal information such as your IP
+          address and which page you are visiting on our Services, and may set a
+          cookie to enable the feature to function properly. Your interactions
+          with these platforms are governed by the privacy policy of the company
+          providing it.
+        </LI>
+      </UL>
+      <H4>3. Personal Information Collected from Other Sources</H4>
+      <P>
+        Third-Party Services and Sources. We may obtain personal information
+        about you from other sources, including through third-party services and
+        organizations. &nbsp;For example, if you access our Services through a
+        third-party application, such as an app store, a third-party login
+        service, or a social networking site, we may collect personal
+        information about you from that third-party application that you have
+        made available via your privacy settings.
+      </P>
+      <P>
+        Referrals and Sharing Features.&nbsp;Our Services may offer various
+        tools and functionalities that allow you to provide personal information
+        about your friends through our referral service. Third parties may also
+        use the Services to upload personal information about you, including
+        when they tag you. Our referral services may also allow you to forward
+        or share certain content with a friend or colleague, such as an email
+        inviting your friend to use our Services. Please only share with us
+        contact information of people with whom you have a relationship (e.g.,
+        relative, friend, neighbor, or co-worker).
+      </P>
+      <H2>3. HOW WE USE YOUR PERSONAL INFORMATION</H2>
+      <P>
+        We use your personal information for a variety of business purposes,
+        including to provide our Services, for administrative purposes, and to
+        market our products and Services, as described below.
+      </P>
+      <H4>1. Provide Our Services</H4>
+      <P>
+        We use your information to fulfill our contract with you and provide you
+        with our Services, such as:
+      </P>
+      <UL>
+        <LI>Managing your information and accounts;</LI>
+        <LI>
+          Providing access to certain areas, functionalities, and features of
+          our Services;
+        </LI>
+        <LI>Answering requests for customer or technical support;</LI>
+        <LI>
+          Communicating with you about your account, activities on our Services,
+          and policy changes;
+        </LI>
+        <LI>
+          Processing your financial information and other payment methods for
+          products or Services purchased;
+        </LI>
+        <LI>Allowing you to register for events.</LI>
+      </UL>
+      <H4>2. Administrative Purposes</H4>
+      <P>
+        We use your information for various administrative purposes, such as:
+      </P>
+      <UL>
+        <LI>
+          Pursuing our legitimate interests such as direct marketing, research
+          and development (including marketing research), network and
+          information security, and fraud prevention;
+        </LI>
+        <LI>
+          Detecting security incidents, protecting against malicious, deceptive,
+          fraudulent or illegal activity, and prosecuting those responsible for
+          that activity;
+        </LI>
+        <LI>Measuring interest and engagement in our Services;</LI>
+        <LI>
+          Short-term, transient use, such as contextual customization of ads;
+        </LI>
+        <LI>Improving, upgrading, or enhancing our Services;</LI>
+        <LI>Developing new products and services;</LI>
+        <LI>Ensuring internal quality control and safety;</LI>
+      </UL>
+      <UL>
+        <LI>
+          Authenticating and verifying individual identities, including requests
+          to exercise your rights under this Privacy Policy;
+        </LI>
+        <LI>Debugging to identify and repair errors with our Services;</LI>
+        <LI>
+          Auditing relating to interactions, transactions, and other compliance
+          activities;
+        </LI>
+        <LI>
+          Sharing personal information with third parties as needed to provide
+          the Services;
+        </LI>
+        <LI>Enforcing our agreements and policies; and</LI>
+        <LI>
+          Carrying out activities that are required to comply with our legal
+          obligations.
+        </LI>
+      </UL>
+      <H4>3. With Your Consent</H4>
+      <P>
+        We may use personal information for other purposes that are clearly
+        disclosed to you at the time you provide personal information or with
+        your consent.
+      </P>
+      <H4>4. Other Purposes</H4>
+      <P>
+        We also use your personal information for other purposes as requested by
+        you or as permitted by applicable law.
+      </P>
+      <UL>
+        <LI>
+          De-identified and Aggregated Information. We may use personal
+          information to create de-identified and/or aggregated information,
+          such as demographic information, information about the device from
+          which you access our Services, or other analyses we create.{' '}
+        </LI>
+      </UL>
+      <H2>4. HOW WE DISCLOSE YOUR PERSONAL INFORMATION</H2>
+      <P>
+        We disclose your personal information to third parties for a variety of
+        business purposes, including to provide our Services, to protect us or
+        others, or in the event of a major business transaction such as a
+        merger, sale, or asset transfer, as described below.
+      </P>
+      <H4>1. Disclosures to Provide our Services</H4>
+      <P>
+        The categories of third parties with whom we may share your personal
+        information are described below.
+      </P>
+      <UL>
+        <LI>
+          Service Providers. We may share your personal information with our
+          third-party service providers and vendors that assist us with the
+          provision of our Services. This includes service providers and vendors
+          that provide us with IT support, hosting, payment processing, customer
+          service, and related services.
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          Business Partners. We may share your personal information with
+          business partners to provide you with a product or service you have
+          requested. We may also share your personal information with business
+          partners with whom we jointly offer products or services.
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          Other Users or Third Parties You Share or Interact With. As described
+          above in “Personal Information We Collect,” our Services may allow you
+          to share personal information or interact with other users and third
+          parties (including individuals and third parties who do not use our
+          Services and the general public).
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          APIs/SDKs. We may use third-party application program interfaces
+          (“APIs”) and software development kits (“SDKs”) as part of the
+          functionality of our Services. For more information about our use of
+          APIs and SDKs, please contact us as set forth in “ Contact
+          Us”&nbsp;below.
+        </LI>
+      </UL>
+      <H4>2. Disclosures to Protect Us or Others</H4>
+      <P>
+        We may access, preserve, and disclose any information we store
+        associated with you to external parties if we, in good faith, believe
+        doing so is required or appropriate to: comply with law enforcement or
+        national security requests and legal process, such as a court order or
+        subpoena; protect your, our, or others&rsquo; rights, property, or
+        safety; enforce our policies or contracts; collect amounts owed to us;
+        or assist with an investigation or prosecution of suspected or actual
+        illegal activity.
+      </P>
+      <H4>
+        3. Disclosure in the Event of Merger, Sale, or Other Asset Transfers
+      </H4>
+      <P>
+        If we are involved in a merger, acquisition, financing due diligence,
+        reorganization, bankruptcy, receivership, purchase or sale of assets, or
+        transition of service to another provider, your information may be sold
+        or transferred as part of such a transaction, as permitted by law and/or
+        contract.
+      </P>
+      <H2>5. YOUR PRIVACY CHOICES AND RIGHTS</H2>
+      <P>
+        Your Privacy Choices. The privacy choices you may have about your
+        personal information are determined by applicable law and are described
+        below.
+      </P>
+      <UL>
+        <LI>
+          Email Communications. If you receive an unwanted email from us, you
+          can use the unsubscribe link found at the bottom of the email to opt
+          out of receiving future emails. Note that you will continue to receive
+          transaction-related emails regarding products or Services you have
+          requested. We may also send you certain non-promotional communications
+          regarding us and our Services, and you will not be able to opt out of
+          those communications (e.g., communications regarding our Services or
+          updates to our Terms or this Privacy Policy).
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          Mobile Devices. We may send you push notifications through our mobile
+          application. You may opt out from receiving these push notifications
+          by changing the settings on your mobile device. With your consent, we
+          may also collect precise location-based information via our mobile
+          application. You may opt out of this collection by changing the
+          settings on your mobile device.
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          “Do Not Track.”&nbsp;Do Not Track (“DNT”) is a privacy preference that
+          users can set in certain web browsers. Please note that we do not
+          respond to or honor DNT signals or similar mechanisms transmitted by
+          web browsers.
+        </LI>
+      </UL>
+      <P>
+        Your Privacy Rights. In accordance with applicable law, you may have the
+        right to:
+      </P>
+      <UL>
+        <LI>
+          Access to and Portability of Your Personal Information, including: (i)
+          confirming whether we are processing your personal information; (ii)
+          obtaining access to or a copy of your personal information; and (iii)
+          receiving an electronic copy of personal information that you have
+          provided to us, or asking us to send that information to another
+          company in a structured, commonly used, and machine readable format
+          (also known as the “right of data portability”);
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          Request Correction of your personal information where it is inaccurate
+          or incomplete. In some cases, we may provide self-service tools that
+          enable you to update your personal information;
+        </LI>
+      </UL>
+      <UL>
+        <LI>Request Deletion of your personal information;</LI>
+      </UL>
+      <UL>
+        <LI>
+          Request Restriction of or Object to our&nbsp;processing of your
+          personal information where the processing of your personal information
+          is based on our legitimate interest or for direct marketing purposes;
+          and
+        </LI>
+      </UL>
+      <UL>
+        <LI>
+          Withdraw your Consent&nbsp;to our processing of your personal
+          information. Please note that your withdrawal will only take effect
+          for future processing, and will not affect the lawfulness of
+          processing before the withdrawal.
+        </LI>
+      </UL>
+      <P>
+        If you would like to exercise any of these rights, please contact us as
+        set forth in “Contact Us”&nbsp;below. We will process such requests in
+        accordance with applicable laws.
+      </P>
+      <H2>6. SECURITY OF YOUR INFORMATION</H2>
+      <P>
+        We take steps to ensure that your information is treated securely and in
+        accordance with this Privacy Policy.&nbsp;Unfortunately, no system is
+        100% secure, and we cannot ensure or warrant the security of any
+        information you provide to us. To the fullest extent permitted by
+        applicable law, we do not accept liability for unauthorized access, use,
+        disclosure, or loss of personal information.
+      </P>
+      <P>
+        By using our Services or providing personal information to us, you agree
+        that we may communicate with you electronically regarding security,
+        privacy, and administrative issues relating to your use of our Services.
+        If we learn of a security system&rsquo;s breach, we may attempt to
+        notify you electronically by posting a notice on our Services, by mail,
+        or by sending an email to you.
+      </P>
+      <H2>7. INTERNATIONAL DATA TRANSFERS</H2>
+      <P>
+        All information processed by us may be transferred, processed, and
+        stored anywhere in the world, including, but not limited to, the United
+        States or other countries, which may have data protection laws that are
+        different from the laws where you live. We endeavor to safeguard your
+        information consistent with the requirements of applicable laws.
+      </P>
+      <P>
+        If we transfer personal information which originates in the European
+        Economic Area, Switzerland, and/or the United Kingdom to a country that
+        has not been found to provide an adequate level of protection under
+        applicable data protection laws, one of the safeguards we may use to
+        support such transfer is the{' '}
+        <A href="https://ec.europa.eu/info/law/law-topic/data-protection/international-dimension-data-protection/standard-contractual-clauses-scc/standard-contractual-clauses-international-transfers_en">
+          EU Standard Contractual Clauses
+        </A>
+        .
+      </P>
+      <P>
+        For more information about the safeguards we use for international
+        transfers of your personal information, please contact us as set forth
+        below.
+      </P>
+      <H2>8. RETENTION OF PERSONAL INFORMATION</H2>
+      <P>
+        We store the personal information we collect as described in this
+        Privacy Policy for as long as you use our Services, or as necessary to
+        fulfill the purpose(s) for which it was collected, provide our Services,
+        resolve disputes, establish legal defenses, conduct audits, pursue
+        legitimate business purposes, enforce our agreements, and comply with
+        applicable laws. &nbsp;
+      </P>
+      <H2>9. SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS</H2>
+      <P>
+        If you are a resident of Nevada, you have the right to opt-out of the
+        sale of certain personal information to third parties who intend to
+        license or sell that personal information. You can exercise this right
+        by contacting us at{' '}
+        <A href="mailto:support@bsky.app" title="support@bsky.app">
+          support@bsky.app
+        </A>{' '}
+        with the subject line “Nevada Do Not Sell Request” and providing us with
+        your name and the email address associated with your account. Please
+        note that we do not currently sell your personal information as sales
+        are defined in Nevada Revised Statutes Chapter 603A. If you have any
+        questions, please contact us as set forth in Contact Us below.
+      </P>
+      <H2>10. CHILDREN&rsquo;S INFORMATION</H2>
+      <P>
+        The Services are not directed to children under 13 (or other age as
+        required by local law), and we do not knowingly collect personal
+        information from children.
+      </P>
+      <P>
+        If you are a parent or guardian and believe your child has uploaded
+        personal information to our site without your consent, you may contact
+        us as described in “Contact Us” below. If we become aware that a child
+        has provided us with personal information in violation of applicable
+        law, we will delete any personal information we have collected, unless
+        we have a legal obligation to keep it, and terminate the child&rsquo;s
+        account.
+      </P>
+      <H2>11. OTHER PROVISIONS</H2>
+      <P>
+        Third-Party Websites/Applications. The Services may contain links to
+        other websites/applications and other websites/applications may
+        reference or link to our Services. These third-party services are not
+        controlled by us. We encourage our users to read the privacy policies of
+        each website and application with which they interact. We do not
+        endorse, screen, or approve, and are not responsible for, the privacy
+        practices or content of such other websites or applications. Providing
+        personal information to third-party websites or applications is at your
+        own risk.
+      </P>
+      <P>
+        Supervisory Authority.&nbsp;If your personal information is subject to
+        the applicable data protection laws of the European Economic Area,
+        Switzerland, or the United Kingdom, you have the right to lodge a
+        complaint with the competent supervisory authority or attorney general
+        if you believe our processing of your personal information violates
+        applicable law.
+      </P>
+      <UL>
+        <LI>
+          <A href="https://edpb.europa.eu/about-edpb/board/members_en">
+            EEA Data Protection Authorities (DPAs)
+          </A>
+        </LI>
+        <LI>
+          <A href="https://www.edoeb.admin.ch/edoeb/en/home/the-fdpic/contact.html">
+            Swiss Federal Data Protection and Information Commissioner (FDPIC)
+          </A>
+        </LI>
+        <LI>
+          <A href="https://ico.org.uk/global/contact-us/">
+            UK Information Commissioner&rsquo;s Office (ICO)
+          </A>
+        </LI>
+      </UL>
+      <H2>12. CONTACT US&nbsp;</H2>
+      <P>
+        Bluesky is the controller of the personal information we process under
+        this Privacy Policy.
+      </P>
+      <P>
+        If you have any questions about our privacy practices or this Privacy
+        Policy, or to exercise your rights as detailed in this Privacy Policy,
+        please contact us at:{' '}
+        <A href="mailto:support@bsky.app">support@bsky.app</A>
+      </P>
+    </>
+  )
+}
diff --git a/src/routes.ts b/src/routes.ts
index 5987177ef..6c02a7c50 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -13,4 +13,6 @@ export const router = new Router({
   PostRepostedBy: '/profile/:name/post/:rkey/reposted-by',
   Debug: '/sys/debug',
   Log: '/sys/log',
+  Support: '/support',
+  PrivacyPolicy: '/support/privacy',
 })
diff --git a/src/view/com/util/Html.tsx b/src/view/com/util/Html.tsx
new file mode 100644
index 000000000..245952e40
--- /dev/null
+++ b/src/view/com/util/Html.tsx
@@ -0,0 +1,133 @@
+import React from 'react'
+import {StyleSheet, View} from 'react-native'
+import {usePalette} from 'lib/hooks/usePalette'
+import {Text} from './text/Text'
+import {TextLink} from './Link'
+
+/**
+ * These utilities are used to define long documents in an html-like
+ * DSL. See for instance /locale/en/privacy-policy.tsx
+ */
+
+export function H1({children}: React.PropsWithChildren<{}>) {
+  const pal = usePalette('default')
+  return (
+    <Text type="title-xl" style={[pal.text, styles.h1]}>
+      {children}
+    </Text>
+  )
+}
+
+export function H2({children}: React.PropsWithChildren<{}>) {
+  const pal = usePalette('default')
+  return (
+    <Text type="title-lg" style={[pal.text, styles.h2]}>
+      {children}
+    </Text>
+  )
+}
+
+export function H3({children}: React.PropsWithChildren<{}>) {
+  const pal = usePalette('default')
+  return (
+    <Text type="title" style={[pal.text, styles.h3]}>
+      {children}
+    </Text>
+  )
+}
+
+export function H4({children}: React.PropsWithChildren<{}>) {
+  const pal = usePalette('default')
+  return (
+    <Text type="title-sm" style={[pal.text, styles.h4]}>
+      {children}
+    </Text>
+  )
+}
+
+export function P({children}: React.PropsWithChildren<{}>) {
+  const pal = usePalette('default')
+  return (
+    <Text type="md" style={[pal.text, styles.p]}>
+      {children}
+    </Text>
+  )
+}
+
+export function UL({children}: React.PropsWithChildren<{}>) {
+  return <View style={styles.ul}>{children}</View>
+}
+
+export function OL({children}: React.PropsWithChildren<{}>) {
+  return <View style={styles.ol}>{children}</View>
+}
+
+export function LI({
+  children,
+  value,
+}: React.PropsWithChildren<{value?: string}>) {
+  const pal = usePalette('default')
+  return (
+    <View style={styles.li}>
+      <Text style={[pal.text, styles.liBullet]}>{value || <>&bull;</>}</Text>
+      <Text type="md" style={[pal.text, styles.liText]}>
+        {children}
+      </Text>
+    </View>
+  )
+}
+
+export function A({children, href}: React.PropsWithChildren<{href: string}>) {
+  const pal = usePalette('default')
+  return (
+    <TextLink
+      type="md"
+      style={[pal.link, styles.a]}
+      text={children}
+      href={href}
+    />
+  )
+}
+
+const styles = StyleSheet.create({
+  h1: {
+    marginTop: 20,
+    marginBottom: 10,
+    letterSpacing: 0.8,
+  },
+  h2: {
+    marginTop: 20,
+    marginBottom: 10,
+    letterSpacing: 0.8,
+  },
+  h3: {
+    marginBottom: 10,
+  },
+  h4: {
+    marginBottom: 10,
+    fontWeight: 'bold',
+  },
+  p: {
+    marginBottom: 10,
+  },
+  ul: {
+    marginBottom: 10,
+    paddingLeft: 18,
+  },
+  ol: {
+    marginBottom: 10,
+    paddingLeft: 18,
+  },
+  li: {
+    flexDirection: 'row',
+    paddingRight: 10,
+    marginBottom: 10,
+  },
+  liBullet: {
+    paddingRight: 10,
+  },
+  liText: {},
+  a: {
+    marginBottom: 10,
+  },
+})
diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx
index cee4d4136..f356f0b09 100644
--- a/src/view/com/util/Link.tsx
+++ b/src/view/com/util/Link.tsx
@@ -89,7 +89,7 @@ export const TextLink = observer(function TextLink({
   type?: TypographyVariant
   style?: StyleProp<TextStyle>
   href: string
-  text: string | JSX.Element
+  text: string | JSX.Element | React.ReactNode
   numberOfLines?: number
   lineHeight?: number
 }) {
@@ -193,7 +193,7 @@ function onPressInner(
 
   if (shouldHandle) {
     href = convertBskyAppUrlIfNeeded(href)
-    if (href.startsWith('http')) {
+    if (href.startsWith('http') || href.startsWith('mailto')) {
       Linking.openURL(href)
     } else {
       store.shell.closeModal() // close any active modals
diff --git a/src/view/com/util/Views.web.tsx b/src/view/com/util/Views.web.tsx
index 9a43697b5..aa27d7f88 100644
--- a/src/view/com/util/Views.web.tsx
+++ b/src/view/com/util/Views.web.tsx
@@ -78,7 +78,7 @@ const styles = StyleSheet.create({
   },
   containerScroll: {
     width: '100%',
-    minHeight: '100vh',
+    maxHeight: '100vh',
     maxWidth: 600,
     marginLeft: 'auto',
     marginRight: 'auto',
diff --git a/src/view/screens/PrivacyPolicy.tsx b/src/view/screens/PrivacyPolicy.tsx
new file mode 100644
index 000000000..d5476ab52
--- /dev/null
+++ b/src/view/screens/PrivacyPolicy.tsx
@@ -0,0 +1,38 @@
+import React from 'react'
+import {View} from 'react-native'
+import {useFocusEffect} from '@react-navigation/native'
+import {NativeStackScreenProps, CommonNavigatorParams} from 'lib/routes/types'
+import {ViewHeader} from '../com/util/ViewHeader'
+import {useStores} from 'state/index'
+import {ScrollView} from 'view/com/util/Views'
+import {Text} from 'view/com/util/text/Text'
+import {usePalette} from 'lib/hooks/usePalette'
+import {s} from 'lib/styles'
+import PrivacyPolicyHtml from '../../locale/en/privacy-policy'
+
+type Props = NativeStackScreenProps<CommonNavigatorParams, 'PrivacyPolicy'>
+export const PrivacyPolicyScreen = (_props: Props) => {
+  const pal = usePalette('default')
+  const store = useStores()
+
+  useFocusEffect(
+    React.useCallback(() => {
+      store.shell.setMinimalShellMode(false)
+    }, [store]),
+  )
+
+  return (
+    <View>
+      <ViewHeader title="Privacy Policy" />
+      <ScrollView style={[s.hContentRegion, pal.view]}>
+        <View style={[s.p20]}>
+          <Text type="title-xl" style={[pal.text, s.pb20]}>
+            Privacy Policy
+          </Text>
+          <PrivacyPolicyHtml />
+        </View>
+        <View style={s.footerSpacer} />
+      </ScrollView>
+    </View>
+  )
+}
diff --git a/src/view/screens/Support.tsx b/src/view/screens/Support.tsx
new file mode 100644
index 000000000..de1b38b84
--- /dev/null
+++ b/src/view/screens/Support.tsx
@@ -0,0 +1,44 @@
+import React from 'react'
+import {View} from 'react-native'
+import {useFocusEffect} from '@react-navigation/native'
+import {NativeStackScreenProps, CommonNavigatorParams} from 'lib/routes/types'
+import {ViewHeader} from '../com/util/ViewHeader'
+import {useStores} from 'state/index'
+import {Text} from 'view/com/util/text/Text'
+import {TextLink} from 'view/com/util/Link'
+import {CenteredView} from 'view/com/util/Views'
+import {usePalette} from 'lib/hooks/usePalette'
+import {s} from 'lib/styles'
+
+type Props = NativeStackScreenProps<CommonNavigatorParams, 'Support'>
+export const SupportScreen = (_props: Props) => {
+  const store = useStores()
+  const pal = usePalette('default')
+
+  useFocusEffect(
+    React.useCallback(() => {
+      store.shell.setMinimalShellMode(false)
+    }, [store]),
+  )
+
+  return (
+    <View>
+      <ViewHeader title="Support" />
+      <CenteredView>
+        <Text type="title-xl" style={[pal.text, s.p20, s.pb5]}>
+          Support
+        </Text>
+        <Text style={[pal.text, s.p20]}>
+          If you need help, email us at{' '}
+          <TextLink
+            href="mailto:support@bsky.app"
+            text="support@bsky.app"
+            style={pal.link}
+          />{' '}
+          with a description of your issue and information about how we can help
+          you.
+        </Text>
+      </CenteredView>
+    </View>
+  )
+}
diff --git a/src/view/shell/desktop/RightNav.tsx b/src/view/shell/desktop/RightNav.tsx
index a196951af..58fb31392 100644
--- a/src/view/shell/desktop/RightNav.tsx
+++ b/src/view/shell/desktop/RightNav.tsx
@@ -6,6 +6,7 @@ import {DesktopSearch} from './Search'
 import {Text} from 'view/com/util/text/Text'
 import {TextLink} from 'view/com/util/Link'
 import {FEEDBACK_FORM_URL} from 'lib/constants'
+import {s} from 'lib/styles'
 
 export const DesktopRightNav = observer(function DesktopRightNav() {
   const pal = usePalette('default')
@@ -17,12 +18,23 @@ export const DesktopRightNav = observer(function DesktopRightNav() {
           Welcome to Bluesky! This is a beta application that's still in
           development.
         </Text>
-        <TextLink
-          type="md"
-          style={pal.link}
-          href={FEEDBACK_FORM_URL}
-          text="Send feedback"
-        />
+        <View style={[s.flexRow]}>
+          <TextLink
+            type="md"
+            style={pal.link}
+            href={FEEDBACK_FORM_URL}
+            text="Send feedback"
+          />
+          <Text type="md" style={pal.textLight}>
+            &nbsp;&middot;&nbsp;
+          </Text>
+          <TextLink
+            type="md"
+            style={pal.link}
+            href="/support/privacy"
+            text="Privacy Policy"
+          />
+        </View>
       </View>
     </View>
   )
diff --git a/yarn.lock b/yarn.lock
index 2c94091d5..c9032b71a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -13710,10 +13710,10 @@ react-native-web@^0.18.11:
     postcss-value-parser "^4.2.0"
     styleq "^0.1.2"
 
-react-native-webview@11.26.0:
-  version "11.26.0"
-  resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.0.tgz#e524992876fe4a79e69905f0fab8949b470e9f16"
-  integrity sha512-4T4CKRm8xlaQDz9h/bCMPGAvtkesrhkRWqCX9FDJEzBToaVUIsV0ZOqtC4w/JSnCtFKKYiaC1ReJtCGv+4mFeQ==
+react-native-webview@^11.26.1:
+  version "11.26.1"
+  resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-11.26.1.tgz#658c09ed5162dc170b361e48c2dd26c9712879da"
+  integrity sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==
   dependencies:
     escape-string-regexp "2.0.0"
     invariant "2.2.4"