SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Picking Dates @Airbnb
MAJA WICHROWSKA / 2016-08-16
A Journey Through Time
Picking Dates @Airbnb
MAJA WICHROWSKA / 1471305600
The Reason I Drink
• Tenure: Almost 2 years
• Team: Web Infrastructure
• Fun Fact: Once saw a live Potter Puppet Pals Show when they
opened for the Wizard Rock band Harry and the Potters at Slims.
• Responsibilities: De Facto owner of all things date related on the
frontend of Airbnb
Maja Wichrowska
Mostly Frontend Engineer
airbnb.com
airbnb.com/s
~5 years ago
• Small Team: ~15 engineers
• Building Fast: More important to get something out there then it
is to engineer it perfectly
• Mission-Critical Component: If you can't select dates on the
site, you can't really book
• We'll Fix It Later: Make this good later when everything is no
longer on fire.
Airbnb:
The Startup
2011
Out of the box solution
~ 4 years ago
• Medium team: ~30 engineers
• Established Product: People actively use Airbnb
• Growing Rapidly: Scale is the biggest issue on everyone's mind
Airbnb:
The Small Company
2012
FakeQueryUi
/*
* At the moment (ha), moment's kind of a pain wrt Ender (it detects Ender,
* does not attach to window, and then breaks all of its own i18n files). It
* also lacks some necessary data in the i18n files (specifically, what day
* the locale starts its weeks on). For now use this shim, but don't
* use it anywhere outside of the Datepicker module or it'll be impossible to
* ever kill it down the line someday.
*/
FakeQueryUi
/*
* Horrifying Templating DSL
* -------------------------
*
* Lalala, don't mind the roll-your-own templating DSL, it is tres horrible
* but slightly less horrible than mashing strings together. Is it worth
* making the datepicker have a Handlebars dependency and doing things
* properly? I don't know!
*/
function horror() {
FakeQueryUi
/*
* OH GOD I'M SO SORRY
*
* Some horrible templating. If you ever have to touch this, I will buy you
* two beers and a tequila shot.
*
* Love,
* [redacted]
*/
FakeQueryUi
~1 year ago
• Large team: ~200 engineers
• Time/Resources for Technical Debt: The goal now is to build a
sustainable architecture for the future
• Frontend Alignment: We know what technologies we're
investing in (Hint: It's React)
• Hacks aren't cutting it anymore: The date picker keeps
breaking in new and fascinating ways
Airbnb:
The Corporate Behemoth
The Relatively Large Company
2015
Australia Brazil
One Particularly Excitable New Hire
Literally chose #webinfra after talking with the then-manager about
building a mobile-friendly, easily internationalized datepicker
Maja Wichrowska
Particularly Excitable New Hire
“'Datepicker redesign' are the two best words in the English language"
Redesign
Totally Smooth Launch
Also known as that time I was writing a postmortem every week for five weeks
Why Date Formats Matter
Or my personal favorite new date picker related bug
• Rails I18n vs. MomentJS's 'L' format: The same in some locales, but not all locales
• Localized dates in URLs: This is a very bad idea
• No dates search returns all results: If you test data has no availability, the search page looks successful
Standardize your dates!
YYYY-MM-DD
1471305600
(i.e. today)
• 3 fully-controlled main components: <DateRangePicker/
>, <SingleDatePicker/>, <DayPicker/>
• Easily internationalizable: Integrates with moment locales, takes
in props to localize month titles, accessibility text
• Cross-browser compatible: Has been tested in IE9/10/11 and
Edge, Safari, Firefox, Chrome, Mobile Safari on iPads and iPhones,
and Chrome on Android devices
• Utility classes for date conversion and comparison: Includes
built in functions for converting to and from moment objects to
strings as well as to easily compare moment date objects
• Customizable props and styles: Ideal for conforming the
component to whatever design and device you are working with
The New
Datepicker
2016
github.com/airbnb/react-dates
Thank you!
Picking Dates @Airbnb: A Journey Through Time

Weitere ähnliche Inhalte

Ähnlich wie Picking Dates @Airbnb: A Journey Through Time

Being With Rails App For 3 Years
Being With Rails App For 3 YearsBeing With Rails App For 3 Years
Being With Rails App For 3 Yearsdeeeki
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile WebC4Media
 
Headless CMS for Digital Agencies - Case Study by Andy Thompson
Headless CMS for Digital Agencies - Case Study by Andy ThompsonHeadless CMS for Digital Agencies - Case Study by Andy Thompson
Headless CMS for Digital Agencies - Case Study by Andy ThompsonKentico Software
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022 Michael Yagudaev
 
Moore vs. May - everything is faster and better: we can fix that
Moore vs. May - everything is faster and better: we can fix thatMoore vs. May - everything is faster and better: we can fix that
Moore vs. May - everything is faster and better: we can fix thatChristian Heilmann
 
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...Domingo Suarez Torres
 
Developing webapp using Polymer : is it ready for production? or not?
Developing webapp using Polymer : is it ready for production? or not?Developing webapp using Polymer : is it ready for production? or not?
Developing webapp using Polymer : is it ready for production? or not?Jeongkyu Shin
 
Angular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entrepriseAngular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entrepriseLINAGORA
 
Devoxx France - Web Components, Polymer et Material Design
Devoxx France -  Web Components, Polymer et Material DesignDevoxx France -  Web Components, Polymer et Material Design
Devoxx France - Web Components, Polymer et Material DesignHoracio Gonzalez
 
Super lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanSuper lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanDrew Malone
 
Untangling the web week1
Untangling the web week1Untangling the web week1
Untangling the web week1Derek Jacoby
 
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...Daniel Bryant
 
Salvatore Laisa - Da Angular a React - Un viaggio inaspettato
Salvatore Laisa - Da Angular a React - Un viaggio inaspettatoSalvatore Laisa - Da Angular a React - Un viaggio inaspettato
Salvatore Laisa - Da Angular a React - Un viaggio inaspettatoCodemotion
 
Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011Brian LeRoux
 
A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...Christian Heilmann
 
Stabilising a large ibm connections environment
Stabilising a large ibm connections environmentStabilising a large ibm connections environment
Stabilising a large ibm connections environmentMartijn de Jong
 
Diving into SngularJS
Diving into SngularJSDiving into SngularJS
Diving into SngularJSfrancisspor
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time rebootKentaro Goto
 

Ähnlich wie Picking Dates @Airbnb: A Journey Through Time (20)

Being With Rails App For 3 Years
Being With Rails App For 3 YearsBeing With Rails App For 3 Years
Being With Rails App For 3 Years
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile Web
 
Headless CMS for Digital Agencies - Case Study by Andy Thompson
Headless CMS for Digital Agencies - Case Study by Andy ThompsonHeadless CMS for Digital Agencies - Case Study by Andy Thompson
Headless CMS for Digital Agencies - Case Study by Andy Thompson
 
Prototyping like it is 2022
Prototyping like it is 2022 Prototyping like it is 2022
Prototyping like it is 2022
 
Moore vs. May - everything is faster and better: we can fix that
Moore vs. May - everything is faster and better: we can fix thatMoore vs. May - everything is faster and better: we can fix that
Moore vs. May - everything is faster and better: we can fix that
 
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...Groovy & Grails eXchange 2012 - Building an  e-commerce business with gr8 tec...
Groovy & Grails eXchange 2012 - Building an e-commerce business with gr8 tec...
 
Developing webapp using Polymer : is it ready for production? or not?
Developing webapp using Polymer : is it ready for production? or not?Developing webapp using Polymer : is it ready for production? or not?
Developing webapp using Polymer : is it ready for production? or not?
 
Angular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entrepriseAngular v2 et plus : le futur du développement d'applications en entreprise
Angular v2 et plus : le futur du développement d'applications en entreprise
 
Forensic Theming - DrupalCon London
Forensic Theming - DrupalCon LondonForensic Theming - DrupalCon London
Forensic Theming - DrupalCon London
 
Devoxx France - Web Components, Polymer et Material Design
Devoxx France -  Web Components, Polymer et Material DesignDevoxx France -  Web Components, Polymer et Material Design
Devoxx France - Web Components, Polymer et Material Design
 
Open data for good
Open data for goodOpen data for good
Open data for good
 
Super lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanSuper lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik Mukelyan
 
Untangling the web week1
Untangling the web week1Untangling the web week1
Untangling the web week1
 
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
Codemotion Rome 2018 "Continuous Delivery with Containers: The Good, the Bad ...
 
Salvatore Laisa - Da Angular a React - Un viaggio inaspettato
Salvatore Laisa - Da Angular a React - Un viaggio inaspettatoSalvatore Laisa - Da Angular a React - Un viaggio inaspettato
Salvatore Laisa - Da Angular a React - Un viaggio inaspettato
 
Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011Nitobi/PhoneGap at Bootup 2011
Nitobi/PhoneGap at Bootup 2011
 
A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...A call to JS Developers - Let’s stop trying to impress each other and start b...
A call to JS Developers - Let’s stop trying to impress each other and start b...
 
Stabilising a large ibm connections environment
Stabilising a large ibm connections environmentStabilising a large ibm connections environment
Stabilising a large ibm connections environment
 
Diving into SngularJS
Diving into SngularJSDiving into SngularJS
Diving into SngularJS
 
Ruby in office time reboot
Ruby in office time rebootRuby in office time reboot
Ruby in office time reboot
 

Kürzlich hochgeladen

GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 

Kürzlich hochgeladen (20)

GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 

Picking Dates @Airbnb: A Journey Through Time

  • 1. Picking Dates @Airbnb MAJA WICHROWSKA / 2016-08-16 A Journey Through Time
  • 2. Picking Dates @Airbnb MAJA WICHROWSKA / 1471305600 The Reason I Drink
  • 3. • Tenure: Almost 2 years • Team: Web Infrastructure • Fun Fact: Once saw a live Potter Puppet Pals Show when they opened for the Wizard Rock band Harry and the Potters at Slims. • Responsibilities: De Facto owner of all things date related on the frontend of Airbnb Maja Wichrowska Mostly Frontend Engineer
  • 6. • Small Team: ~15 engineers • Building Fast: More important to get something out there then it is to engineer it perfectly • Mission-Critical Component: If you can't select dates on the site, you can't really book • We'll Fix It Later: Make this good later when everything is no longer on fire. Airbnb: The Startup 2011
  • 7. Out of the box solution
  • 8. ~ 4 years ago
  • 9. • Medium team: ~30 engineers • Established Product: People actively use Airbnb • Growing Rapidly: Scale is the biggest issue on everyone's mind Airbnb: The Small Company 2012
  • 10. FakeQueryUi /* * At the moment (ha), moment's kind of a pain wrt Ender (it detects Ender, * does not attach to window, and then breaks all of its own i18n files). It * also lacks some necessary data in the i18n files (specifically, what day * the locale starts its weeks on). For now use this shim, but don't * use it anywhere outside of the Datepicker module or it'll be impossible to * ever kill it down the line someday. */
  • 11. FakeQueryUi /* * Horrifying Templating DSL * ------------------------- * * Lalala, don't mind the roll-your-own templating DSL, it is tres horrible * but slightly less horrible than mashing strings together. Is it worth * making the datepicker have a Handlebars dependency and doing things * properly? I don't know! */ function horror() {
  • 12. FakeQueryUi /* * OH GOD I'M SO SORRY * * Some horrible templating. If you ever have to touch this, I will buy you * two beers and a tequila shot. * * Love, * [redacted] */
  • 15. • Large team: ~200 engineers • Time/Resources for Technical Debt: The goal now is to build a sustainable architecture for the future • Frontend Alignment: We know what technologies we're investing in (Hint: It's React) • Hacks aren't cutting it anymore: The date picker keeps breaking in new and fascinating ways Airbnb: The Corporate Behemoth The Relatively Large Company 2015
  • 17. One Particularly Excitable New Hire Literally chose #webinfra after talking with the then-manager about building a mobile-friendly, easily internationalized datepicker Maja Wichrowska Particularly Excitable New Hire
  • 18. “'Datepicker redesign' are the two best words in the English language" Redesign
  • 19. Totally Smooth Launch Also known as that time I was writing a postmortem every week for five weeks
  • 20. Why Date Formats Matter Or my personal favorite new date picker related bug • Rails I18n vs. MomentJS's 'L' format: The same in some locales, but not all locales • Localized dates in URLs: This is a very bad idea • No dates search returns all results: If you test data has no availability, the search page looks successful Standardize your dates! YYYY-MM-DD
  • 21.
  • 23. • 3 fully-controlled main components: <DateRangePicker/ >, <SingleDatePicker/>, <DayPicker/> • Easily internationalizable: Integrates with moment locales, takes in props to localize month titles, accessibility text • Cross-browser compatible: Has been tested in IE9/10/11 and Edge, Safari, Firefox, Chrome, Mobile Safari on iPads and iPhones, and Chrome on Android devices • Utility classes for date conversion and comparison: Includes built in functions for converting to and from moment objects to strings as well as to easily compare moment date objects • Customizable props and styles: Ideal for conforming the component to whatever design and device you are working with The New Datepicker 2016
  • 24.