SlideShare ist ein Scribd-Unternehmen logo
1 von 50
THR2404
3
1
2
3
4
5
Journey to PWA
Building Twitter for Devices
Building Twitter for Windows
Challenges / Lessons
Thinking ahead
Agenda
4
Hatching a PWA
5
Section
Back in the day
~50% mobile engineers, 50% Desktop Engineers
Responsible for several code bases and Some(Scala)
4 test infrastructures spanning Ruby, Scala, and JS
~ 1 day to get new contributors running locally
Incremental compiles ~1min, clean builds ~30mins
2015 2016 2017 2018
Goal: Keep the site chugging
6
Section
Responsive Web
Setup time for a new engineer ~5 minutes
See changes in < 10 seconds
Consistent design with other Twitter properties
Modular components and organization
Uses same APIs as Android/iOS clients
2015 2016 2017 2018
Goal: Prototype + Launch something to replace Twitter Mobile, Logged In
7
Section
Progressive Web App (PWA)
100% “StarWeb” (get it? *Web)
Help create APIs that were previously desktop only
Flux —> Redux, reorganize code as we move from prototype to production
Leverage new Web APIs to create a rich, retentive experience
2015 2016 2017 2018
Goal: Create a full-featured, fast mobile Twitter experience
8
Section
Twitter PWA Launch - April ‘17
Faster
Universal availability
Lighter
2
<600 KB to add to home screen
Engaging
3
Push notifications, data saver,
explore tab
1
9
Section
Client strategy at Twitter
User: Common interface that makes Twitter feel familiar on any device. Over 60% of
our users on the PWA use Twitter on more than 1 client
Developer: Fewer surfaces to update, focus on what we are good at
2015 2016 2017 2018
Goal: deliver a feature rich, regularly updated experience
10
Section
No client left behind
Bookmarks came to the PWA first —
quicker to build and release from an
engineering perspective
Since our PWA has Bookmarks, so
does Twitter for Windows now!
11
Section
Reactions to PWA in the wild
12
Section
Make one app that provides a
progressively enhanced
experience to all users
13
Section
APPXs, APKs, and Kai, Oh My! (2018)
Goal: Extend the reach and impact of the PWA
Add to home screen + push notifications once installed help increase retention
Be the place users can share what's happening
How do you distribute a website? Basic perception issue of a PWA.
14
Section
APPXs, APKs, and Kai, Oh My! (2018)
Goal: Extend the reach and impact of the PWA
15
Section
APPXs, APKs, and Kai, Oh My! (2018)
Goal: Extend the reach and impact of the PWA
16
Section
WARNING:
Maybe try this at home
17
Section
For many people, a native app is
still the right experience
18
Building Twitter for all Devices
Body level two
Section
MOBILE
Building for Windows users
Over 70% of people who use Twitter on Windows are using it on a desktop
device
How do you make something work for well for both experiences?
Lightweight
Performant
Fast
Immersive
Complementary
Convenient
19
DESKTOP
20
Section
An app alone does not a PWA
make
21
Parameters of an App
Device
Data Accessibility
Layout
Modals / Dialogs
Navigation
Modality
Hover / press
Presentation of menus
Keyboard Supplements
Installed / Wrapped
Locality
Network conditions
Internationalization
RTL
A11Y
22
23
Parameters of an App
Device
Data Accessibility
Layout
Modals / Dialogs
Navigation
Modality
Hover / press
Presentation of menus
Keyboard Supplements
Installed / Wrapped
Locality
Network conditions
Internationalization
RTL
A11Y
Body level two
24
Section
Body level two
24
Parameters in Practice
• Flexible Layouts
• Master / Detail
• Sidebar Layout
• Modals
• Dropdowns vs Sheets
• Network cues for live engagements / video
streams / autoplay
• Dynamic bundling, getting the right experience to
the right user
• Enter to send DMs
• Keyboard shortcuts to Navigate
25
Sidebar Layout
26
Master Detail Layout
27
Modals
28
Modals
29
Dropdowns
30
Making a Modal
import ModalRoute from './components/ModalRoute';
<ModalRoute
component={MediaDetailScreen}
exact
key="mediadetail"
modalSize="maximized"
path="/:screenName/status/:statusId/:mediaType/:index"
/>
import { Route } from 'react-router-dom';
<Route
component={MediaDetailScreen}
exact
path="/:screenName/status/:statusId/:mediaType/:index"
/>
31
Building Twitter for
Windows 10
32
Section
Creating the Windows App
PWABuilder.com
Changed logos
Edited version info
Uploaded + Submitted
Integration testing
VirtualBox + VM, Charles Proxy to https://localhost (with hosts file change)
Dev Tools Preview Edition
Manually install/sideload to debug
33
Section
Windows Insiders Beta program
Why?
Learned about user expectations
Ability to communicate with users across countries and languages
Beta feedback (from Tweets, Feedback Hub, Reviews)
Paste Images into Compose
Share to Twitter
Night mode
Streaming / Refresh Timeline support
Screen reader support was good!
34
Section
Big-P PWA
Now that we’ve provided the basic features, we can focus on building integrated
experiences into Windows (or any other native platforms)
Current Windows APIs
PasswordVault
Share Integration
Notifications
Pinning
Jump Links
Store reviews / Feedback
Timeline
35
Section
Big-P PWA Examples
36
Share Integration
<Applications>
<Application Id="Twitter" StartPage="https://mobile.twitter.com/">
<Extensions>
<uap:Extension Category="windows.shareTarget">
<uap:ShareTarget>
<uap:SupportedFileTypes>
<uap:FileType>.jpg</uap:FileType>
<uap:FileType>.jpeg</uap:FileType>
<uap:FileType>.png</uap:FileType>
<uap:FileType>.gif</uap:FileType>
</uap:SupportedFileTypes>
<uap:DataFormat>Text</uap:DataFormat>
<uap:DataFormat>Bitmap</uap:DataFormat>
<uap:DataFormat>WebLink</uap:DataFormat>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
</Application>
</Applications>
appxmanifest.xml
37
Share Integration
init.js / Core Path
// This must not be deferred so that it can receive the initial 'activated' event in time
window.Windows.UI.WebUI.WebUIApplication.addEventListener(
'activated',
e =>
microsoftInterfaceLoader().then(microsoftInterface => {
microsoftInterface.handleActivatedEventFactory(e);
}),
false
);
// Without this, the app will first refresh to the start path before every activate event
window.MSApp.pageHandlesAllApplicationActivations(true);
38
Share Integration
microsoftInterface/handleActivatedEvent.js
1. Handle activated Event
2. Gather all data from share event
3. Do whatever we are doing (compose a tweet)
4. Callback to close the window / say we are done
39
Share Integration
1. Handle Activate event
export const handleActivatedEvent = e => {
const ActivationKind = window.Windows.ApplicationModel.Activation.ActivationKind;
if (e.kind === ActivationKind.shareTarget) {
return handleShareEvent(e);
} else {
// You might handle other types of launches here: notifications, tile taps, etc.
}
};
40
Share Integration
2. Gather all data from share event
const handleShareEventText = event => {
const StandardDataFormats = window.Windows.ApplicationModel.DataTransfer.StandardDataFormats;
const shareData = e.shareOperation.data;
const { title, description } = shareData.properties;
if (shareData.contains(StandardDataFormats.text)) {
shareData.getTextAsync().then(text => sendComposeStateAndSetReturn(
{
tweetText: `${title}n${description}n${text}`,
},
event
);
}
}
41
Share Integration
3. Do the thing
4. Callback to close the window / say we are done
const sendComposeStateAndSetReturn = (state, event) => {
browserHistory.push({
pathname: '/compose/tweet',
state
});
};
export const shareCompletedCallback = () => {
e.shareOperation.reportCompleted();
};
42
Section
Progressive doesn’t stop at Web
APIs; extends to native APIs as
well
43
Section
Future opportunities
MS API is massive, lots of cool opportunities
Pen to compose a tweet
Cortana voice commands
IoT Clicker to Tweet
Proximity detection to suggest event hashtags
Image Recognition to propose captions
...or to read uncaptioned images
2015 2016 2017 Beyond!2018
44
Section
Challenges
• Tradeoff of feature set
• We had to give up some features in the short-term to build a consistent
experience in the long-term
• Data saver, Bookmarks, Live Engagements + more that were on the PWA first
45
Section
Challenges
• Need a way to convey updates since we're not updating in the store
• Live Tile Updates + ServiceWorkers are hard
• Coordinated code launches can be tricky (e.g. jump / share)
• Requires feature gating things on the site
46
Takeaways
Right Tool
Make an app that suits
your team and business
Identify
Paramaters
Think of the user
experience as a
parameter into you app
Big-P PWAs
Create an awesome base
experience, and adapt to
as many params as you
can (including native)
47
Member name
Deck title
Member name
Member name Member name Member name
Deck title
X
Member name
Meet the rest of the team!
48
Questions
THR2404

Weitere ähnliche Inhalte

Was ist angesagt?

Maven in mulesoft
Maven in mulesoftMaven in mulesoft
Maven in mulesoftvenkata20k
 
Gui application for e mail application
Gui application for e mail applicationGui application for e mail application
Gui application for e mail applicationUmesh Mk
 
WebLogic Developer Experience and Java EE 6
WebLogic Developer Experience and Java EE 6WebLogic Developer Experience and Java EE 6
WebLogic Developer Experience and Java EE 6Jeffrey West
 
Indianapolis_meetup_April-1st-2022.pptx
Indianapolis_meetup_April-1st-2022.pptxIndianapolis_meetup_April-1st-2022.pptx
Indianapolis_meetup_April-1st-2022.pptxikram_ahamed
 
Continuous Integration With Jenkins
Continuous Integration With JenkinsContinuous Integration With Jenkins
Continuous Integration With JenkinsEdureka!
 
Build using jenkins on rtc repository
Build using jenkins on rtc repositoryBuild using jenkins on rtc repository
Build using jenkins on rtc repositoryAnkit Vashistha
 
Eclipse plug in mylyn & tasktop
Eclipse plug in mylyn & tasktopEclipse plug in mylyn & tasktop
Eclipse plug in mylyn & tasktopRoger Xia
 
Cordova 3, apps para android
Cordova 3, apps para androidCordova 3, apps para android
Cordova 3, apps para androidDroidcon Spain
 
Highlights from microsoft ignite 2015
Highlights from microsoft ignite 2015Highlights from microsoft ignite 2015
Highlights from microsoft ignite 2015Kim Frehe
 
The 36th Chamber of Shaolin - Improve Your Microservices Kung Fu in 36 Easy S...
The 36th Chamber of Shaolin - Improve Your Microservices Kung Fu in 36 Easy S...The 36th Chamber of Shaolin - Improve Your Microservices Kung Fu in 36 Easy S...
The 36th Chamber of Shaolin - Improve Your Microservices Kung Fu in 36 Easy S...Stefan Richter
 
Real world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVMReal world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVMGill Cleeren
 
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Ajeet Singh Raina
 
Mulesoft KL Meetup 2
Mulesoft KL Meetup 2Mulesoft KL Meetup 2
Mulesoft KL Meetup 2NitushreeJena
 
Cimande 2.0 Quick Start english version
Cimande 2.0 Quick Start   english versionCimande 2.0 Quick Start   english version
Cimande 2.0 Quick Start english versionThe World Bank
 

Was ist angesagt? (20)

Maven in mulesoft
Maven in mulesoftMaven in mulesoft
Maven in mulesoft
 
Mule Integration with Atlassian JIRA
Mule Integration with Atlassian JIRAMule Integration with Atlassian JIRA
Mule Integration with Atlassian JIRA
 
Homestead demo
Homestead demoHomestead demo
Homestead demo
 
Gui application for e mail application
Gui application for e mail applicationGui application for e mail application
Gui application for e mail application
 
WebLogic Developer Experience and Java EE 6
WebLogic Developer Experience and Java EE 6WebLogic Developer Experience and Java EE 6
WebLogic Developer Experience and Java EE 6
 
Indianapolis_meetup_April-1st-2022.pptx
Indianapolis_meetup_April-1st-2022.pptxIndianapolis_meetup_April-1st-2022.pptx
Indianapolis_meetup_April-1st-2022.pptx
 
Continuous Integration With Jenkins
Continuous Integration With JenkinsContinuous Integration With Jenkins
Continuous Integration With Jenkins
 
C# with Renas
C# with RenasC# with Renas
C# with Renas
 
Build using jenkins on rtc repository
Build using jenkins on rtc repositoryBuild using jenkins on rtc repository
Build using jenkins on rtc repository
 
Eclipse plug in mylyn & tasktop
Eclipse plug in mylyn & tasktopEclipse plug in mylyn & tasktop
Eclipse plug in mylyn & tasktop
 
Cordova 3, apps para android
Cordova 3, apps para androidCordova 3, apps para android
Cordova 3, apps para android
 
Highlights from microsoft ignite 2015
Highlights from microsoft ignite 2015Highlights from microsoft ignite 2015
Highlights from microsoft ignite 2015
 
Android
Android Android
Android
 
Salesforce CLI
Salesforce CLISalesforce CLI
Salesforce CLI
 
The 36th Chamber of Shaolin - Improve Your Microservices Kung Fu in 36 Easy S...
The 36th Chamber of Shaolin - Improve Your Microservices Kung Fu in 36 Easy S...The 36th Chamber of Shaolin - Improve Your Microservices Kung Fu in 36 Easy S...
The 36th Chamber of Shaolin - Improve Your Microservices Kung Fu in 36 Easy S...
 
Real world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVMReal world apps with Xamarin and MVVM
Real world apps with Xamarin and MVVM
 
Meteor
MeteorMeteor
Meteor
 
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
Accelerate Your Automation Testing Effort using TestProject & Docker | Docker...
 
Mulesoft KL Meetup 2
Mulesoft KL Meetup 2Mulesoft KL Meetup 2
Mulesoft KL Meetup 2
 
Cimande 2.0 Quick Start english version
Cimande 2.0 Quick Start   english versionCimande 2.0 Quick Start   english version
Cimande 2.0 Quick Start english version
 

Ähnlich wie Modernizing Twitter for Windows as a Progressive Web App

Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan
 
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Rodolfo Finochietti
 
Latest_Edwin_Alberto_Arias_Espinoza
Latest_Edwin_Alberto_Arias_EspinozaLatest_Edwin_Alberto_Arias_Espinoza
Latest_Edwin_Alberto_Arias_EspinozaEdwin Espinoza
 
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)VMware Tanzu
 
