MessageKit Roadmap 馃殺

Created on 14 Aug 2017  路  21Comments  路  Source: MessageKit/MessageKit

MessageKit Roadmap

My thoughts for an initial MessageKit roadmap.

This is not set in stone and open for discussion:

  • Are there any additional features that you would like to see and are not listed here?
  • Is there something that JSQMessagesViewController can do that is not represented here?
  • Do you think any of the priorities should be changed?

Please comment below 馃槂

v0.5.0

  • [x] Support attributedText(NSAttributedString) for MessageLabel
  • [x] Add delegate methods to detect taps in cellTopLabel / cellBottomLabel
  • [x] Allow user to adjust the avatar position in the cell
  • [x] Basic data detectors for MessageLabel

    • [x] Address

    • [x] Phone Number

    • [x] Date

    • [x] URL

v0.6.0

  • [x] Make MessageInputBar far more flexible and customizable

v0.7.0

  • [x] Message container styling. ie) tailed bubbles, outlined bubbles, etc
  • [x] Review API surrounding MessageHeaderView / MessageFooterView
  • [x] Reviewing everything regarding xibs and cell reuse
  • [x] Reviewing existing defaults
  • [x] Consider date utilities for creating labels

v0.8.0

  • [x] Support photo messages
  • [x] Support video messages

    • [x] Support location messages

Backlog: Undetermined ETA

  • [ ] Testing #96
  • [ ] Add more data detectors #71

    • [ ] Flight Number

    • [ ] Lookup Suggestion

    • [ ] Shipment Tracking Number

    • [ ] Hashtag

    • [ ] Mention

    • [ ] Custom Regex

    • [ ] Email

  • [x] Allow DataDetectors to have highlighted state when selected #143
  • [ ] Add MessageTopCell and MessageBottomCell
  • [ ] Add localization (We can port a lot of this from the old library)
  • [x] Add typing in progress view #191
  • [ ] Add load more messages view
  • [ ] Add jump to bottom view
  • [ ] Pagination helpers?
  • [x] Support audio messages #149
  • [ ] Grouping recent messages by the same user into a single bubble
  • [ ] Expose accessory view when swiping left on MessagesCollectionView
  • [ ] Springy message bubbles
  • [ ] Copy menu for long press gesture on message bubbles #142
  • [x] Support custom message types
  • [ ] Anything we can do for accessibility
  • [ ] Possibly rewrite TTTAttributedLabel for the MessageLabel
  • [ ] Add message reactions (thumb up emoji etc)
  • [x] Preserve content offset when showing keyboard #91
  • [x] Ability to have cellTopLabel and cellBottomLabel inside of the messageContainerView #121
  • [ ] Have a dumber superclass of MessagesViewController that doesn't require any MessageKit protocols
  • [ ] Remove constraint of 1 message to 1 section ratio
  • [ ] File messages/previews
  • [x] URL previews #185
  • [x] Animation for setting location message snapshot #144
  • [x] Support emoji messages #182
  • [ ] Support Message status (queued, sent, received, failed, etc.)
discussion

Most helpful comment

Could we add message reactions (thumb up emoji etc) to the roadmap? ;)

All 21 comments

This seems like a very healthy roadmap! Remember though: semantic versioning is perfectly happy having 0.10.x and 0.11.x, so don鈥檛 feel trapped to go from 0.9.x straight to 1.0.0

Separately, when are you scheduling adapting to Swift 4? Or are you already compatible?

Other idea: UIView tintColor or a simple themeing engine?

I would suggest adding a custom message type support in v0.8.0 More allong the lines of making a protocol for message types that way anything can be supported but "we" (the library) has everything it needs to render the cell and knows what, if anything is to happen when it is selected. Then adding Photo and Video should be 馃嵃 cake.

v0.8.0

  • Support custom messages
  • Support photo messages
  • Support video messages

I don't think we should even worry about this - Springy message bubbles only because it makes things more complicated. Unless some one knows how to do it reliably. It was always an experimental feature in JSQ. I would also like to work on performance before we went down that route. It's a non essential nice to have that may complicate development later IMO(in my opinion).