2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with VoltaDaniel Fisher
 
Titanium Meetup Deck
Titanium Meetup DeckTitanium Meetup Deck
Titanium Meetup Decksschwarzhoff
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteorSapna Upreti
 
Electron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyElectron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyUlrich Krause
 
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptxNew features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptxMuralidharan Deenathayalan
 
Pinned sites in ie9 [beta]
Pinned sites in ie9 [beta]Pinned sites in ie9 [beta]
Pinned sites in ie9 [beta]Kirk Yamamoto
 
JavaScript on HP webOS: Enyo and Node.js
JavaScript on HP webOS: Enyo and Node.jsJavaScript on HP webOS: Enyo and Node.js
JavaScript on HP webOS: Enyo and Node.jsBen Combee
 
How to Synchronize ArcGIS Portal Items with FME
How to Synchronize ArcGIS Portal Items with FMEHow to Synchronize ArcGIS Portal Items with FME
How to Synchronize ArcGIS Portal Items with FMESafe Software
 
What Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 AppsWhat Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 AppsDoris Chen
 
What's new in Visual Studio for Mac for .NET Developers
What's new in Visual Studio for Mac for .NET DevelopersWhat's new in Visual Studio for Mac for .NET Developers
What's new in Visual Studio for Mac for .NET DevelopersJon Galloway
 
Azure for a Design and User Experience (DUX) teams
Azure for a Design and User Experience (DUX) teamsAzure for a Design and User Experience (DUX) teams
Azure for a Design and User Experience (DUX) teamsEmma Woods
 
Everything about flutter web development
Everything about flutter web developmentEverything about flutter web development
Everything about flutter web developmentKaty Slemon
 

Ähnlich wie Modernizing Twitter for Windows as a Progressive Web App (20)

Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
 
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
 
Latest_Edwin_Alberto_Arias_Espinoza
Latest_Edwin_Alberto_Arias_EspinozaLatest_Edwin_Alberto_Arias_Espinoza
Latest_Edwin_Alberto_Arias_Espinoza
 
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
Spring Boot & Spring Cloud on PAS- Nate Schutta (1/2)
 
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
JavaCro'14 - Building interactive web applications with Vaadin – Peter LehtoJavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
 
2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta2008 - TechDays PT: Building Software + Services with Volta
2008 - TechDays PT: Building Software + Services with Volta
 
Titanium Meetup Deck
Titanium Meetup DeckTitanium Meetup Deck
Titanium Meetup Deck
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteor
 
Electron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easyElectron - cross platform desktop applications made easy
Electron - cross platform desktop applications made easy
 
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptxNew features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
New features of Minimal APIs in .NET 7 -Muralidharan Deenathayalan.pptx
 