@MacMeDan Performance is always on the table. I was thinking of dedicating a version solely to performance but IMO this needs to be addressed constantly.

As for the custom messages, supporting video and photo messages is probably enough work for a single version. They should actually be independent of each other. I think custom messages will rely more on subclassing. I'll take a look at a custom message type before adding any media messages.

Springy bubbles are very low priority. I just added them because I want to address all possible features.

@fbartho Swift 4 conversion is most likely at the last minute, as discussed on Slack. I'm not sure what you were thinking for a theming engine.

As for the custom messages, supporting video and photo messages is probably enough work for a single version. They should actually be independent of each other. I think custom messages will rely more on subclassing. I'll take a look at a custom message type before adding any media messages.

I see this as more we implement the MessageProtocol to allow for any of these. There will be obvious ones we will want to support full featured.

For v0.5.0 it seems last thing to be done is:

Basic data detectors for MessageLabel ... (with a list of data types)

If no one is working on this (https://github.com/MessageKit/MessageKit/issues/71?), I'd be happy to start.

Could we add message reactions (thumb up emoji etc) to the roadmap? ;)

What a great idea @hyouuu -- I can't believe none of us had suggested that sooner!

@hyouuu Done 馃帀

Such an awesome & open community!!

I don't know in which version we would add these features but here are some cents from my side:

  1. Show/Hide user avatar, name, and short-handed message date/time.
  2. Search in a Chat
  3. STAR a message
  4. Inline reply to a message
  5. Send audio, Document (PDF, TXT) along with Photo and Video
  6. Show the sent files all together for each of the chats

@hemangshah

Show/Hide user avatar, name, and short-handed message date/time.

I feel like we support hiding the avatar if you return a size of .zero but these all sound reasonable to get in

Send audio, Document (PDF, TXT) along with Photo and Video

I believe the plan is to allow users to eventually create their own cell types, but I don't think we're going to natively start supporting all documents as that'll rapidly get out of hand. What I think we should do is support URLs standalone. It should format much like how tweets/Slack etc all handle it where it extracts the title/logo/metadata etc which would include the file type.

Tapping on it should be handled by the user (so if you want to open it locally you can!)

Show the sent files all together for each of the chats

Feel like this can be done by the client already, given you know all the messages!

@hemangshah Those sound like great features we can definitely think about in the future but may need to be vetted a little. But I really like the direction. I definitely think

Send audio, Document (PDF, TXT) along with Photo and Video
Is much higher on the priority list because of its necessity in many chat applications.

Can we also have WhatsApp style message queued to send, sent, received and read indicators (In Progress, Single tick, Double tick and Colored double tick) to know the status of the message

@hiteshsondhi88 I think some of that is possible for sure but I'm not sure as to how soon we can support it. I was talking about this with a few other MessageKit members recently and we think the message status indicators are better suited to their own cell

Seems we don't keep track of what's changing anymore? ;)

Yeah @hyouuu not really keeping track with this, but a lot of these things are still unimplemented

@hiteshsondhi88 @SD10 I absolutely implemented it by overriding cellBottomLabelAttributedText:

func cellBottomLabelAttributedText(for message: MessageType, at _: IndexPath) -> NSAttributedString? {
    let date: String = "\(self.messageDateFormatter.string(from: message.sentDate)) "
    let label = NSMutableAttributedString(string: date, attributes: [
        NSAttributedStringKey.font: UIFont(name: "Helvetica", size: 12.0)!
    ])
    if let model = message as? MessageCellViewModel, self.isFromCurrentSender(message: message) {
        let attachment = NSTextAttachment()
        attachment.image = model.status.icon
        attachment.bounds = CGRect(x: 0, y: -2.5, width: 15, height: 15)
        label.append(NSAttributedString(attachment: attachment))
    }
    return label
}

Hello,

@SD10 , Can you update this issue? Or is there another place where this information is up to date?

I think the library supports audio messages and typing indicator.
Thanks

Hi, I see that the documentation does not mention PDF or TXT as a message type. I assume this isn't yet available? Are there plans to include this? Thanks.

+1 for message reactions! Since this has launched on many platforms now, it's become more and more used. We've actually had quite a few users request this

Was this page helpful?
0 / 5 - 0 ratings