Pinned sites in ie9 [beta]
Pinned sites in ie9 [beta]Pinned sites in ie9 [beta]
Pinned sites in ie9 [beta]
 
JavaScript on HP webOS: Enyo and Node.js
JavaScript on HP webOS: Enyo and Node.jsJavaScript on HP webOS: Enyo and Node.js
JavaScript on HP webOS: Enyo and Node.js
 
How to Synchronize ArcGIS Portal Items with FME
How to Synchronize ArcGIS Portal Items with FMEHow to Synchronize ArcGIS Portal Items with FME
How to Synchronize ArcGIS Portal Items with FME
 
What Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 AppsWhat Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 Apps
 
What's new in Visual Studio for Mac for .NET Developers
What's new in Visual Studio for Mac for .NET DevelopersWhat's new in Visual Studio for Mac for .NET Developers
What's new in Visual Studio for Mac for .NET Developers
 
Xamarin microsoft graph
Xamarin microsoft graphXamarin microsoft graph
Xamarin microsoft graph
 
Azure for a Design and User Experience (DUX) teams
Azure for a Design and User Experience (DUX) teamsAzure for a Design and User Experience (DUX) teams
Azure for a Design and User Experience (DUX) teams
 
Windows 8 BootCamp
Windows 8 BootCampWindows 8 BootCamp
Windows 8 BootCamp
 
Everything about flutter web development
Everything about flutter web developmentEverything about flutter web development
Everything about flutter web development
 
Flutter for web
Flutter for webFlutter for web
Flutter for web
 

Mehr von Windows Developer

Our Fluent Path to Spatial Computing: Easy as 1-2D-3D
Our Fluent Path to Spatial Computing: Easy as 1-2D-3DOur Fluent Path to Spatial Computing: Easy as 1-2D-3D
Our Fluent Path to Spatial Computing: Easy as 1-2D-3DWindows Developer
 
Fluent Design System inside of Microsoft: Office
Fluent Design System inside of Microsoft: OfficeFluent Design System inside of Microsoft: Office
Fluent Design System inside of Microsoft: OfficeWindows Developer
 
Building powerful desktop and MR applications with new windowing apis
Building powerful desktop and MR applications with new windowing apisBuilding powerful desktop and MR applications with new windowing apis
Building powerful desktop and MR applications with new windowing apisWindows Developer
 
Creating Innovative Experiences for Fluent Design using the Visual Layer
Creating Innovative Experiences for Fluent Design using the Visual LayerCreating Innovative Experiences for Fluent Design using the Visual Layer
Creating Innovative Experiences for Fluent Design using the Visual LayerWindows Developer
 
Rapidly Construct LOB Applications with UWP and Visual Studio 2017
Rapidly Construct LOB Applications with UWP and Visual Studio 2017Rapidly Construct LOB Applications with UWP and Visual Studio 2017
Rapidly Construct LOB Applications with UWP and Visual Studio 2017Windows Developer
 
Modernizing Desktop Apps on Windows 10
Modernizing Desktop Apps on Windows 10Modernizing Desktop Apps on Windows 10
Modernizing Desktop Apps on Windows 10Windows Developer
 
How Simplygon helped Remix become platform independent
How Simplygon helped Remix become platform independentHow Simplygon helped Remix become platform independent
How Simplygon helped Remix become platform independentWindows Developer
 
Harnessing the Power of AI with Windows Ink
Harnessing the Power of AI with Windows InkHarnessing the Power of AI with Windows Ink
Harnessing the Power of AI with Windows InkWindows Developer
 
Technical deep dive into creating the “Solutions Showcase for Mixed Reality” ...
Technical deep dive into creating the “Solutions Showcase for Mixed Reality” ...Technical deep dive into creating the “Solutions Showcase for Mixed Reality” ...
Technical deep dive into creating the “Solutions Showcase for Mixed Reality” ...Windows Developer
 
Developing for Sets on Windows 10
Developing for Sets on Windows 10Developing for Sets on Windows 10
Developing for Sets on Windows 10Windows Developer
 
Data-Driven and User-Centric: Improving enterprise productivity and engagemen...
Data-Driven and User-Centric: Improving enterprise productivity and engagemen...Data-Driven and User-Centric: Improving enterprise productivity and engagemen...
Data-Driven and User-Centric: Improving enterprise productivity and engagemen...Windows Developer
 
Drive user reengagement across all your Windows, Android, and iOS with Micros...
Drive user reengagement across all your Windows, Android, and iOS with Micros...Drive user reengagement across all your Windows, Android, and iOS with Micros...
Drive user reengagement across all your Windows, Android, and iOS with Micros...Windows Developer
 
Fluent Design: Evolving our Design System
Fluent Design: Evolving our Design SystemFluent Design: Evolving our Design System
Fluent Design: Evolving our Design SystemWindows Developer
 
Seizing the Mixed Reality Revolution – A past, present and future Mixed Reali...
Seizing the Mixed Reality Revolution – A past, present and future Mixed Reali...Seizing the Mixed Reality Revolution – A past, present and future Mixed Reali...
Seizing the Mixed Reality Revolution – A past, present and future Mixed Reali...Windows Developer
 
Windows 10 on ARM for developers
Windows 10 on ARM for developersWindows 10 on ARM for developers
Windows 10 on ARM for developersWindows Developer
 
Building Mixed reality with the new capabilities in Unity
Building Mixed reality with the new capabilities in UnityBuilding Mixed reality with the new capabilities in Unity
Building Mixed reality with the new capabilities in UnityWindows Developer
 
Set up a windows dev environment that feels like $HOME
Set up a windows dev environment that feels like $HOMESet up a windows dev environment that feels like $HOME
Set up a windows dev environment that feels like $HOMEWindows Developer
 
Holograms for trade education, built for students, by students with Immersive...
Holograms for trade education, built for students, by students with Immersive...Holograms for trade education, built for students, by students with Immersive...
Holograms for trade education, built for students, by students with Immersive...Windows Developer
 
Designing Inclusive Experiences to Maximize Reach and Satisfaction
Designing Inclusive Experiences to Maximize Reach and Satisfaction Designing Inclusive Experiences to Maximize Reach and Satisfaction
Designing Inclusive Experiences to Maximize Reach and Satisfaction Windows Developer
 
Cboard: A Progressive Web App for Everyone
Cboard: A Progressive Web App for EveryoneCboard: A Progressive Web App for Everyone
Cboard: A Progressive Web App for EveryoneWindows Developer
 

Mehr von Windows Developer (20)

Our Fluent Path to Spatial Computing: Easy as 1-2D-3D
Our Fluent Path to Spatial Computing: Easy as 1-2D-3DOur Fluent Path to Spatial Computing: Easy as 1-2D-3D
Our Fluent Path to Spatial Computing: Easy as 1-2D-3D
 
Fluent Design System inside of Microsoft: Office
Fluent Design System inside of Microsoft: OfficeFluent Design System inside of Microsoft: Office
Fluent Design System inside of Microsoft: Office
 
Building powerful desktop and MR applications with new windowing apis
Building powerful desktop and MR applications with new windowing apisBuilding powerful desktop and MR applications with new windowing apis
Building powerful desktop and MR applications with new windowing apis
 
Creating Innovative Experiences for Fluent Design using the Visual Layer
Creating Innovative Experiences for Fluent Design using the Visual LayerCreating Innovative Experiences for Fluent Design using the Visual Layer
Creating Innovative Experiences for Fluent Design using the Visual Layer
 
Rapidly Construct LOB Applications with UWP and Visual Studio 2017
Rapidly Construct LOB Applications with UWP and Visual Studio 2017Rapidly Construct LOB Applications with UWP and Visual Studio 2017
Rapidly Construct LOB Applications with UWP and Visual Studio 2017
 
Modernizing Desktop Apps on Windows 10
Modernizing Desktop Apps on Windows 10Modernizing Desktop Apps on Windows 10
Modernizing Desktop Apps on Windows 10
 
How Simplygon helped Remix become platform independent
How Simplygon helped Remix become platform independentHow Simplygon helped Remix become platform independent
How Simplygon helped Remix become platform independent
 
Harnessing the Power of AI with Windows Ink
Harnessing the Power of AI with Windows InkHarnessing the Power of AI with Windows Ink
Harnessing the Power of AI with Windows Ink
 
Technical deep dive into creating the “Solutions Showcase for Mixed Reality” ...
Technical deep dive into creating the “Solutions Showcase for Mixed Reality” ...Technical deep dive into creating the “Solutions Showcase for Mixed Reality” ...
Technical deep dive into creating the “Solutions Showcase for Mixed Reality” ...
 
Developing for Sets on Windows 10
Developing for Sets on Windows 10Developing for Sets on Windows 10
Developing for Sets on Windows 10
 
Data-Driven and User-Centric: Improving enterprise productivity and engagemen...
Data-Driven and User-Centric: Improving enterprise productivity and engagemen...Data-Driven and User-Centric: Improving enterprise productivity and engagemen...
Data-Driven and User-Centric: Improving enterprise productivity and engagemen...
 
Drive user reengagement across all your Windows, Android, and iOS with Micros...
Drive user reengagement across all your Windows, Android, and iOS with Micros...Drive user reengagement across all your Windows, Android, and iOS with Micros...
Drive user reengagement across all your Windows, Android, and iOS with Micros...
 
Fluent Design: Evolving our Design System
Fluent Design: Evolving our Design SystemFluent Design: Evolving our Design System
Fluent Design: Evolving our Design System
 
Seizing the Mixed Reality Revolution – A past, present and future Mixed Reali...
Seizing the Mixed Reality Revolution – A past, present and future Mixed Reali...Seizing the Mixed Reality Revolution – A past, present and future Mixed Reali...
Seizing the Mixed Reality Revolution – A past, present and future Mixed Reali...
 
Windows 10 on ARM for developers
Windows 10 on ARM for developersWindows 10 on ARM for developers
Windows 10 on ARM for developers
 
Building Mixed reality with the new capabilities in Unity
Building Mixed reality with the new capabilities in UnityBuilding Mixed reality with the new capabilities in Unity
Building Mixed reality with the new capabilities in Unity
 
Set up a windows dev environment that feels like $HOME
Set up a windows dev environment that feels like $HOMESet up a windows dev environment that feels like $HOME
Set up a windows dev environment that feels like $HOME
 
Holograms for trade education, built for students, by students with Immersive...
Holograms for trade education, built for students, by students with Immersive...Holograms for trade education, built for students, by students with Immersive...
Holograms for trade education, built for students, by students with Immersive...
 
Designing Inclusive Experiences to Maximize Reach and Satisfaction
Designing Inclusive Experiences to Maximize Reach and Satisfaction Designing Inclusive Experiences to Maximize Reach and Satisfaction
Designing Inclusive Experiences to Maximize Reach and Satisfaction
 
Cboard: A Progressive Web App for Everyone
Cboard: A Progressive Web App for EveryoneCboard: A Progressive Web App for Everyone
Cboard: A Progressive Web App for Everyone
 

Kürzlich hochgeladen

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 

Kürzlich hochgeladen (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

Modernizing Twitter for Windows as a Progressive Web App

  • 1.
  • 3. 3 1 2 3 4 5 Journey to PWA Building Twitter for Devices Building Twitter for Windows Challenges / Lessons Thinking ahead Agenda
  • 5. 5 Section Back in the day ~50% mobile engineers, 50% Desktop Engineers Responsible for several code bases and Some(Scala) 4 test infrastructures spanning Ruby, Scala, and JS ~ 1 day to get new contributors running locally Incremental compiles ~1min, clean builds ~30mins 2015 2016 2017 2018 Goal: Keep the site chugging
  • 6. 6 Section Responsive Web Setup time for a new engineer ~5 minutes See changes in < 10 seconds Consistent design with other Twitter properties Modular components and organization Uses same APIs as Android/iOS clients 2015 2016 2017 2018 Goal: Prototype + Launch something to replace Twitter Mobile, Logged In
  • 7. 7 Section Progressive Web App (PWA) 100% “StarWeb” (get it? *Web) Help create APIs that were previously desktop only Flux —> Redux, reorganize code as we move from prototype to production Leverage new Web APIs to create a rich, retentive experience 2015 2016 2017 2018 Goal: Create a full-featured, fast mobile Twitter experience
  • 8. 8 Section Twitter PWA Launch - April ‘17 Faster Universal availability Lighter 2 <600 KB to add to home screen Engaging 3 Push notifications, data saver, explore tab 1
  • 9. 9 Section Client strategy at Twitter User: Common interface that makes Twitter feel familiar on any device. Over 60% of our users on the PWA use Twitter on more than 1 client Developer: Fewer surfaces to update, focus on what we are good at 2015 2016 2017 2018 Goal: deliver a feature rich, regularly updated experience
  • 10. 10 Section No client left behind Bookmarks came to the PWA first — quicker to build and release from an engineering perspective Since our PWA has Bookmarks, so does Twitter for Windows now!
  • 12. 12 Section Make one app that provides a progressively enhanced experience to all users
  • 13. 13 Section APPXs, APKs, and Kai, Oh My! (2018) Goal: Extend the reach and impact of the PWA Add to home screen + push notifications once installed help increase retention Be the place users can share what's happening How do you distribute a website? Basic perception issue of a PWA.
  • 14. 14 Section APPXs, APKs, and Kai, Oh My! (2018) Goal: Extend the reach and impact of the PWA
  • 15. 15 Section APPXs, APKs, and Kai, Oh My! (2018) Goal: Extend the reach and impact of the PWA
  • 17. 17 Section For many people, a native app is still the right experience
  • 18. 18 Building Twitter for all Devices
  • 19. Body level two Section MOBILE Building for Windows users Over 70% of people who use Twitter on Windows are using it on a desktop device How do you make something work for well for both experiences? Lightweight Performant Fast Immersive Complementary Convenient 19 DESKTOP
  • 20. 20 Section An app alone does not a PWA make
  • 21. 21 Parameters of an App Device Data Accessibility Layout Modals / Dialogs Navigation Modality Hover / press Presentation of menus Keyboard Supplements Installed / Wrapped Locality Network conditions Internationalization RTL A11Y
  • 22. 22
  • 23. 23 Parameters of an App Device Data Accessibility Layout Modals / Dialogs Navigation Modality Hover / press Presentation of menus Keyboard Supplements Installed / Wrapped Locality Network conditions Internationalization RTL A11Y
  • 24. Body level two 24 Section Body level two 24 Parameters in Practice • Flexible Layouts • Master / Detail • Sidebar Layout • Modals • Dropdowns vs Sheets • Network cues for live engagements / video streams / autoplay • Dynamic bundling, getting the right experience to the right user • Enter to send DMs • Keyboard shortcuts to Navigate
  • 30. 30 Making a Modal import ModalRoute from './components/ModalRoute'; <ModalRoute component={MediaDetailScreen} exact key="mediadetail" modalSize="maximized" path="/:screenName/status/:statusId/:mediaType/:index" /> import { Route } from 'react-router-dom'; <Route component={MediaDetailScreen} exact path="/:screenName/status/:statusId/:mediaType/:index" />
  • 32. 32 Section Creating the Windows App PWABuilder.com Changed logos Edited version info Uploaded + Submitted Integration testing VirtualBox + VM, Charles Proxy to https://localhost (with hosts file change) Dev Tools Preview Edition Manually install/sideload to debug
  • 33. 33 Section Windows Insiders Beta program Why? Learned about user expectations Ability to communicate with users across countries and languages Beta feedback (from Tweets, Feedback Hub, Reviews) Paste Images into Compose Share to Twitter Night mode Streaming / Refresh Timeline support Screen reader support was good!
  • 34. 34 Section Big-P PWA Now that we’ve provided the basic features, we can focus on building integrated experiences into Windows (or any other native platforms) Current Windows APIs PasswordVault Share Integration Notifications Pinning Jump Links Store reviews / Feedback Timeline
  • 36. 36 Share Integration <Applications> <Application Id="Twitter" StartPage="https://mobile.twitter.com/"> <Extensions> <uap:Extension Category="windows.shareTarget"> <uap:ShareTarget> <uap:SupportedFileTypes> <uap:FileType>.jpg</uap:FileType> <uap:FileType>.jpeg</uap:FileType> <uap:FileType>.png</uap:FileType> <uap:FileType>.gif</uap:FileType> </uap:SupportedFileTypes> <uap:DataFormat>Text</uap:DataFormat> <uap:DataFormat>Bitmap</uap:DataFormat> <uap:DataFormat>WebLink</uap:DataFormat> </uap:ShareTarget> </uap:Extension> </Extensions> </Application> </Applications> appxmanifest.xml
  • 37. 37 Share Integration init.js / Core Path // This must not be deferred so that it can receive the initial 'activated' event in time window.Windows.UI.WebUI.WebUIApplication.addEventListener( 'activated', e => microsoftInterfaceLoader().then(microsoftInterface => { microsoftInterface.handleActivatedEventFactory(e); }), false ); // Without this, the app will first refresh to the start path before every activate event window.MSApp.pageHandlesAllApplicationActivations(true);
  • 38. 38 Share Integration microsoftInterface/handleActivatedEvent.js 1. Handle activated Event 2. Gather all data from share event 3. Do whatever we are doing (compose a tweet) 4. Callback to close the window / say we are done
  • 39. 39 Share Integration 1. Handle Activate event export const handleActivatedEvent = e => { const ActivationKind = window.Windows.ApplicationModel.Activation.ActivationKind; if (e.kind === ActivationKind.shareTarget) { return handleShareEvent(e); } else { // You might handle other types of launches here: notifications, tile taps, etc. } };
  • 40. 40 Share Integration 2. Gather all data from share event const handleShareEventText = event => { const StandardDataFormats = window.Windows.ApplicationModel.DataTransfer.StandardDataFormats; const shareData = e.shareOperation.data; const { title, description } = shareData.properties; if (shareData.contains(StandardDataFormats.text)) { shareData.getTextAsync().then(text => sendComposeStateAndSetReturn( { tweetText: `${title}n${description}n${text}`, }, event ); } }
  • 41. 41 Share Integration 3. Do the thing 4. Callback to close the window / say we are done const sendComposeStateAndSetReturn = (state, event) => { browserHistory.push({ pathname: '/compose/tweet', state }); }; export const shareCompletedCallback = () => { e.shareOperation.reportCompleted(); };
  • 42. 42 Section Progressive doesn’t stop at Web APIs; extends to native APIs as well
  • 43. 43 Section Future opportunities MS API is massive, lots of cool opportunities Pen to compose a tweet Cortana voice commands IoT Clicker to Tweet Proximity detection to suggest event hashtags Image Recognition to propose captions ...or to read uncaptioned images 2015 2016 2017 Beyond!2018
  • 44. 44 Section Challenges • Tradeoff of feature set • We had to give up some features in the short-term to build a consistent experience in the long-term • Data saver, Bookmarks, Live Engagements + more that were on the PWA first
  • 45. 45 Section Challenges • Need a way to convey updates since we're not updating in the store • Live Tile Updates + ServiceWorkers are hard • Coordinated code launches can be tricky (e.g. jump / share) • Requires feature gating things on the site
  • 46. 46 Takeaways Right Tool Make an app that suits your team and business Identify Paramaters Think of the user experience as a parameter into you app Big-P PWAs Create an awesome base experience, and adapt to as many params as you can (including native)
  • 47. 47 Member name Deck title Member name Member name Member name Member name Deck title X Member name Meet the rest of the team!
  • 49.